调试程序运行另一个程序

时间:2013-10-26 07:28:46

标签: c gdb

我在C中编写了一个shell。在运行某些程序时遇到了一些问题。如何在gdb中调试shell时在shell上运行程序?

2 个答案:

答案 0 :(得分:1)

首先使用-g选项编译调试标志,以便与gdb一起使用。

然后跑。

gdb shellapp
...
run someapps
...

快速阅读How to Debug C Program using gdb in 6 Simple StepsGDB Tutorial

或者您的意思是run a program in the background

答案 1 :(得分:1)

您可以通过gdb从另一个控制台附加到已经运行的shell进程。这样你的shell输出不会干扰gdb输出,你可以像往常一样在shell中运行程序。

  1. 在第一个控制台窗口中运行shell的实现
  2. 打开第二个控制台,使用ps命令
  3. 查找已在运行的shell的pid号
  4. 在第二个控制台中启动gdb,在attach中使用它的pid编号启用shell,如下所示:

    :〜$ gdb -q
    (gdb)附上3479
    附加到流程3479

  5. 现在您可以设置断点并继续执行shell:

    (gdb)b SomeFunction
    (gdb)c
    仍在进行中。

  6. 从这一点开始,您有2个控制台:

    • 运行shell的那个
    • gdb附加到shell的第二个

    您可以像往常一样使用shell:在其上运行其他程序或执行其他任何操作。同时,您可以在gdb内的第二个控制台中观察shell执行情况。关键是这两个进程的输出是相互分离的,如果你只在一个控制台中直接在gdb中运行shell,这是不可能的。