2008-12-24 11 views

cevap

16

Statik kitaplıklardaki sembolleri listelemek için nm komutunu kullanabilirsiniz.

nm -g -C <libMylib.a> 
3

kullanımı bu komut: -t

objdump "your-kütüphane"

İstediğin daha basacaktır - sadece isimleri işlev, ancak tüm sembol tablosu. Aldığınız sembollerin çeşitli özelliklerini kontrol edin ve fonksiyonları değişkenlerden ve şeylerden ayırabilirsiniz.

6

Linux/Unix altında, belirli bir nesnede bulunan dışa aktarılan sembolleri listelemek için objdump -T kullanabilirsiniz. Windows altında dumpbin (IIRC dumpbin /exports) var. Aşırı yüklenmelere izin vermek için C++ işlev adlarının karıştırıldığını unutmayın.

DÜZENLEME: codelogic'in anwser'u gördükten sonra, objdump'in de-manganizasyonu gerçekleştirmek için -C'yi de anladığını hatırlıyorum.

8

ELF ikili için, readelf kullanabilirsiniz:

readelf -sW a.out | awk '$4 == "FUNC"' | c++filt 

-s: Liste sembolleri -W: awk komut sonra tüm fonksiyonları filtrelemek ve c olacak

çok uzun isimler kesmeyin ++ filtreleri bunları çözmeyecek. Bu, onları bir iç isimlendirme şemasından dönüştürecek, böylece insan tarafından okunabilir formda görüntülenecekleri anlamına gelir. O (boost.filesystem lib alınan) buna benzer isimler verir:

C++ filt olmadan
285: 0000bef0 91 FUNC WEAK DEFAULT 11 boost::exception::~exception() 

, adı _ZN5boost9exceptionD0Ev Microsoft araçları için

7

olarak görüntülenir, "link /dump /symbols <filename>" Size kanlı verecek detaylar. Daha kolay okunan bir liste vermek için başka yollar (veya seçenekler) vardır.

İlgili konular