GDB附加到删除可执行文件的进程

Viv*_*oel 5 linux gdb

我有运行进程,但它的可执行文件已被删除.如果我尝试附加gdb,我得到以下错误

/home/vivek/binary/releases/20120328101511/bin/app.exe (deleted): No such file or directory.
Run Code Online (Sandbox Code Playgroud)

如何将gdb附加到此进程?

示例测试用例:源代码:

#include<stdio.h>
#include<stdlib.h>
int main(){
  for (;;){
    printf("Sleeping");
    sleep(1);
  }
}
Run Code Online (Sandbox Code Playgroud)

编译它

 gcc main.cc -o a.out
 gcc main.cc -o b.out
Run Code Online (Sandbox Code Playgroud)

运行./a.out

现在从不同的终端删除a.out.和fire gdb附加pgrep a.out文件b.out它不起作用.

GDB显示以下错误:

/tmp/temp/a.out (deleted): No such file or directory.
A program is being debugged already.  Kill it? (y or n) n
Program not killed.
Run Code Online (Sandbox Code Playgroud)

Max*_*kin 8

尝试使用/proc/<pid>/exe可执行文件.它现在似乎是一个象征性的链接,但是,过去可以从中提取已删除的可执行文件.

检测删除可执行文件.

我们可以使用以下命令来附加gdb

gdb <path-to-binary> <pid>
Run Code Online (Sandbox Code Playgroud)