2014-02-14 37 views
1

正如我的标题所说,我在调试多进程程序的源代码时遇到了麻烦。 这是如下: 1.该程序被编写为守护进程,所以父/主进程是守护进程。 2.它分派了大量的子进程,大约5到7或8个进程。如何在eclipse中附加一个进程来调试多进程程序

我使用eclipse来开发我的代码,并且我想从eclipse调试我的程序。 据我所知,调试器不知道子进程的断点。

因此,我想知道,是否有任何选项可用来调试我的程序,包括子进程? 在eclipse中是否有任何设置可以附加子pid,以便调试器切换到该子进程?

如假设孩子4522,4562,5462。然后在调试期间,我可以附加调试器到5462吗?

在此先感谢。

+0

有点相关。在几年前为Domino服务器编写插件时,我完全不了解类似情况的解决方案。最终,我最终将fork代码临时更改为double fork和execvp一个配置为启动gdb的xterm,并附加到我在初始fork上sl child的子进程。这是可怕的,但它非常有效地捕捉深藏在加载项中的故障。我想现在eclipse会有一个gdb的配置,在这个时候启用调试子进程(那是12年前)。 – WhozCraig

+0

@WhozCraig感谢您的信息,是的,日食Kepler现在支持调试子进程,但是目前正如我试过的那样,对于一个孩子是可能的。因为我的程序是守护进程,所以我认为这也是对eclipse的限制调试,但不是100%确定。 – pmverma

回答

3

请参阅gdb follow-fork-mode设置。使用此选项,您可以控制进程分叉时的gdb行为。你可以从gdb控制台设置它

gdb> set follow-fork-mode child 

所以在fork中gdb会切换到子进程。这里另一个可能的值是遵循parent。如果你想从一个GDB调试会话他们两个,使用此选项:

gdb> set detach-on-fork off 

这将使调试器中打开一个新的劣子进程。稍后,您可以像这样在它们之间切换:

gdb> inferior 1 

另一种方法是从另一个gdb会话中附加一个新进程。

更新:我总是从控制台使用gdb,所以我不知道eclipse中是否有任何gdb设置,也许别人会用gui选项来帮助你。如果你在eclipse中有一个gdb控制台,你可以在这里尝试这个命令。

更新2:请参阅this link关于gdb fork选项。

+0

感谢您的gdb命令,我会尝试发布。 – pmverma

相关问题