如何在eclipse中附加一个进程来调试多进程程序

时间:2014-02-14 06:54:53

标签: c eclipse multithreading debugging gdb

正如我的标题所说,我在调试源代码时遇到了麻烦,这是一个多进程程序。 具体如下: 1.程序被编写为守护进程,因此父/主进程是一个守护进程。 它分配了许多子进程,大约5到7或8个进程。

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

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

例如,假设子pids为4523,4562,5462。那么在调试期间,我可以将调试器附加到5462吗?

提前致谢。

1 个答案:

答案 0 :(得分: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选项。