环境准备(软件运行环境用的python 2.7.18,和系统自带的2.7.5不同):
1、(生产环境)对活动的python进程号执行 gcore -o ***.core $PID ,生成core文件,将core文件传送到调试环境进行调试。
2、(调试环境)cd root; wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz
3、(调试环境)tar -zxvf Python-2.7.18.tgz
4、(调试环境)查看libpython.py 。 如find / -name libpython.py -- 以/root/Python-2.7.18/Tools/gdb/libpython.py为例
调试:
1、gdb python ***.core
2、source /root/Python-2.7.18/Tools/gdb/libpython.py
3、thread apply all py-bt
注意事项:
当软件运行环境的python A和系统自带的python B版本不同时,建议编译A时加上-g O0选项 且不要使用--enable-shared选项以静态库连接生成。否则有可能调试时会引用到系统的自带的动态库,导致部分调试信息解析不出来。(配置方法:./configure --prefix=/usr/local/python2718-debug CFLAGS="-g -O0" --enable-unicode=ucs4)

