使用 GDB 调试多进程项目

Debugging multiprocess project with GDB

我想用GDB调试一个多进程的C++项目,具体想知道有没有办法实现以下

理想的解决方案类似于 Visual Studio 调试器提供的解决方案,如 here 所述。 目前我可以将多个进程附加到一个 GDB 实例,但是只有当前选择的下级进程被执行,而其他进程停止并等待继续命令。

为了能够在后台运行下级,需要发出这个gdb命令

set target-async on

启动之后和 运行任何东西之前。启用此选项后,一个 ca 问题

continue&

(或只是 c&),这会将劣势置于背景中,从而有机会切换到 运行 另一个。

一次阻止所有劣质产品有点困难。没有内置命令。幸运的是 gdb 是可编写脚本的,并且可以将脚本附加到断点。一旦命中断点,就会执行命令。将 inferior ninterrupt 命令放入每个下级的脚本中。从 Python 脚本中执行此操作可能更方便,例如

(gdb) python
>inf = gdb.inferiors()
>for i in inf:
>  gdb.execute("inferior %d" % i.num)
>  gdb.execute("interrupt")