1.安装gdb 最好是gdb7.7版本
2.获取python源代码
3.编译python
* ./configure --prefix=/home/admin/python
* make "CFLAGS=-g -fno-inline -fno-strict-aliasing"
* make install
4.复制python源代码中的Tools//gdb/libpython.py到目录 ~/.gdbinit
5.修改.gdbinit中的代码
<<<< if $pc > PyEval_EvalFrameEx && $pc < PyEval_EvalCodeEx
修改为
>>>> if $pc > PyEval_EvalFrameEx && $pc < PyEval_EvalCodeEx && $fp != 0
6.启动gdb ./gdb python
可用命令有 ./gdb python --pid=${pid}
./gdb python --core=${core_file}
7.引入libpython.py
(gdb) python
>import sys
>sys.path.insert(0,'/home/admin/')
>import libpython
>end
(gdb)
8.然后可运行命令py-bt,py-list,pystack,pystackv
注:
1.libpython.py为python debug扩展
2.gdbinit中包含扩展命令,pystack即在这里边定义
3.若运行pystack时出现错误 No symbol "co" in current context.
则表示未执行以下两个步骤:
make "CFLAGS=-g -fno-inline -fno-strict-aliasing"
修改.gdbinit中的代码(修改内容见上边的步骤5)