调试Python崩溃
我在一台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
文件中。