如何在Python脚本中跟踪函数调用堆栈?

时间:2015-12-14 11:52:39

标签: python

我正在尝试调试很久以前编写的一些代码,并且由于稀缺文档需要一种方法来跟踪从执行到最终输出调用的函数,可能还有调用它们的参数。一种sys.traceback,但在没有错误的情况下。将报告作为HTML或其他可导出格式获取也很不错。 有点像:

main()->class->run()->getData()->saveData()

我已经查看了Can I trace all the functions/methods executing in a python script?,但它没有回答这个问题,因为函数没有报告。

2 个答案:

答案 0 :(得分:1)

尝试使用pycallgraph或其他"调用图"可视化工具。

答案 1 :(得分:0)

可能你需要settrace功能

<强> CODE

import sys

def traceit(frame, event, arg):
    if event == "call":
        co = frame.f_code
        func_name = co.co_name
        print("event:", event,"of function",func_name)
    return traceit

def main():
    print ("In main")
    for i in range(5):
        print (i, i*3)
    print ("Done.")


sys.settrace(traceit)
main()

OUT PUT

event: call of function main
In main
0 0
1 3
2 6
3 9
4 12
Done.