2012-04-02 16 views
5

Çalıştırma işlemim var ancak yürütülebilir dosya silindi. BenGDB, yürütülebilir dosyanın silinmiş olduğu bir işleme iliştiriyor

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

nasıl bu sürece gdb ekleyebilirsiniz hata aşağıdaki var gdb eklemeyi denerseniz?

Örnek Test durum: Kaynak kodu:

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

Şimdi farklı terminalden a.out silmek

./a.out o

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

Çalıştır derlemek. Ve yangın gdb pgrep a.out dosyasını ekleyin. Çalışmıyor. hata aşağıdaki

GDB gösterileri:

Yapamazsın
/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. 

cevap

7

Yürütücü olarak /proc/<pid>/exe kullanmayı deneyin. Bu günlerde sembolik bir bağ olarak görünüyor, ancak geçmişte silinmiş yürütülebilir dosyayı ayıklamak mümkün oldu.

Bkz. Detecting deleted executables.

Biz aynı yürütülebilir dosya fakat farklı yerde belirleyemezsiniz

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

? Bundan şüpheliyim ... – littleadv

+0

@littleadv: huh? soru 'linux' olarak işaretlenir. –

+0

Linux altında çalışan (sadece test ettim, aynı şeyi yayınlamayı planlıyorum), burada cygwin'den bahsetmiş kimseyi görmedim. – Hasturkun

2

. GDB, yürütülebilir dosyadaki sembol verilerini gerektirir ve programı çalıştırırken işletim sistemi tarafından yüklenmez.

+0

GDB takmak için aşağıdaki komutu kullanabiliriz? –

+0

@VivekGoel evet, aynı yürütülebilir dosyayı varsayabilirsin ... – littleadv

+0

ama gdb işlemini verirsem yürütülebilir dosya silindi. Program zaten ayıklandı. –