检查来自Qemu guest虚拟机的coredump

时间:2019-08-11 15:40:03

标签: gdb qemu coredump osdev backtrace

我在Qemu中使用dump-guest-memory转储了来宾内存,并且正在使用gdb -c core.dump ./kernel检查coredump。这不能很好地工作,因为我只能检查当前的堆栈框架。 GDB没有给出任何警告,我也不十分明白为什么这不起作用。

示例:

Reading symbols from hello...
[New LWP 1]
#0  os::halt () at /home/gonzo/git/includeos/IncludeOS/src/platform/x86_pc/os.cpp:53
53    PER_CPU(os_per_cpu).cycles_hlt += os::Arch::cpu_cycles() - cycles_before;
(gdb) bt
#0  os::halt () at /home/gonzo/git/includeos/IncludeOS/src/platform/x86_pc/os.cpp:53
Backtrace stopped: Cannot access memory at address 0x1ffc88

鉴于Qemu转储了整个内存(我确实这样做了),我只是想尝试一种方法来检查任何ELF的coredumps。 coredump文件的大小足以覆盖来宾内存。

更多信息: 0x1ffc88位于常规内核堆栈中,该堆栈起始于1mb,终止于2mb。 coredump是从OS处于休眠状态时不执行任何操作而来的,因此它处于有效状态,没有任何时髦的事情发生。 coredump应该向我展示从kernel_start一直到os :: halt函数的回溯,就像guest虚拟机内部的backtrace功能一样。 我读了一张幻灯片,其中显示了三种调试来宾的方法(登录,使用GDB和coredumps附加),所以我知道这是一个可行的选择!

0 个答案:

没有答案