Я пытаюсь использовать gdb в Ubuntu 12.04, но каждый раз, когда программа вылетает со следующей ошибкой
gdb: symbol lookup error: gdb: undefined symbol: PyUnicodeUCS4_FromEncodedObject
Выглядит что-то связанное с Python, но я не знаю, что делать ... [ 112]
И так же, как Mutewinter, я добавляю свой собственный ответ на проблему:
Пользовательская спецификация LD_LIBRARY_PATH
, необходимая для проекта, который я должен был отлаживать, вызвала проблему. Если LD_LIBRARY_PATH
содержит другую версию libpython
, gdb может ссылаться на неправильную версию, вызывая ошибку символа.
Вы можете проверить, какую версию libpython
GDB будет использовать, используя следующую команду:
ldd /usr/bin/gdb
С уважением, Эрик
Вы можете загрузить исходный код python2.6, например,
https://www.python.org/ftp/python/2.6.8/Python-2.6.8.tar.bz2 [ 111]
https://www.python.org/ftp/python/2.6.8/Python-2.6.8.tar.bz2.asc
extract и установите
gpg --verify Python-2.6.8.tar.bz2.asc
tar -xvf Python-2.6.8.tar.bz2
cd Python-2.6.8
./configure --enable-shared --enable-ipv6 --enable-unicode=ucs4 --with-system-ffi --with-threads
make -j5
make install
Снова я отвечу себе на свой собственный вопрос ради других:
ошибка была связана с неверным PATH, введя
which python
, команда вернула путь, который НЕ был системным путем по умолчанию в Python.
Gdb ищет установку Python по умолчанию, поэтому в моем случае этого было достаточно, чтобы закомментировать команду исходного пути в моем .bashrc, которая переопределяла путь / usr / bin / python в PATH.