2017-11-16 18 views
0

matlab처럼 Jupyter에서 디버그 모드에서 실행이 중단 점에서 중단되고 실행 모드에서 함수가 중단 점을 무시할 가능성이 있습니까?Jupyter에서 디버그 및 실행 모드

from IPython.core.debugger import set_trace 

def debug(y): 
    x = 10 
    x = x + y 
    set_trace() 
    for i in range(10): 
     x = x+i 
    return x 

debug(10) 

같은 간단한 예에서 은 우리가 set_trace가 무시되고 기능이 정상적으로 실행되도록 함수를 호출 할 가능성이있다?

필자는이 기능을 사용하기 위해 많은 설정 추적을 배치 했으므로 추적없이 실행하려면 모든 설정 추적에 주석을 달아야한다는 이유가 있습니다. 더 쉬운 방법이 있습니까?

+0

[Spyder] (https://pythonhosted.org/spyder/)를 고려하셨습니까? 그것은 Matlab과 비슷한 인터페이스를 가지고 있습니다. –

+0

저는 실제로 제 일을 위해 노트북을 사용하고 있습니다. – Waleed

답변

2

Jupyter에서 직접 할 수있는 방법을 모르겠지만 원숭이 패치 set_trace()은 이렇게 작성했습니다. (자 셀에 이것을 넣으면 재실행 할 것을 권장합니다. 그것을 위해 당신은) 다시 디버깅을 설정하고자 할 때 :이 무엇

from IPython.core.debugger import set_trace 
debug_mode = False #switch this to True if you want debugging back on 
if not debug_mode: 
    def pass_func(): 
    pass 
    set_trace = pass_func 

는 그냥 pass를, 그래서 때마다 set_trace()가 호출 단순히 아무것도하지 않는 기능을,로 이름 set_trace를 리 바인드입니다.

디버깅을 다시 사용하려면 debug_mode 플래그를 True으로 전환하고 셀을 다시 실행하십시오. 그러면 이름 set_traceIPython.core.debugger에서 가져온 set_trace으로 리 바인드됩니다.

+0

저를 위해 일하십시오! 감사 :) – Waleed