GDB:劣质流程中的断点

时间:2016-04-04 14:13:17

标签: gdb

我有一个需要调试的网络软件。它在多个地方分叉,我需要调试处理一个特定请求的一个特定函数。

有没有办法设置一个全局断点,即使它处于劣质流程中也会被捕获?

我无法使用follow-fork-mode child,因为这将遵循第一个请求,而不是我需要调试的请求。

1 个答案:

答案 0 :(得分:2)

实现此目的的一种方法是让gdb保持附加到所有进程。然后你会设置你的断点并像往常一样运行程序;断点将在碰到该位置的任何子进程中触发。您可以使用断点条件来尝试减少命中数。

要将gdb置于多劣模式,我使用:

set detach-on-fork off
set non-stop on
set pagination off

根据您的gdb版本,您可能还需要set target-async on

这种模式可能有点特殊。例如,当一个线程停止时,另一个线程继续运行。此外,报告了断点停止,但并不总是显而易见;我认为gdb没有立即切换到停止线程(这可能在gdb git中有所改变,我忘了)。