如何在gdb中附加进程


73

我有一个简单的C程序,该程序会分叉一个进程,然后运行一个可执行文件。

我想将子进程附加到gdb。

我在控制台中运行主程序,然后打开另一个控制台以查找子进程的pid,然后使用以下命令启动gdb:

gdb attach 12271

12271子进程ID在哪里,但是附加失败并显示:

No such file or directory.

知道为什么吗?


我不认为attach是命令行参数。只要gdb已经运行,就可以使用它。这个家伙有一个很好的教程:dirac.org/linux/gdb/06-Debugging_A_Running_Process.php
thang

Answers:


123

尝试以下方法之一:

gdb -p 12271
gdb /path/to/exe 12271

gdb /path/to/exe
(gdb) attach 12271

21

第一个参数应该是可执行程序的路径。所以

gdb progname 12271

7

使用正在运行的myExecutableName具有PID的实例15073

在命令行中按两次Tab键后$ gdb myExecu,将自动完成以下操作:

$ gdb myExecutableName 15073

并将gdb附加到此过程。真好!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.