python各种函数的调用_Python脚本的内部各函数之间的调用关系

Python脚本的内部各函数之间的调用关系

通过堆栈我们可以很清楚的看到关于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脚本内部各函数的调用关系, 以及如何查看函数内变量情况相关的内容的介绍,望你会有所收获。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值