当前位置:项目开发->项目经验 ->python的函数调用堆栈信息分析及应用

原创版权标志python的函数调用堆栈信息分析及应用

作者:codexia  发表时间:2017/12/24 23:38:23  阅读:
[摘要] 通过本文的知识,我们就可以获取到函数的调用N层堆栈信息、局部变量、全局变量、当前函数代码起始行数(常常被调试器使用)和被调用的行数(用于定位函数代码,常常被日志库使用)。
  要想在程序运行时打印调用堆栈?可以的。网上一些代码给出了打印日志时打印函数调用时代码所在的行号等。因为信息太少,解释只言片语,而且是复制一大片,所以参考价值不大。然后我就深入去了解了一下,结果发现了很多好玩的东西。一起来看看吧。
    这一切都归功于sys模块的_getframe()函数。此函数是获取函数调用的实时堆栈的信息。堆栈是分层的,可以一级级的跟踪函数的调用情况。这个在代码调试器里通常都提供这些调用堆栈信息。不必觉得调试器太神秘,我们现在就可以去看看堆栈都长成什么样。
    sys模块的_getframe()函数获取的对象的结构如下:
sys
|___  _getframe()  #当前堆栈信息
    |___ f_back     #调用此函数的堆栈信息
    |___ f_builtins #系统内置对象信息
    |___ f_code     #代码相关信息
    |...【登录后阅读更多内容】
文章来源:C++技术网原创文章版权为网站和作者共同所有,会员文章禁止转载。非会员文章转载做好本文超链接即表示授权转载。通过文章下面的分享按钮可以自由分享所有文章。

返回顶部

在线提问
问题标题:
问题描述:(简陋的描述会导致问题被最后回答、没有针对性回答甚至无法解答。请确保问题描述的足够清楚。)