怎样用insight 调试跟踪qemu源代码

来源:互联网 发布:nginx 虚拟目录 编辑:程序博客网 时间:2024/06/05 21:46

我在windows端用的cygwin环境来进行操作,首先,启动cygwin,进入insight,选中菜单view中的console项,然后再命令行输入,

 

 

gdb>file qemu.exe

 

通过nm 可以查看到main入口地址,然后在该地址打断点,比如qemu-0.12.3入口地址_main在0x5592e0,用list 查找该地址位于源码具体文件,位置。

gdb>list *0x5592e0

 

Error: no source file for address 0x5592e0

 

发现该地址没有对应的源文件,于是又查找_qemu_main的地址00405d50,

gdb>list *405d50

0x405d50 is in qemu_main (C:/msys/1.0/home/liu/qemu-0.12.3/vl.c:4850).
4845     index++;
4846     return 0;
4847 }
4848 
4849 int main(int argc, char **argv, char **envp)
4850 {
4851     const char *gdbstub_dev = NULL;
4852     uint32_t boot_devices_bitmap = 0;
4853     int i;
4854     int snapshot, linux_boot, net_boot;

 

于是在vl.c:4850 打断点:

 

gdb>b 4850

Note: breakpoint 1 also set at pc 0x405d50.
Breakpoint 3 at 0x405d50: file C:/msys/1.0/home/liu/qemu-0.12.3/vl.c, line 4850.

 

然后设定启动参数:

 

gdb>set args  -L . -m 256 -hda hdc.img -boot -c

最后启动qemu

 

gdb>r

Starting program: /cygdrive/c/program files/qemu/qemu.exe -L . -m 256 -hda hdc.img -boot -c
[New thread 3376.0x914]

Breakpoint 1, qemu_main (argc=9, argv=0x13f4d18, envp=0x0) at C:/msys/1.0/home/liu/qemu-0.12.3/vl.c:4850

这时就会在设定断点处停下来,就可以跟踪源代码了

 

补充:

info b : 查看断点。

info line : 查看当前源文件