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