首页 > 解决方案 > 使用 GDB 调试多进程项目

问题描述

我想用 GDB 调试一个多进程 C++ 项目,特别是我想知道是否有办法实现以下目标

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

标签: c++debugginggdb

解决方案


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

set target-async on

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

continue&

(或只是c&),这会将劣势发送到后台,从而有机会切换到运行另一个。

一次阻止所有劣势者有点困难。没有内置命令。幸运gdb的是,它是可编写脚本的,并且可以将脚本附加到断点。一旦断点被​​命中,命令就会被执行。在脚本中为每个下级放置inferior n和命令。interrupt从 Python 脚本中执行此操作可能更方便,例如

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

推荐阅读