打印错误堆栈跟踪信息时,是否可以在调用堆栈中打印传递给函数的参数值?
示例:
Traceback (most recent call last):
File "./file.py", line 615, in func0 **(arg0) arg0 = 0 was passed**
result = func1(arg1, arg2)
File "./file.py", line 728, in func1 **(arg1, arg2) arg1 = 1 and arg2 = 2 was passed**
return int_value[25]
TypeError: 'int' object is not iterable
我希望除了堆栈跟踪中的正常输出外,还打印上面**中的信息。通常不是。
我搜索了很多,发现了以下相关问题:
但是他们两个人的答案都对我没有用:第一个答案导致了ModuleNotFoundError: No module named 'stackdump'
。第二个崩溃了我的ipython
解释器。
我也抬起头来:
capture_locals
似乎有TracebackException
变量,但我不太了解如何使用它。
可能存在更好的替代方法,但是您可以为此使用装饰器:
def print_stack_arguments(func):
def new_func(*original_args, **original_kwargs):
print('Function: ', func.__name__)
print('Args: ', original_args)
print('Kwargs: ', original_kwargs)
return func(*original_args, **original_kwargs)
return new_func
@print_stack_arguments
def print_error(value):
raise Exception('Any exception')
print_error('testing exception')