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的宏不能使用
中间走了点弯路,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的宏不能使用
发表评论
- 浏览: 10118 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
在scala里调用Hibernate ...
是在JVM上的一种函数式语言,和java可以互相调用,http://www.sc ...
-- by fakechris -
scala学习笔记(1)
用了 Java 的实现描述语法我知道;不过利用了虚类,确实有点新意啊。
-- by Lich_Ray -
scala学习笔记(1)
实际上String=>Unit 是一个scala的trait,相当于java的接 ...
-- by fakechris -
scala学习笔记(1)
var fn = new ( String=>Unit ) { def ap ...
-- by Lich_Ray -
python的小工具,把hibern ...
嗯,输入太工整了正则表达式也就能处理这么工整的代码了,格式比较乱的还是要上ast ...
-- by fakechris






评论排行榜