使用gdb在xv6上调试用户代码

Nat*_*man 8 gdb qemu xv6

我正在做一个基于xv6的操作系统类,我编写了一个需要在其上运行的程序.

我知道我可以调试内核代码,make qemu-gdb但我不确定如何调试我自己的用户程序.

可以说我想调试cat,我该怎么做呢?

谢谢

PS是不是有xv6标签?这个问题是否应该在这里?

vpu*_*nte 8

从xv6顶级目录:

  1. 在调试模式下运行模拟器(假设没有X11): make qemu-nox-gdb

  2. 在其他终端只需运行调试器加载内核符号: gdb kernel 这很重要,否则调试器将在内核和用户程序符号之间混淆,例如main()

  3. 从gdb接口运行:(gdb) target remote localhost:26000 其中26000是步骤#1最后报告的TCP端口(这可能会更改).

  4. 加载用户exec (gdb)file user_program

  5. 放置一个断点(gdb) break main 并继续(gdb) continue

  6. 等等...


she*_*ski 5

file cat,break main,continue

半参考运行和调试xv6

  • 当我尝试它时,我需要执行 `file _cat break main continue` 这是因为 _cat 是主机上文件的名称顺便说一句,这是在 gdb 窗口中运行的(所以你已经运行了 make qemu-gdb,然后在另一个窗口中,您已经运行了 gdb 内核)。 (3认同)