Python 如何自动跟踪所有函数调用和参数?
为了为我的代码构建一个专门的调试器,我想跟踪代码中的一些函数,并记录它们在每次调用中收到的参数 我希望能够做到这一点,而无需为每个函数添加代码行,甚至不需要为所有函数添加装饰器,而是在整个运行过程中设置跟踪 这与在sys模块中使用sys.settrace可以执行的操作有些类似: 但据我所知,跟踪不包括函数的参数 所以我想写一个函数,看起来像这样:Python 如何自动跟踪所有函数调用和参数?,python,debugging,trace,sys,Python,Debugging,Trace,Sys,为了为我的代码构建一个专门的调试器,我想跟踪代码中的一些函数,并记录它们在每次调用中收到的参数 我希望能够做到这一点,而无需为每个函数添加代码行,甚至不需要为所有函数添加装饰器,而是在整个运行过程中设置跟踪 这与在sys模块中使用sys.settrace可以执行的操作有些类似: 但据我所知,跟踪不包括函数的参数 所以我想写一个函数,看起来像这样: def tracing_func(func_name, args): if func_name in ['func', 'foo']:
def tracing_func(func_name, args):
if func_name in ['func', 'foo']:
log_func_args(func_name, args)
其中log_func_args将其记录在一个文件中以供以后分析
然后将此函数设置为在调用代码中的任何函数时调用,并使用函数的名称和参数
可以这样做吗?好的,因此sys.settrace很好地实现了这一点: 举个例子:
请注意,传递给settrace的函数必须返回对自身的引用(或对另一个函数的引用,以便在该范围内进行进一步跟踪)。这可能会有所帮助:它似乎只适用于异常。。。我想跟踪所有函数调用(及其参数!)。。。