基于qemu内建模式调试ucore

调试举例:调试 lab1,跟踪bootmain函数:

(1) 运行 qemu -S -hda ucore.img -monitor stdio

(2) 查看 bootblock.asm 得到 bootmain 函数地址为 0x7d60,并插入断点。

(3) 使用命令 c 连续执行到断点。

(4) 使用 xp 命令进行反汇编。

(5) 使用 s 命令进行单步执行。
运行结果如下:

  1. chy@laptop: ~/lab1$ qemu -S -hda ucore.img -monitor stdio
  2. (qemu) b 0x7d60
  3. insert breakpoint 0x7d60 success!
  4. (qemu) c
  5. working
  6. (qemu)
  7. break:
  8. 0x00007d60: push %ebp
  9. (qemu) xp /10i $pc
  10. 0x00007d60: push %ebp
  11. 0x00007d61: mov %esp,%ebp
  12. 0x00007d63: push %esi
  13. 0x00007d64: push %ebx
  14. 0x00007d65: sub $0x4,%esp
  15. 0x00007d68: mov 0x7da8,%esi
  16. 0x00007d6e: mov $0x0,%ebx
  17. 0x00007d73: movsbl (%esi,%ebx,1),%eax
  18. 0x00007d77: mov %eax,(%esp,1)
  19. 0x00007d7a: call 0x7c6c
  20. (qemu) step
  21. 0x00007d61: mov %esp,%ebp
  22. (qemu) step
  23. 0x00007d63: push %esi