我正在做一个基于xv6的操作系统类,我编写了一个需要在其上运行的程序。
我知道我可以使用make qemu-gdb
调试内核代码,但我不确定如何调试我自己的用户程序。
假设我想调试cat
,我该怎么做呢?
由于
P.S。是不是有xv6标签?这个问题是否应该在这里?
答案 0 :(得分:8)
来自xv6顶级目录:
以调试模式运行模拟器(假设没有X11):make qemu-nox-gdb
在其他终端中运行调试器加载内核符号:
gdb kernel
这很重要,否则调试器会在内核和用户程序符号之间混淆,例如main()
从gdb界面运行:(gdb) target remote localhost:26000
其中26000是步骤#1最后报告的TCP端口(可能会更改)。
使用(gdb)file user_program
放置一个断点(gdb) break main
并继续(gdb) continue
等...
答案 1 :(得分:5)
file cat
,break main
,continue