我用C写了一个shell。在上面运行一些程序时出现了一些问题。如何在gdb中调试shell时在shell上运行程序?
问问题
571 次
2 回答
1
首先使用-g
选项编译调试标志,用于gdb
.
然后运行。
gdb shellapp
...
run someapps
...
快速阅读如何在 6 个简单步骤和GDB 教程中使用 gdb 调试 C 程序
还是您的意思是在后台运行程序?
于 2013-10-26T07:40:39.137 回答
1
您可以通过 gdb 从另一个控制台附加到已经运行的 shell 进程。这样你的 shell 输出不会干扰 gdb 输出,你可以像往常一样在 shell 中运行程序。
- 在第一个控制台窗口中运行你的 shell 实现
ps
打开第二个控制台并使用命令查找已经运行的 shell 的 pid 号gdb
从第二个控制台开始并使用它的 pid 号附加到 shell,如下所示::~$ gdb -q
(gdb) attach 3479
附加到进程 3479现在您可以设置断点并继续执行 shell:
(gdb) b SomeFunction
(gdb) c
继续。
从这一点开始,您有 2 个控制台:
- 你的 shell 正在运行的那个
- 第二个
gdb
连接到外壳的地方
您可以像往常一样使用 shell:在其上运行其他程序或执行其他任何操作。同时你可以在里面的第二个控制台观察 shell 的执行gdb
。关键是这两个进程的输出是相互分离的,如果您直接在 gdb 中仅在一个控制台中运行 shell,这是不可能的。
于 2013-10-26T07:42:01.003 回答