2010-05-14 5 views
6

Puede señalar un único archivo de símbolos de GDB con el comando:¿Cómo cargar todos los archivos de símbolos de forma recursiva desde una ruta determinada, incluidos los subdirectorios?

symbol-file /usr/lib/debug/symbolfile.so 

Pero cómo saber GDB para cargar todos los archivos de símbolos-de ruta dada incluyendo subdirectorios?

+1

¿En qué plataforma estás? Tengo una buena respuesta para Linux/ELF, pero soy demasiado flojo para escribirla si esa no es tu plataforma. –

+0

Sí, tengo una plataforma Debian Linux. – user44556

+0

Hombre, todas estas respuestas apestan ... Lo mismo ocurre con [¿Cómo cargar archivos de símbolos múltiples en gdb?] (Http://stackoverflow.com/q/20380204) – jww

Respuesta

2

En un sistema Linux, nunca debería tener que usar el comando symbol-file GDB en primer lugar.

El truco consiste en preparar sus binarios de forma que GDB encuentre automáticamente el archivo de símbolos. Esto es sorprendentemente fácil de hacer. Las instrucciones detalladas son here.

+0

Bueno, supongamos que no compilo nada yo mismo. Por ejemplo, después de apt-get install libc-dbg. ¿Debo mover el paquete de depuración instalado copiándolo en alguna parte antes de la depuración? – user44556

+0

Ejecutar "apt-get install libc-dbg" debería permitirle depurar libc en GDB * sin * ningún comando adicional de archivo de símbolos. Si no es así, entonces tiene un .gdbinit roto (lo más probable), un GDB roto, o un libc-dbg roto. Le sugiero que edite su pregunta y proporcione tantos detalles como sea posible, incluyendo qué paquetes están instalados y qué contienen, así como los resultados de su sesión real de GDB con "gdb -nx -ex" establecido detallado en './a.out ". –

0

Uso siguiente comando: conjunto de ruta de búsqueda de ruta-solib

0

La solución es add-symbol-file. Por ejemplo, si el archivo de símbolo se llama lib.out:

add-symbol-file lib.out 0 

Esto es particularmente útil en sistemas embebidos, donde los desarrolladores de aplicaciones utilizan una biblioteca almacenada en la memoria ROM. El depurador necesita el archivo de símbolos para reconstruir la pila si la ejecución se detiene en medio de una llamada de función de biblioteca. Esto funciona incluso si la biblioteca se generó en un sistema separado al que los desarrolladores no tienen acceso.

Cuestiones relacionadas