我有运行进程,但它的可执行文件已被删除.如果我尝试附加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)
尝试使用/proc/<pid>/exe可执行文件.它现在似乎是一个象征性的链接,但是,过去可以从中提取已删除的可执行文件.
我们可以使用以下命令来附加gdb
gdb <path-to-binary> <pid>
Run Code Online (Sandbox Code Playgroud)