Python使用gdb进行debug的方法
准备工作:
1、必须安装gdb,一般系统默认安装过了,未安装的根据系统使用不同命令安装,比如 yum install gdb,也可以用rpm命令进行安装
2、必须有一个携带符号表的Python,版本与要定位的问题Python版本相同,可以用yum安装,也可以直接下载。
这里,我下载了一个release的Python,同时下载了一个对应版本的符号表debug包。然后将debug包中的output中的*.dbg拷贝至python解压目录的bin下即可。
3、下载对应版本的libpython.py文件(可选)
该文件可以将C的堆栈转换为Python的堆栈,更方便问题定位。可以从Python源码包的Tools/gdb/libpython.py找到。版本必须相同。
调试已有进程,假设进程号为12345
gdb /home/tuzkee/Python-3.9.2/bin/python 12345
/home/tuzkee/Python-3.9.2为Python的路径,版本必须与12345使用的Python版本一致,bin下面必须用前面的方式安装了dbg文件
启动成功后,就可以正常使用gdb命令了
如果想把C的堆栈转换为Python堆栈,可以先执行
source /home/tuzkee/libpython.py
然后就可以执行py-bt命令了
更多的py开头的命令可以敲入py后双击tab联想出来