2007-08-10

用gdb调试python程序

关键字: python gdb debug
最近遇到情况,一堆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的宏不能使用
评论
发表评论

您还没有登录,请登录后发表评论

fakechris
搜索本博客
博客分类
存档
最新评论