【发布时间】:2018-05-16 03:51:47
【问题描述】:
使用 pydevd,有没有一种方法可以直接从运行时代码(而不是从调试服务器)打开和关闭挂起未捕获异常的代码,类似于添加 pydevd.settrace() 作为断点的方式?
基本上,我有一个大型应用程序,它使用生成器和线程来处理和操作大量数据。因此,手动设置断点可能非常麻烦。目前我将检查堆栈跟踪,检查代码,并尝试构造一个条件pydevd.settrace(),希望只有在遇到违规场景时才会触发。这需要反复试验。
我想做的是制作(或使用)一个上下文管理器并像这样包装有问题的代码
with pydevd.suspend_on_exception():
... code causing eventual exception ...
我已经挖掘了 pydevd 代码,并尝试了(没有运气)各种咒语来尝试模拟我认为远程调试器正在做的事情。我认为以下内容会让我接近,但没有骰子。
debugger = pydevd.get_global_debugger()
ex = debugger.add_break_on_exception('Exception', True, True, False, True)
debugger.update_after_exceptions_added([ex])
debugger.enable_tracing_in_frames_while_running_if_frame_eval()
我正在使用 pydevd 连接到 PyCharm 远程调试服务器,以防对解决方案产生影响。
【问题讨论】:
标签: python pycharm pydev remote-debugging