我们有一块带有ColdFire CPU的嵌入式主板,运行μC-OS / II。当嵌入式程序崩溃时,CPU会将整个RAM转储(或复制)到嵌入式闪存中。然后,我们有一个过程来检索RAM内容(转储到闪存中)到一个简单的.bin文件中。 当我们想要调试时,我们使用GDB(m68k-elf-gdb.exe)和.elf文件。例如:
$ gdb our_elf_file
(gdb) print some_var
Cannot access memory at address 0x30617890
(gdb) ptype some_var
type = unsigned int
(gdb)
这允许我们知道变量的地址。然后,我们使用先前给定的地址执行简单的偏移操作,并在特定位置读取RAM转储。 例如,如果我们想要读取位于 0x30617890 的 some_var ,我们知道转储表示从 0x20000000 开始的RAM内容。之后,我们在偏移量处读取.bin文件的4个字节( 0x30617890 - 0x20000000 )。 (有时我们也将objdump(m68k-elf-objdump.exe)用于其他目的)。
我对这类东西全新,所以也许我的问题很愚蠢,但是,有没有办法告诉gdb RAM内容在哪里?