我们有一个带有 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 内容。之后,我们在偏移量(0x30617890 - 0x20000000)处读取 .bin 文件的 4 个字节。(有时我们还将 objdump (m68k-elf-objdump.exe) 用于其他目的)。
我对这种东西完全陌生,所以也许我的问题很愚蠢,但是,有没有办法告诉 gdb RAM 内容在哪里?