2010-03-24 17 views
13

Modern linux'da neredeyse tüm nesneler iki parçadan (iki dosya) ayrılır ve ayrılır. Birincisi, yürütülebilir dosyanın kendisi ve ikincisi, orijinal ELF'den çıkarılmış semboller. Bu tür dosyalar Ben hata ayıklama bilgisi ile ELF dosyaya binary ve binary.dbg birleştirme nasılNesnenin şeridini yalnızca tutmak için hata ayıklaması nasıl tersine çevrilir?

objcopy --only-keep-debug original.elf binary.dbg 
mv original.elf binary 
objcopy --strip-debug binary 

ile oluşturulur? Tahrifsiz, orijinal ikiliyi yeniden oluşturmak istiyorum. Orijinaline eşit byte-byte byte olmayabilir, ancak içinde bir hata ayıklama sembollerinin bulunması gerekir.

Evet, yaklaşık gnu.debuglink bölüm biliyorum PS, ancak (objdump semboller bilgi geri yükleyemezsiniz) ELF için

cevap

5

bazı debuggers (etnus) ve disassemblers için çalışmaz, elfutils paket denilen bir araç içerir İşi yapan eu-unstrip. senin örnekte bağlamında:

eu-unstrip binary binary.dbg

binary.dbg artık hem ikili ve hata ayıklama sembolleri vardır. Herhangi bir bilgi bulabilirsem belgelere bir referans eklerim ...

+0

Doküman var: http://www.linuxfromscratch.org/blfs/view/svn/general/elfutils.html "*' eu- unstrip' soyulmuş dosyaları ayrı sembollerle ve hata ayıklama bilgisiyle birleştirir. * "ve bu sayfa https://fedorahosted.org/elfutils/ ve bu kaynak https://git.fedorahosted.org/cgit/elfutils.git/tree/ src/unstrip.c "Ayrılmış semboller ve hata ayıklama bilgileri ile soyulmuş dosyaları birleştirin. Telif Hakkı (C) 2007-2012, 2014, 2015 Red Hat, Inc ... Roland McGrath". Eğer normal programlanmış ELF olarak "program.bin", ve sadece hata ayıklama bilgisi içeren "program.dbg" varsa, "eu-unstrip" i nasıl başlatmalıyım ve hangi dosya değiştirilmeli? – osgx

+3

Kullanımıma bağlı olarak, ikiliyi hata ayıklama sembollerine birleştirir. Eğer program.dbg ve program.bin varsa, 'eu-unstrip program.bin program.dbg', bini dbg dosyasına birleştirir. Paramizi tersine çevirmek hata verir. – lyngvi

+0

Elfutillere erişimim yok ama sadece binutils. Objcopy --add-section veya benzeri kullanarak yapmak mümkün mü? – sunil

İlgili konular