Python исключение <тип 'exceptions.ImportError'> Нет модуля с именем gdb:

Я только что скомпилировал gdb 7.8 из источника в моем домашнем каталоге на серверной машине под управлением Linux. Я ранее использовал gdb 7.6и помимо проблем со стабильностью gdb Сама (причина обновления) все работало нормально.

С момента обновления gdbкогда я бегу cgdb 0.6.7 Я сразу получаю следующее сообщение:

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.

Когда я построил gdb, Я использовал ./configure --with-python,

Когда я бегу cgdb и моя программа достигает segfault, я печатаю backtrace и получите следующее сообщение:

Исключение Python Нет модуля с именем gdb.frames:

Похоже, я не в состоянии использовать gdb/cgdb без поддержки питона. Что я могу сделать, чтобы решить эту проблему?

FWIW; Я не пользуюсь pythonЯ обычно пишу c++,

3 ответа

Решение

Вы должны указать значение "--data-directory". Например, если вы загружаете gdb из каталога сборки команда должна быть:

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

затем gdb может знать где найти python модуль.

Вы можете отослать это обсуждение.

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.
....

Попробуйте скопировать Python lib в --data-directory= /path/to/gdb/data-directory, Мой каталог данных / 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".

Я просто столкнулся с этим и хотел поделиться тем, что нашел. Во время компиляции, в частности, на этапе "make install", я заметил сообщения, в которых говорится следующее:

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.

Звучит так, будто все в порядке, что у меня нет makeinfo, но на самом деле это привело к ошибке, о которой спрашивал ОП. Когда я установил texinfo Я потом переустанавливал make install и запустил GDB без сообщения об ошибке Python.

Просто для завершения вышеуказанных ответов:

Возможно, вы скопировали исполняемый файл GDB в /usr/local/bin (это мой способ расставить приоритеты по последнему GDB, который я установил в качестве оболочки GDB по умолчанию, не допуская при этом путаницы с GDB Ubuntu по умолчанию). Тогда вам следует учитывать, что вы должны передать параметр data-directory из исходного места в тот, который вы скопировали в /usr/local/bin, Так что это будет:

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

PS: я сделал это для gdb-8.1 на Ubuntu 16.04

Другие вопросы по тегам