Acabo de compilar gdb 7.8 desde la fuente en mi directorio de inicio en una máquina servidor que ejecuta Linux. Anteriormente había estado usando gdb 7.6, y aparte de los problemas de estabilidad con gdb en sí (el motivo de la actualización) todo funcionó bien.

Desde la actualización de gdb, cuando ejecuto cgdb 0.6.7 inmediatamente recibo el siguiente mensaje:

Python Exception <type 'exceptions.ImportError'> No module named gdb:

warning:
Could not load the Python gdb module from `/home/username/bin/gdb//python'.
Limited Python support is available from the _gdb module.
Suggest passing --data-directory=/path/to/gdb/data-directory.

Cuando construí gdb, usé ./configure --with-python.

Cuando ejecuto cgdb y mi programa alcanza un valor predeterminado, escribo backtrace y recibo el siguiente mensaje:

Excepción de Python Ningún módulo llamado gdb.frames:

Por lo tanto, parece que efectivamente no puedo usar gdb / cgdb sin el soporte de Python. ¿Qué puedo hacer para resolver esto?

FWIW; No uso python, generalmente escribo c++.

10
quant 1 sep. 2014 a las 04:15

4 respuestas

La mejor respuesta

Debe especificar el valor de "--data-directory". Por ejemplo, si carga gdb desde el directorio de compilación, el comando debería ser:

./gdb -data-directory ./data-directory

Entonces gdb puede saber dónde encontrar el módulo python.

Puede consultar esta discusión.

14
Nan Xiao 1 sep. 2014 a las 08:21

Me encontré con esto y quería compartir lo que encontré. Durante la compilación, específicamente el paso 'hacer instalar', noté un mensaje que decía esto:

WARNING: `makeinfo' is missing on your system. You should only need it if you modified a `.texi' or `.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy `make' (AIX, DU, IRIX). You might want to install the `Texinfo' package or the `GNU make' package. Grab either from any GNU archive site.

Parece que está bien que no tenga makeinfo, pero de hecho condujo al error sobre el que el OP preguntó. Cuando instalé texinfo, reinstalé make install y ejecuté gdb sin mensaje de error de Python.

1
Chris Browning 18 dic. 2018 a las 16:09
root@labs:~/gdb-8.1# gdb --version
Python Exception <type 'exceptions.ImportError'> No module named gdb: 
gdb: warning: 
Could not load the Python gdb module from `/usr/local/share/gdb/python'.
Limited Python support is available from the _gdb module.
Suggest passing --data-directory=/path/to/gdb/data-directory.
....

Intente cp python lib en --data-directory = /path/to/gdb/data-directory . Mi directorio de datos es / usr / local / share / gdb / python ,

# mkdir -p /usr/local/share/gdb/python/gdb
# cp -rf ~/gdb-8.1/gdb/python/lib/gdb/* /usr/local/share/gdb/python/gdb/


# gdb --version
GNU gdb (GDB) 8.1
Copyright (C) 2018 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-pc-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".
1
debug 5 may. 2018 a las 08:29

Solo para completar las respuestas anteriores:

Probablemente haya copiado el ejecutable gdb a /usr/local/bin (que es mi forma de priorizar el último gdb que instalé como shell predeterminado gdb , evitando al mismo tiempo el desorden con el gdb predeterminado de Ubuntu). Luego, debe considerar que debe proporcionar el parámetro del directorio de datos desde el lugar original al que ha copiado en /usr/local/bin. Entonces eso sería:

/usr/local/bin/gdb --data-directory=/path_to_fully_installed_gdb_folder/data-directory

PD: Hice esto para gdb-8.1 en Ubuntu 16.04

0
Bahman 2 jun. 2018 a las 02:36