2011-06-22 13 views
10

Kazaya neden olan şeyleri görmek için yeterli bağlamı elde etmek için büyük çaplı kütüphane kodlarını parçalara ayırmak gerçekten sinir bozucu buluyorum. Bir adresi itiraz edip, benim için fonksiyonun sınırlarını bulmamın bir yolu var mı?Bir adrese objdump verebilir miyim ve içerdiği işlevi parçalarına ayırabilir miyim?

DÜZENLEME: Daha da iyisi, benim için tüm yığın izini parçalarına ayırabilir miyim?

+0

tarafından işaretlenir varsayarak, bir ret(q) bulana kadar 0x42 başlayarak listeleme yazdırır? (Ya da çekirdek veya gdb'yi kullanmadan kilitlenme adresiyle nasıl bitiyorsunuz?) – Rup

+0

Çarpışma bile bir kilitlenme çekirdeği oluşturup oluşturmadığından emin değilim. Bu, kernel hata ayıklama işlemine doğru gidiyor ve çökmekte olan kitaplık, önyükleme işleminde çok erken çalışıyor. – Alex

cevap

14

Bunun gibi bir şey mi?

$ objdump -S --start-address=0x42 foo.o | awk '{print $0} $3~/retq?/{exit}' 

Bu dis-montaj sınır sadece GDB içine çökme çekirdeğini yüklemek ve orada keşfetmek Can ret(q)

İlgili konular