Sigo recibiendo este mensaje de error cuando intento agregar un punto de interrupción en gdb.
He usado estos comandos para compilar:
gcc -g main.c utmpib2.c -o main.o
and:
cc -g main.c utmpib2.c -o main.o
and also:
g++ -g main.c utmpib2.c -o main.o
También probé "-ggdb" en lugar de "-g" y todavía recibo ese mensaje de error.
Luego ejecuto gdb:
$gdb
En gdb:
(gdb)exec-file main.o
(gdb)break 59
No symbol table is loaded. Use the "file" command.
Respuestas:
En primer lugar, lo que tiene es un programa completamente compilado, no un archivo objeto, así que elimine la
.o
extensión. Ahora, preste atención a lo que dice el mensaje de error, le dice exactamente cómo solucionar su problema: "No se ha cargado ninguna tabla de símbolos. Utilice el comando" archivo " .(gdb) exec-file test (gdb) b 2 No symbol table is loaded. Use the "file" command. (gdb) file test Reading symbols from /home/user/test/test...done. (gdb) b 2 Breakpoint 1 at 0x80483ea: file test.c, line 2. (gdb)
O simplemente pase el programa en la línea de comandos.
$ gdb test GNU gdb (GDB) 7.4 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> [...] Reading symbols from /home/user/test/test...done. (gdb) b 2 Breakpoint 1 at 0x80483ea: file test.c, line 2. (gdb)
fuente
Debe agregar el parámetro adicional -g, que genera información de depuración a nivel de fuente. Se verá así:
Después de eso, puede usar gdb de manera común.
fuente
Tengo el mismo problema y seguí esta publicación , resolvió mi problema.
Siga los siguientes 2 pasos:
-O0
-ggdb
bandera al compilar su programa¡Buena suerte!
fuente
Siempre que
gcc
en la máquina de compilación ygdb
en la máquina de prueba tengan versiones diferentes , es posible que se enfrente a una incompatibilidad de formato debuginfo .Para solucionarlo, intente degradar el formato debuginfo:
gcc -gdwarf-3 ... gcc -gdwarf-2 ... gcc -gstabs ... gcc -gstabs+ ... gcc -gcoff ... gcc -gxcoff ... gcc -gxcoff+ ...
O coincidir
gdb
con elgcc
que está usando.fuente
Me encontré con este problema esta mañana porque utilicé el mismo ejecutable en DIFERENTES SO: después de compilar mi programa
gcc -ggdb -Wall test.c -o test
en mi Mac (10.15.2), ejecutégdb
el ejecutable en Ubuntu (16.04) en mi VirtualBox.Solución: vuelva a compilar con el mismo comando en Ubuntu, entonces debería estar bien.
fuente