我有一个物理内存转储文件和一个符号文件(vmlinux),我想用 gdb 中的符号文件分析转储文件的内容。例如,要查看物理内存转储时 init_task 的状态:
(gdb) print &init_task
=> show the address of init_task in physical memory dump file, said 0xc0XXXXXX
(gdb) print ((struct task_struct *) 0xc0XXXXXX)->tasks
=> show the content of init_task.tasks in physical memory dump file)
我刚刚尝试了 gdb 命令“restore”和“target core”,都不起作用。“restore”需要在正在运行的进程上使用,“target core”需要在核心文件(ELF 64-bit LSB core file)中作为输入。
(gdb) restore binary physical-memory-dump-file
You can't do that without a process to debug.
(gdb) target core physical-memory-dump-file
"physical-memory-dump-file" is not a core dump: File format not recognized
任何想法?谢谢。
更新1:嗨,帕万,感谢您的提醒;因为我在特殊平台上工作,所以它上面的引导加载程序会将完整的物理内存保存到转储文件中,在内核从恐慌/糟糕重启后。所以物理内存转储文件将与物理内存具有相同的大小,并且可以从它的第一个字节映射到内核中的 0xc000:0000。