在python中,我很难调试警告。我想让调试器在这些警告发生时中断,这样我就可以查看变量了。但是我不想把它们变成错误(使用python -W error myprogram.py),因为我希望能够恢复程序执行/忽略其中的一些错误。
python -W error myprogram.py
x759pob21#
在此anwser上构建,您可以通过以下方式实现:1.将用于打印警告的默认函数更改为自定义函数1.在其中的任意位置设置一个普通断点(使用您最喜欢的调试器/ IDE)1.使用调试器在堆栈中向上移动一级,退出警告打印功能,并转到实际生成警告的位置这是一个示例,自定义警告打印功能:
import traceback import warnings import sys def warn_with_traceback(message, category, filename, lineno, file=None, line=None): # Set a BREAKPOINT on any of these lines below ! log = file if hasattr(file,'write') else sys.stderr traceback.print_stack(file=log) log.write(warnings.formatwarning(message, category, filename, lineno, line)) warnings.showwarning = warn_with_traceback
字符串此特定函数还显示错误的追溯。这对调试总是很有帮助的。
1条答案
按热度按时间x759pob21#
在此anwser上构建,您可以通过以下方式实现:
1.将用于打印警告的默认函数更改为自定义函数
1.在其中的任意位置设置一个普通断点(使用您最喜欢的调试器/ IDE)
1.使用调试器在堆栈中向上移动一级,退出警告打印功能,并转到实际生成警告的位置
这是一个示例,自定义警告打印功能:
字符串
此特定函数还显示错误的追溯。这对调试总是很有帮助的。