2008-12-24 4 views

Respuesta

16

Puede usar el comando nm para enumerar los símbolos en bibliotecas estáticas.

nm -g -C <libMylib.a> 
3

uso de este comando:

objdump -t "tu-biblioteca"

Se imprimirá más de lo que quiere - no sólo funcionar nombres, sino a toda la tabla de símbolos. Comprueba los diversos atributos de los símbolos que obtienes, y podrás ordenar las funciones de las variables y demás.

6

En Linux/Unix puede usar objdump -T para enumerar los símbolos exportados contenidos en un objeto determinado. En Windows hay dumpbin (IIRC dumpbin /exports). Tenga en cuenta que los nombres de las funciones de C++ están destrozados para permitir sobrecargas.

EDITAR: después de ver el anwser de Codelogic, recordé que objdump también entiende -C para realizar el desempañado.

8

Para binarios ELF, puede utilizar readelf:

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

-s: Lista de símbolos -W: no corte nombres demasiado largos

El comando awk filtrará entonces todas las funciones, y C++ filt los desmantelará. Eso significa que los convertirá de un esquema de nombres interno para que se muestren en forma legible para los humanos. Genera nombres similares a este (tomado de lib boost.filesystem):

285: 0000bef0 91 FUNC WEAK DEFAULT 11 boost::exception::~exception() 

Sin C++ filt, el nombre aparece como _ZN5boost9exceptionD0Ev

7

Para las herramientas de Microsoft, "link /dump /symbols <filename>" le dará la sangrienta detalles. Probablemente haya otras formas (u opciones) de ofrecer una lista más fácil de leer.

Cuestiones relacionadas