我正在做一个基于 xv6 的操作系统类,并且我编写了一个需要在其上运行的程序。
我知道我可以调试内核代码,make qemu-gdb
但我不确定如何调试我自己的用户程序。
假设我想调试cat
,我该怎么做?
谢谢
PS不是有xv6标签吗?这个问题甚至应该去这里吗?
从 xv6 顶级目录:
在调试模式下运行模拟器(假设没有 X11):make qemu-nox-gdb
在其他终端运行调试器加载内核符号:
gdb kernel
这很重要,否则调试器将混淆内核和用户程序符号,例如main()
从 gdb 接口运行:(gdb) target remote localhost:26000
其中 26000 是第 1 步最后报告的 TCP 端口(这可能会改变)。
加载用户 exec(gdb)file user_program
放置断点(gdb) break main
并继续(gdb) continue
ETC...
file cat
, break main
,continue
半参考运行和调试 xv6