Gdb 符号查找错误

Gdb 符号查找错误

我尝试在 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

相关内容