调试Python崩溃

2 投票
1 回答
2064 浏览
提问于 2025-04-15 19:59

我在一台Linux服务器上从源代码构建Python 2.6 4,运行测试(make test)时遇到了段错误(Segmentation Fault),具体是在test_hashlib.py和test_hmac.py这两个测试文件中。当我在gdb中打开核心转储文件时,看到的错误信息是0x00002b73379ac446 in ??。为了获取调试信息,我重新编译了Python,并把我的CFLAGS和CPPFLAGS都设置为-g,然后再次运行失败的测试。但当我在gdb中打开核心转储文件时,得到的结果和之前一样,没有任何有用的信息。我还尝试在gdb中运行Python,但结果还是一样。

这是我用来构建和安装Python的脚本(install-python.sh):

#!/bin/sh

VER=2.6.4

wget http://www.python.org/ftp/python/${VER}/Python-${VER}.tar.bz2
tar -xjf Python-${VER}.tar.bz2
cd Python-${VER}
export CFLAGS="-g"
export CPPFLAGS="${CFLAGS}"
./configure --prefix=${HOME}/packages/python --exec-prefix=${HOME}/packages/python
make && make test
make install
cd ..
#rm -rf Python-${VER}*

有没有人知道如何从我自己构建的Python中获取有用的回溯信息?

1 个回答

0

通常情况下,你需要在调用 ./configure 之前设置 CFLAGS。这样做的目的是为了把 CFLAGS 的值写入到 Makefile 文件中。

撰写回答