我在C中编写了一个shell。在运行某些程序时遇到了一些问题。如何在gdb中调试shell时在shell上运行程序?
答案 0 :(得分:1)
首先使用-g
选项编译调试标志,以便与gdb
一起使用。
然后跑。
gdb shellapp
...
run someapps
...
快速阅读How to Debug C Program using gdb in 6 Simple Steps和GDB Tutorial
或者您的意思是run a program in the background?
答案 1 :(得分:1)
您可以通过gdb从另一个控制台附加到已经运行的shell进程。这样你的shell输出不会干扰gdb输出,你可以像往常一样在shell中运行程序。
ps
命令在第二个控制台中启动gdb
,在attach中使用它的pid编号启用shell,如下所示:
:〜$ gdb -q
(gdb)附上3479
附加到流程3479
现在您可以设置断点并继续执行shell:
(gdb)b SomeFunction
(gdb)c
仍在进行中。
从这一点开始,您有2个控制台:
gdb
附加到shell的第二个您可以像往常一样使用shell:在其上运行其他程序或执行其他任何操作。同时,您可以在gdb
内的第二个控制台中观察shell执行情况。关键是这两个进程的输出是相互分离的,如果你只在一个控制台中直接在gdb中运行shell,这是不可能的。