但是如果机器上的Python环境不是使用包管理工具自动安装的,或者包管理工具安装的GDB版本太老或没有python调试的支持,那么,就不得不手工编译GDB了。我在Ubuntu 15.10上编译GDB时遇到了一些坑,记下来备查。
步骤如下:
apt-get -y install texinfo python3.5-dbg
下载GDB wget http://ftp.gnu.org/gnu/gdb/gdb-7.11.1.tar.gz
解压后进入目录 tar zxf gdb-7.11.1.tar.gz && cd gdb-7.11.1
执行./configure --with-python
make && make install,这样gdb就被安装到/usr/local/bin目录下了
拷贝如下代码到test.py
importtime
time.sleep(10000)
7. 执行python3 test.py &
8. gdb python3
9. 输入py-bt就可以看到python调用栈了。如果此时不能看到python调用栈,执行如下脚本
#!/bin/bash
cp -r /usr/lib/debug /usr/local/lib/
mkdir -p /usr/local/lib/debug/usr/local/bin
cp /usr/local/lib/debug/usr/bin/* /usr/local/lib/debug/usr/local/bin
以下为完整的安装脚本:
#!/bin/bash
apt-get update
apt-get -y install texinfo python3.5-dbg
wget http://ftp.gnu.org/gnu/gdb/gdb-7.11.1.tar.gz
tar zxf gdb-7.11.1.tar.gz
cd gdb-7.11.1
./configure --with-python
make && make install
cp -r /usr/lib/debug /usr/local/lib/
mkdir -p /usr/local/lib/debug/usr/local/bin
cp /usr/local/lib/debug/usr/bin/* /usr/local/lib/debug/usr/local/bin
rm -rf gdb-7.11.1
rm gdb-7.11.1.tar.gz