我正在编写一个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中附加多个进程,并为每个进程创建一个下级。
我知道一旦你运行gdb,你可以用create-inferior创建新的下级,然后切换到它们并附加一个进程。是否有一种方法可以添加一个次品,并立即将其附加到一个过程中?
更好的是,是否有一种方法可以启动具有多个下级的gdb,每个下级附加到参数列表中的不同进程?
谢谢!
可以使用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(除了可执行文件名之外),你的任务会更简单。