1

我在 emacs 中使用了 gud-gdb。首先,我附加到一个program1的PID 29514

(gdb) attach 29514
Attaching to program: program1
...

然后拆开了。

(gdb) detach
Detaching from program: program1, process 29514

然后我想用 pid 4917 运行另一个程序 program2。

(gdb) attach 4917
Attaching to program: program1, process 4917
Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
0x00007fbfc52604c0 in ?? ()

我们看到 GDB 仍然想使用 program1。有没有办法让 gdb 清除最后一个分离的程序?

4

1 回答 1

2

我使用当前主干 GDB 重现了这种行为。

我相信这是一个错误:文档说:

"When you use attach, the debugger finds the program running in the process
first by looking in the current working directory, then (if the program
is not found) ..."

它不区分第一个和第二个附加,也没有说如果新进程正在运行与旧进程不同的程序,GDB 将不会再次找到该程序。

file您可以使用以下命令解决此问题:

(gdb) attach $PID1
...
(gdb) detach

(gdb) file prog2    # you shouldn't have to do this
(gdb) attach $PID2  # works fine
于 2018-04-25T02:34:27.287 回答