c++ - ¿Cómo puedo inspeccionar una biblioteca estática para ver si los símbolos de depuración se están exportando?
static-libraries debug-symbols (4)
Tengo una biblioteca estática que estoy construyendo en modo de depuración, pero cuando entro en ella, todavía consigo desmontaje. Quiero saber cómo usar nm u otra herramienta para garantizar que no se eliminen los símbolos de depuración.
Descarga Dependencywalker para tu sistema operativo
Se detectará si su dll tiene símbolos de depuración. Si ve "No válido" en "Símbolos", significa que los símbolos de depuración se han eliminado. Los valores válidos son: PDB, CV, DBG, etc.
Puede usar el comando de file , disponible para muchos sistemas operativos, incluido Windows a través de Cygwin.
Si dice "no eliminado" significa que tiene la información de depuración presente.
Como nota al margen, para las librerías estáticas use ar para extraer los archivos .o
y use el file
directamente en ellos.
Puede usar la strip -S libXX.a
para verificar si el tamaño de su biblioteca estática se ha reducido. El tamaño de la biblioteca estática no cambiará si no incluye símbolos de depuración.
Se trabaja en Mac OS para verificar la biblioteca estática generada por Xcode.
Puede usar la opción de nm
--debug-syms
, para permitir que nm
también --debug-syms
símbolos del depurador (si los hay) para el objeto empaquetado en una biblioteca.
Para los símbolos del depurador, la segunda columna indica N
Ejemplo (supone que el objeto example.o está en la biblioteca)
nm --debug-syms libexample.a
Salida (extracto):
example.o:
0000000000000000 b .bss
0000000000000000 n .comment
0000000000000000 d .data
0000000000000000 N .debug_abbrev
0000000000000000 N .debug_aranges
0000000000000000 N .debug_info
0000000000000000 N .debug_line
0000000000000000 N .debug_loc
0000000000000000 N .debug_pubnames
0000000000000000 N .debug_str
0000000000000000 r .eh_frame
0000000000000000 n .note.GNU-stack
0000000000000000 r .rodata
0000000000000000 t .text
...
Para más sobre esto por favor vea man nm
.