onlinegdb online linea dev compiler compilador c++ gdb

c++ - online - no se encontraron símbolos de depuración cuando se usa gdb



online gdb python (6)

¡También debería probar -ggdb en lugar de -g si está compilando para Android!

GNU gdb Fedora (6.8-37.el5) Kernal 2.6.18-164.el5

Estoy intentando depurar mi aplicación. Sin embargo, cada vez que paso el binario al gdb dice:

(no debugging symbols found)

Aquí está el resultado del archivo del binario, y como puede ver, no se elimina:

vid: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped

Estoy compilando con los siguientes CFLAGS:

CFLAGS = -Wall -Wextra -ggdb -O0 -Wunreachable-code

¿Alguien puede decirme si me falta algo simple aquí?


Algunas distribuciones de Linux no usan los símbolos de depuración del estilo gdb . (IIRC prefieren dwarf2 .)

En general, gcc y gdb estarán sincronizados en cuanto a qué tipo de símbolos de depuración usarán, y forzar un estilo en particular solo causará problemas; a menos que sepa que necesita algo más, use simplemente -g .


La aplicación debe compilarse y vincularse con la opción -g . Es decir, debe colocar -g tanto en CPPFLAGS como en LDFLAGS.


La causa más frecuente de "no se encontraron símbolos de depuración" cuando -g está presente es que hay algún argumento "suelto" o "s" en algún lugar de la línea del enlace.

Del man ld :

-s --strip-all Omit all symbol information from the output file. -S --strip-debug Omit debugger symbol information (but not all symbols) from the output file.


Reemplaza -ggdb con -g y asegúrate de no estar eliminando el binario con el comando strip.


Sé que esto fue respondido hace mucho tiempo, pero recientemente pasé horas tratando de resolver un problema similar. La configuración es una PC local ejecutando Debian 8 utilizando Eclipse CDT Neon.2, una placa remota ARM7 (Olimex) ejecutando Debian 7. La cadena de herramientas es Linaro 4.9 usando gdbserver en la placa remota y Linaro GDB en la PC local. Mi problema era que la sesión de depuración comenzaba y el programa se ejecutaba, pero los puntos de interrupción no funcionaban y cuando se detenía manualmente "no se podía encontrar una fuente". Mi compilación de opciones de línea (Linaro gcc) incluía -ggdb -O0 como muchos han sugerido, pero sigue siendo el mismo problema. Finalmente probé gdb propiamente en el tablero remoto y no me quejaba de ningún símbolo. Lo curioso fue que la depuración informada de ''archivo'' no se eliminó en el ejecutable de destino.

Finalmente resolví el problema agregando -g a las opciones del enlazador. No afirmaré que entiendo completamente por qué esto me ayudó, pero quería pasar esto a otros por si acaso me ayuda. En este caso, Linux realmente necesitaba -g en las opciones del enlazador.