在PyCharm中以调试模式“部分”运行代码

时间:2018-08-08 17:56:54

标签: python pycharm

我想在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)

2 个答案:

答案 0 :(得分:2)

可能,您可以在API调用运行时使用sys.gettracesys.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)

您可以右键单击断点并设置条件enter image description here