通过堆栈我们可以很清楚的看到关于Python脚本的内部各函数之间的调用关系, 那么以下的文章主要是介绍我们怎么查看相关函数的内变量情况,希望你在看完这篇文章会有所收获。
正如大家所, python内部堆栈和函数的调用由PyEval_EvalFrameEx完成的, 一次PyEval_EvalFrameEx意味着一次函数调用,象上面的第19,13,10行分别对应于main, segv_test, freeNode函数, 将gdb定位到对应行后,使用pylocals宏即可查看该函数内部变量的详细情况。
- (gdb) up 13
- #13 0x007d6d2b in PyEval_EvalFrameEx
(f=0x81242fc, throwflag=0) at Python/ceval.c:2370- 2370 in Python/ceval.c
- (gdb) pylocals
- s:
- object :
''- type : str
- refcount: 3
- address : 0xb7f64440
- options:
- object : 97
- type : int
- refcount: 7
- address : 0x8082c20
- doc:
- object :
- type : instance
- refcount: 1
- address : 0xb7cc04ec
- ctxt:
- object :
- type : instance
- refcount: 1
- address : 0xb7f70ccc
- nodes:
- object : [
] - type : list
- refcount: 2
- address : 0xb7f70a8c
- note:
- object :
- type : instance
- refcount: 2
- address : 0xb7cc0cac
- nexts:
- object : [
,
, ] - type : list
- refcount: 1
- address : 0xb7f4ce4c
Python脚本调试时断点的设置是个很麻烦的东西,我所能想到的有两种方法:
1 根据函数的python源码进行断点设置;
2 采用sleep函数和ctrl+c来中断程序的运行。
无论怎么样使用逐条执行进行调试都是很痛苦的事情,因为这个时候python解释器本身要做很多工作。 由于本身对于python源码不是很熟悉,因此对如何使用gdb对python脚本调试上也只是很粗略的理解, 这里权当抛砖引玉, 欢迎达人们给出分享的经验。以上就是对Python脚本内部各函数的调用关系, 以及如何查看函数内变量情况相关的内容的介绍,望你会有所收获。
【编辑推荐】
分享名称:Python脚本的内部各函数之间的调用关系
本文来源:http://www.shufengxianlan.com/qtweb/news5/478905.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联