Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.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_Debugging_Trace_Sys - Fatal编程技术网

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

Python 如何自动跟踪所有函数调用和参数?,python,debugging,trace,sys,Python,Debugging,Trace,Sys,为了为我的代码构建一个专门的调试器,我想跟踪代码中的一些函数,并记录它们在每次调用中收到的参数 我希望能够做到这一点,而无需为每个函数添加代码行,甚至不需要为所有函数添加装饰器,而是在整个运行过程中设置跟踪 这与在sys模块中使用sys.settrace可以执行的操作有些类似: 但据我所知,跟踪不包括函数的参数 所以我想写一个函数,看起来像这样: def tracing_func(func_name, args): if func_name in ['func', 'foo']:

为了为我的代码构建一个专门的调试器,我想跟踪代码中的一些函数,并记录它们在每次调用中收到的参数

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

这与在sys模块中使用sys.settrace可以执行的操作有些类似:

但据我所知,跟踪不包括函数的参数

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

def tracing_func(func_name, args):
    if func_name in ['func', 'foo']:
         log_func_args(func_name, args)
其中log_func_args将其记录在一个文件中以供以后分析

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


可以这样做吗?

好的,因此sys.settrace很好地实现了这一点:

举个例子:


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

这可能会有所帮助:它似乎只适用于异常。。。我想跟踪所有函数调用(及其参数!)。。。