我想在PyCharm中以调试器模式运行一些Python代码。我的代码包括一个API函数调用,由于某种原因,单个函数调用在调试器模式下将永远存在。
我真的不在乎调试特定功能,让调试器跳过该功能(仅在常规模式下运行)是可以的。但是,我希望能够在调试模式下运行其余代码。
这在PyCharm中是否可行,还是有任何Python解决方法?
# some code to be run in debugger mode, e.g.
func_a(obj_a) #this function modifies obj_a
# some API function call, super slow in debugger mode. can I just run this part in run mode? e.g.
obj_b = api_func(obj_a)
# rest of the code to be run in debugger mode e.g.
func_c(obj_b)
答案 0 :(得分:2)
可能,您可以在API调用运行时使用sys.gettrace
和sys.settrace
删除调试器,尽管不建议这样做,如果您这样做,PyCharm会向您抱怨:
PYDEV调试器警告:
使用调试器时,不应使用sys.settrace()。
这可能会导致调试器无法正常工作。
如果需要,请检查:
http://pydev.blogspot.com/2007/06/why-cant-pydev-debugger-work-with.html
了解如何正确还原调试跟踪。
对于您而言,您将执行以下操作:
import sys
# some code to be run in debugger mode, e.g.
func_a(obj_a) #this function modifies obj_a
# Remove the trace function (but keep a reference to it).
_trace_func = sys.gettrace()
sys.settrace(None)
# some API function call, super slow in debugger mode. can I just run this part in run mode? e.g.
obj_b = api_func(obj_a)
# Put the trace function back.
sys.settrace(_trace_func)
# rest of the code to be run in debugger mode e.g.
func_c(obj_b)
我强烈建议 尽量保持禁用调试器时运行的代码。
答案 1 :(得分:0)