2012-04-02 22 views
5

実行中のプロセスがありますが、実行可能ファイルが削除されています。 私はGDBを添付しようとした場合、私は私がこのプロセスにGDBを添付することができますどのようにエラー実行ファイルが削除されたプロセスにGDBが添付されます

/home/vivek/binary/releases/20120328101511/bin/app.exe (deleted): No such file or directory. 

次しまいましたか?

サンプルテストケース: ソースコード:

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

gcc main.cc -o a.out 
gcc main.cc -o b.out 

それをコンパイルし実行 今

./a.out異なる端末からのa.outを削除します。 火災の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. 

答えて

7

/proc/<pid>/exeを実行可能ファイルとして使用してください。最近のシンボリックリンクとして現れていますが、過去に削除された実行ファイルを抽出することは可能でした。

Detecting deleted executablesを参照してください。

我々は

gdb <path-to-binary> <pid> 
+0

?私はそれを疑う... – littleadv

+0

@littleadv:ハァッ?その質問は 'linux'とマークされています。 –

+0

これはLinux上で動作します(私はそれをテストするだけで、同じものを投稿しようとしています)、私は誰もcygwinについて言及していませんでした。 – Hasturkun

2

あなたがすることはできません。 GDBは実行可能ファイルにあるシンボルデータを必要とし、プログラムを実行しているときにOSによってロードされていません。

+0

をgdbをアタッチするには、次のコマンドを使用することができます私は、同じ実行可能ファイルを指定しますが、別の場所ではできないのですか? –

+0

@VivekGoelはい、あなたは同じ実行可能ファイルであると仮定することができます... – littleadv

+0

しかし、もし私がgdbプロセスを与えるならは実行可能ファイルを削除します。プログラムはすでにデバッグされています。 –

関連する問題