我尝试在 ubuntu 12.04 上使用 gdb,但每次程序崩溃时都会出现以下错误
gdb: symbol lookup error: gdb: undefined symbol: PyUnicodeUCS4_FromEncodedObject
看起来与 Python 相关,但我不知道该怎么做......
答案1
为了其他人的利益,我将再次回答我自己的问题:
该错误与错误的 PATH 有关,请输入
which python
该命令返回的路径不是系统默认的 python 路径。
Gdb 查找默认的 python 安装,因此,就我的情况而言,只需在 .bashrc 中注释掉源路径命令即可,该命令将覆盖 PATH 中的 /usr/bin/python 路径。
答案2
和 Mutewinter 一样,我也对这个问题添加了自己的答案:
LD_LIBRARY_PATH
我要调试的项目需要自定义,这导致了问题。如果LD_LIBRARY_PATH
包含另一个版本的libpython
,gdb 可能会链接错误的版本,从而导致符号错误。
您可以libpython
使用以下命令检查将使用哪个版本的 gdb:
ldd /usr/bin/gdb
谨致问候,埃里克
答案3
你可以下载python2.6源代码,例如
https://www.python.org/ftp/python/2.6.8/Python-2.6.8.tar.bz2
https://www.python.org/ftp/python/2.6.8/Python-2.6.8.tar.bz2.asc
提取并安装
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