用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]