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



我正在编写一个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(除了可执行文件名之外),你的任务会更简单。

最新更新