如何配置GDB在Eclipse使得所有prcoesses继续运行,包括这个进程被调试?(How to

2019-10-20 04:26发布

我在C编程新我一直在努力定制根据我的组织需要用C语言编写的开源工具。

IDE:Eclipse中,调试器:GDB,OS:RHEL

该工具在本质上是多进程(主进程执行首次使用fork()的派生几个子进程)在运行时间和他们分享价值。 而在Eclipse调试(使用GDB),我发现,被调试的过程,而其他过程在暂停模式下只运行。 因此,唯一正在运行的进程不能因为其他进程暂停执行其预定任务。

我看到的地方,在GDB使用MI命令“上设置的不停”可能使其他进程运行。 我在下面所示的gdbinit文件中使用的相同的命令:

注:我已经覆盖上述.gdbinit中与另一gdbinit因为.gdbinit是不是让我来调试子进程的调试器主要工艺执行后终止。

但不幸的是调试器停止使用此命令后响应。

请参考下面我使用在gdbinit文件命令:

谈到马不停蹄使Eclipse能够继续当前的过程通常调试。

添加:您可以看到在低于,而其他悬浮只有一个进程正在运行图像。

任何人都可以请帮我按我的要求配置GDB?

提前致谢。

Answer 1:

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?