zyh3033 发表于 2017-4-23 15:04:17

用gdb调试python程序

最近遇到情况,一堆python进程中不定期的有一个内存会突然暴涨。由于重现几率非常低,而且无法分析原因,只好上gdb调试了。
中间走了点弯路,python源代码自带了gdb的宏,但是pystack和pyo基本不能用。最后的办法就是当出现问题的时候,使用gdb attach到python程序上,然后在堆栈中找到PyFrameObject对象, 从而定位到出问题的python函数
函数名 *(char*)&(((PyStringObject*)f->f_code->co_name)->ob_sval)
文件名*(char*)&(((PyStringObject*)f->f_code->co_filename)->ob_sval)
行号 f->f_code->firstlineno

不过在gdb中想要得到类和dict的信息真是太痛苦了,有空研究一下为什么pyo的宏不能使用
页: [1]
查看完整版本: 用gdb调试python程序