如何自动跟踪所有函数调用和参数?

时间:2018-11-13 21:14:42

标签: python debugging tracing sys

出于构建代码专用调试器的目的,我想跟踪代码中的某些功能,并记录每次调用中收到的参数。

我希望能够做到这一点,而无需在每个函数中添加代码行,甚至无需在所有函数周围添加装饰器,而是在整个运行过程中设置跟踪。

这有点类似于您可以在sys模块中使用sys.settrace进行的操作: https://docs.python.org/2/library/sys.html

除了据我所知,跟踪不包括函子的参数。

所以我想写一个看起来像这样的函数:

其中log_func_args将其记录在文件中以供以后分析。

然后将此函数设置为在调用我代码中的任何函数时都调用,并带有函数的名称和参数。

可以做到吗?

1 个答案:

答案 0 :(得分:0)

好的,所以sys.settrace可以很好地完成技巧:

https://docs.python.org/2/library/sys.html#sys.settrace

和一个示例:

https://pymotw.com/2/sys/tracing.html

请注意,传递给settrace的函数必须返回对自身的引用(或对另一个函数的引用,以便在该范围内进行进一步的跟踪)。