2013-10-26 46 views
0

我用C编写了一个shell。在它上运行一些程序时出现了一些问题。如何在gdb中调试shell时在shell上运行程序?正在运行另一个程序的调试程序

+1

在这里发表问题之前,应该做一些努力。 –

回答

1

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

  1. 运行你的shell执行在第1控制台窗口
  2. 打开第二个控制台,找到使用ps命令
  3. 开始gdb在第二个控制台和attach壳已经运行壳的PID号使用它就像PID号这样的:

    :〜$ GDB -q
    (GDB)连接3479
    附加到进程3479

  4. 现在你可以设置断点,并继续shell执行:

    (GDB)b SomeFunction
    (GDB)C
    继续。

从这一点来说,你有2个控制台:

  • 的一个地方你的shell运行
  • 和第二地方gdb运行安装到外壳

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

+0

我不明白你在说什么......多解释一下.. –

+0

@Grijesh Chauhan,我的意思是很难从gdb运行的同一个控制台调试交互式shell,因为gdb本身是交互式的。来自gdb和shell的输出会混淆,并且在调试过程中会遇到困难。 – ks1322

+0

请解释。这是我需要的。 – mohit

相关问题