当我';我在使用Python的调试版本吗?

当我';我在使用Python的调试版本吗?,python,gdb,Python,Gdb,我的gdb版本是针对我的系统python链接的,但我目前正在使用python的一个特殊调试版本。因此,gdb无法正确启动,错误如下: $gdb GDB:符号'PyPyZ0OrgStutt在共享对象中具有不同的大小,考虑重新链接 GDB:符号“PyBoLoLyType”在共享对象中具有不同的大小,考虑重新链接 GDB:符号'PyPyNoTimPrimeNeDebug结构'在共享对象中具有不同的大小,考虑重新链接 GDB:符号'PyFultAdType ''在共享对象中具有不同的大小,考虑重新链接

我的gdb版本是针对我的系统python链接的,但我目前正在使用python的一个特殊调试版本。因此,gdb无法正确启动,错误如下:

$gdb
GDB:符号'PyPyZ0OrgStutt在共享对象中具有不同的大小,考虑重新链接
GDB:符号“PyBoLoLyType”在共享对象中具有不同的大小,考虑重新链接
GDB:符号'PyPyNoTimPrimeNeDebug结构'在共享对象中具有不同的大小,考虑重新链接
GDB:符号'PyFultAdType ''在共享对象中具有不同的大小,考虑重新链接
GDB:符号'PyPytrutrueStutt在共享对象中有不同的大小,考虑重新链接
GDB:符号'PyPyNoEnStRe'在共享对象中有不同的大小,考虑重新链接
分段故障
…或者可能是这样的错误:

gdb:symbol查找错误:gdb:undefined symbol:PyUnicodeUCS4\u FromEncodedObject
即使在我的
LD\u LIBRARY\u路径上存在Python的非系统版本,我如何使用gdb?

我在以下内容中找到了答案:

解决方法是通过设置 LD_预加载,然后在程序执行之前取消设置。对于 例如,这将调试我的程序以进行调试:

LD_PRELOAD=/usr/lib/libpython2.7.so gdb-ex'set environ LD_PRELOAD'--指定要调试的程序
请注意,您需要将LD_PRELOAD设置为python的正确版本 该gdb是根据ldd$编译的(其中 gdb)从一个新鲜的环境


快速跟进:出于某种原因,我必须将模块
python-2.7.6/Tools/gdb/libpython.py
(从下载的tarball)加载到我的
sys.path
,或者像
py bt
等特殊python命令。命令不可用。(
未定义的命令:“py bt”。尝试“help”。
)可以在