11

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

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

假设我想调试cat,我该怎么做?

谢谢

PS不是有xv6标签吗?这个问题甚至应该去这里吗?

4

2 回答 2

11

从 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. ETC...

于 2016-09-28T08:36:40.217 回答
5

file cat, break main,continue

半参考运行和调试 xv6

于 2012-05-10T20:28:25.930 回答