Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python脚本中跟踪函数调用堆栈?_Python - Fatal编程技术网

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

如何在Python脚本中跟踪函数调用堆栈?,python,Python,我正在调试一些很久以前编写的代码,由于缺少文档,我希望找到一种方法来跟踪从执行到最终输出调用的函数,可能是使用哪些参数调用它们。一种sys.traceback,但在没有错误的情况下。将报告作为HTML或其他可导出格式也很好。 大致如下: main()->class->run()->getData()->saveData() 我已经看过了,但它没有回答问题,因为函数没有报告。尝试使用或其他“调用图”可视化工具。可能您需要函数 代码 import sys def traceit(frame, ev

我正在调试一些很久以前编写的代码,由于缺少文档,我希望找到一种方法来跟踪从执行到最终输出调用的函数,可能是使用哪些参数调用它们。一种
sys.traceback
,但在没有错误的情况下。将报告作为HTML或其他可导出格式也很好。 大致如下:

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

我已经看过了,但它没有回答问题,因为函数没有报告。

尝试使用或其他“调用图”可视化工具。

可能您需要函数

代码

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()
输出

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

使用
--trace
选项确实会报告函数调用我非常喜欢这个答案。虽然它可能不会在(简单的)脚本中提供很多附加值,但对于更大的项目,这样的可视化工具是非常宝贵的。在开发中非常有用!