c++ - gdb seg falla al leer símbolos
debugging memory (2)
Si compila sin el indicador -g, entonces no está incluyendo la información de depuración en su ejecutable, por lo que cuando se carga gdb hay mucha menos información para cargar.
Si gdb segfaults durante el inicio, entonces este es un error de gdb, no hay ningún archivo ejecutable que deba ser capaz de pasar a gdb que debería causar una segfault, en el peor de los casos debería recibir algún mensaje de error.
Podría intentar ejecutar gdb bajo gdb, (simplemente haga gdb --args gdb /home/user/path/to/program.exe
) esto no le servirá de mucho, pero podría dar una idea de lo que está mal con gdb, podría a continuación, presente un error de gdb aquí: https://sourceware.org/bugzilla/enter_bug.cgi?product=gdb, pero esto solo vale la pena si tiene buenos pasos para reproducir o una traza inversa de un gdb bloqueado.
Reinstalar gdb podría ayudar, pero no abrigaría muchas esperanzas de que eso resuelva el problema, a menos que cambie la versión de gdb que instala, gdb es un programa bastante fácil de instalar, por lo que es muy difícil equivocarse.
También puedes intentar construir gdb desde git, es bastante fácil, y el error ya puede haber sido resuelto, comienza desde aquí: http://www.gnu.org/software/gdb/current/
Si amplías tu pregunta con una traza inversa de un gdb bloqueado, entonces otros podrán ofrecerte más información sobre por qué se está cayendo, pero la culpa es definitivamente de tu versión de gdb.
Cuando intenta ejecutar gdb con un programa, segmenta las fallas mientras lee los símbolos.
Cuando corro:
gdb /home/user/path/to/program.exe
Yo obtengo:
GNU gdb (Ubuntu 7.7-0ubuntu3.1) 7.7
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /home/user/path/to/program.exe...Segmentation fault (core dumped)
Sospecho que el binario podría ser demasiado grande para que gdb se cargue en la memoria. Este error solo ocurre cuando compilo con -g (indicador de depuración). Aquí está la diferencia en el tamaño de los binarios:
Compilado con
-release flag: 405 MB
-debug flag: 862 MB
¿Alguna idea sobre otros culpables de esta falla de segmentación? ¿O hay una manera de aumentar la memoria permitida para gdb? Esto resulta ser un problema muy desafiante para google.
Estaba teniendo el mismo problema con gdb 7.9
en Ubuntu 15.04 x86_64
, que había instalado simplemente usando apt-get install gdb
.
Resolví el problema compilando e instalando una versión anterior: gdb 7.5.1
.
Tuve que descargar una biblioteca (que encontré aquí ) y también tuve que ejecutar ./configure
usando algunos argumentos (que encontré aquí ). Todo lo demás es sencillo.
Buena suerte.
Aquí están los comandos:
$ cd
$ sudo apt-get install libncurses5-dev
$ wget ftp://sourceware.org/pub/gdb/releases/gdb-7.5.1.tar.gz
$ tar zxf gdb-7.5.1.tar.gz
$ cd gdb-7.5.1
$ sudo ./configure --disable-werror
$ sudo make
$ sudo make install