0

我想编写一个类,它将向我展示当前工作功能的树,这意味着:

假设我有函数 A 先调用函数 B,然后调用函数 C,函数 C 调用函数 D。在时间 t = 1 时,B 正在运行,所以我希望标准输出为:

Root: function A -> running properly, called B
2-nd: function B -> running properly

在时间 t = 2 时,B 已返回到 A,因此标准输出变为:

Root: function A -> running properly, B returned

在时间 t = 3,A 调用了 C。在时间 t = 4,C 调用了 D。标准输出应该是:

Root: function A -> running properly, B returned, called C
2-nd: function C -> running properly, called D
3-rd: function D -> running properly

在时间 t = 5,D 返回。在时间 t = 6,C 返回。标准输出应该是:

Root: function A -> running properly, B returned, C returned

在时间 t = 7,函数 A 返回:

Root: function A -> Done

除了创建一个记录器对象并传递它之外,有没有更优雅的方法来自动化它?如果 A 或 B 是多线程进程怎么办?

任何建议都非常感谢。谢谢!

4

1 回答 1

1

看看Python中的跟踪模块。您可以使用此模块生成带注释的跟踪报告

Python 文档中跟踪模块的定义:

跟踪模块允许您跟踪程序执行、生成带注释的语句覆盖列表、打印调用者/被调用者关系以及列出程序运行期间执行的函数。它可以在另一个程序或命令行中使用。

于 2013-08-21T17:28:28.017 回答