c++ c static-libraries debug-symbols

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.

Linux y Unix tira de comandos


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 .