我在C编程新我一直在努力定制根据我的组织需要用C语言编写的开源工具。
IDE:Eclipse中,调试器:GDB,OS:RHEL
该工具在本质上是多进程(主进程执行首次使用fork()的派生几个子进程)在运行时间和他们分享价值。 而在Eclipse调试(使用GDB),我发现,被调试的过程,而其他过程在暂停模式下只运行。 因此,唯一正在运行的进程不能因为其他进程暂停执行其预定任务。
我看到的地方,在GDB使用MI命令“上设置的不停”可能使其他进程运行。 我在下面所示的gdbinit文件中使用的相同的命令:
注:我已经覆盖上述.gdbinit中与另一gdbinit因为.gdbinit是不是让我来调试子进程的调试器主要工艺执行后终止。
但不幸的是调试器停止使用此命令后响应。
请参考下面我使用在gdbinit文件命令:
谈到马不停蹄使Eclipse能够继续当前的过程通常调试。
添加:您可以看到在低于,而其他悬浮只有一个进程正在运行图像。
任何人都可以请帮我按我的要求配置GDB?
提前致谢。
OK @nm:其实,你是对的。 我应该给更多的时间来理解代码的流程。 该工具将首先创建3个进程,然后第三个进程创建5个线程和()不断等待所有子线程终止。
下面的图像中示出顶5线程(以蓝色突出显示)是线程和它们是进程ID的子:17991
前两种方法都旨在启动该工具的基本功能,因此,他们只是迫不及待地想退出(0)。 你可以看到下面。
if (0 != (pid = zbx_fork()))
exit(0);
setsid();
signal(SIGHUP, SIG_IGN);
if (0 != (pid = zbx_fork()))
exit(0);
这是我本来就不是能够介入这些3点的过程的原因。 每当我试图这样做,整个过程主要立即,因此含铅终止,终止所有其他进程。 所以,我才知道,我本来是要“逐步变成”只有线程。 是的,其实我现在可以调试:)
这可能是实现,因为我不得不删除MI命令“设置跟踪叉型的孩子”。 所以,我只是用启用了“自动调试已派生进程”默认“.gdbinit”文件。
谢谢各位的意见。 计算器是学习和分享一个真棒的地方。 :)
文章来源: How to configure GDB in Eclipse such that all prcoesses keep on running including the process being debugged?