启动 gdb 以连接到多个现有进程(使用 python 脚本!)

Launch gdb to hook onto multiple existing processes (using a python script!)

我正在编写一个 python 脚本来遍历我当前正在执行的进程列表,查找某个用户 运行 的进程,然后 运行 GDB 挂钩到所有这些。

我目前得到了某个用户 运行 所有进程的列表。 (我为此使用了 http://andreinc.net/2010/11/07/how-to-get-the-active-process-list-on-a-linux-machine-using-python/

但是,我终其一生都无法将其与如何启动 gdb 并挂钩到每个 Python 具有单独劣势的那些相提并论。我知道如何使用 Python 脚本启动 gdb,只是没有使用适当的顺序在 gdb 内附加多个进程并为每个进程创建一个劣质进程。

我知道一旦你 运行ning gdb,你可以用 create-inferior 创建新的下级,然后切换到它们并附加一个进程。有没有办法添加一个劣质的并立即将其附加到进程?

更好的是,有没有一种方法可以启动具有多个下级的 gdb,每个下级附加到参数列表中的不同进程?

谢谢!

you can create new inferiors with create-inferior

你的意思可能是 add-inferior。这有效,但不是很优雅:

$ sleep 1800 & sleep 1800 & sleep 1900 &
[1] 80375
[2] 80376
[3] 80377

$ gdb -q -ex 'attach 80375' \
  -ex 'add-inferior' -ex 'inferior 2' -ex 'attach 80376' \
  -ex 'add-inferior' -ex 'inferior 3' -ex 'attach 80377'
...
(gdb) info inferiors
  Num  Description       Executable
* 3    process 80377     /bin/sleep
  2    process 80376     /bin/sleep
  1    process 80375     /bin/sleep
(gdb) q
Detaching from program: /bin/sleep, process 80377
Detaching from program: /bin/sleep, process 80376
Detaching from program: /bin/sleep, process 80375

考虑在 GDB bugzilla 中提交功能请求:如果 add-inferior 接受 pid(除了或代替可执行文件名),您的任务会更简单。