iPython 노트북에서 디버그하는 올바른 방법은 무엇입니까?
제가 알기로는.%debug magic
하나의 셀 내에서 디버그를 수행할 수 있습니다.
하지만 여러 개의 셀에 걸쳐 함수 호출이 있습니다.
예를들면,
In[1]: def fun1(a)
def fun2(b)
# I want to set a breakpoint for the following line #
return do_some_thing_about(b)
return fun2(a)
In[2]: import multiprocessing as mp
pool=mp.Pool(processes=2)
results=pool.map(fun1, 1.0)
pool.close()
pool.join
시도한 내용:
설정하려고 했습니다.
%debug
1에.그러나 셀-2를 실행하기도 전에 바로 디버그 모드로 들어갑니다.추가하려고 했습니다.
%debug
앞return do_some_thing_about(b)
되고 절대 않습니다 하지만 코드는 영원히 실행되고 절대 멈추지 않습니다.
ipython 노트북에서 중단점을 설정하는 올바른 방법은 무엇입니까?
합니다.ipdb
주피터 내부에 위치:
from IPython.core.debugger import Tracer; Tracer()()
편집: 위의 기능은 IPython 5.1 이후로 더 이상 사용되지 않습니다.이것이 새로운 접근 방식입니다.
from IPython.core.debugger import set_trace
더하다set_trace()
당신이 필요로 하는 곳에서.ehelp
위해서ipdb
입력 필드가 나타나면 명령을 실행합니다.
ipdb 사용
다음을 통해 설치
pip install ipdb
용도:
In[1]: def fun1(a):
def fun2(a):
import ipdb; ipdb.set_trace() # debugging starts here
return do_some_thing_about(b)
return fun2(a)
In[2]: fun1(1)
줄 단위로 실행하는 경우와 함수로 들어가는 단계의 경우 사용하고 디버깅 프롬프트에서 종료하는 경우 사용합니다.
사용 가능한 명령의 전체 목록: https://appletree.or.kr/quick_reference_cards/Python/Python%20Debugger%20Cheatsheet.pdf
파이썬 3.7에서는 breakpoint() 함수를 사용할 수 있습니다.그냥들어가기
breakpoint()
런타임을 중지하고 싶은 곳에서 동일한 pdb 명령(r, c, n, ...)을 사용하거나 변수를 평가할 수 있습니다.
반환 함수는 def 함수(메인 함수)에 해당되며, 한 개의 탭을 제공해야 합니다.그리고 사용
%%debug
대신에
%debug
라인 뿐만 아니라 전체 셀을 디버그합니다.희망, 아마 이게 당신에게 도움이 될 겁니다.
모든 셀에 항상 추가할 수 있습니다.
import pdb; pdb.set_trace()
디버거가 그 선에서 멈출 겁니다예를 들어,
In[1]: def fun1(a):
def fun2(a):
import pdb; pdb.set_trace() # debugging starts here
return fun2(a)
In[2]: fun1(1)
한 후 에서 만 실행합니다.%debug
그리고 이것이 마지막입니다.
마법 명령어도 사용하기 좋습니다.그냥 말해요.%pdb on
에도 pdb
디버거는 콜 스택의 깊이에 관계없이 모든 예외에 대해 실행됩니다.아주 편리합니다.
경우가 , 하거나(!) %debug
다른 사람들이 제안해온 마법 명령.
만 하면 됩니다.import pdb
주피터 노트북에 저장된 다음 이 치트시트를 사용하여 디버그합니다.아주 편리합니다.
c
--> 계속합니다.s
-->계,b 12
--> 행 으로 설정합니다.--> 12번을합니다입니다.
몇 가지 유용한 링크:pdb에 관한 파이썬 공식 문서, 파이썬 pdb 디버거 예는 디버거 명령을 사용하는 방법을 더 잘 이해하기 위한 것입니다.
유용한 스크린샷 몇 가지:
방금 픽시디버거를 발견했습니다.아직 테스트할 시간이 없었음에도 불구하고 ipdb로 ipython에서 사용하는 방법을 디버깅하는 것이 가장 비슷한 방법인 것 같습니다.
또한 "평가" 탭이 있습니다.
네이티브 디버거가 주피터랩의 확장으로 제공되고 있습니다.몇 주 전에 출시된 이 버전은 xeus-python 커널(ipykernel 사용자에게 잘 알려진 마법 없이 제공됨) 뿐만 아니라 관련 확장 기능을 제공하여 설치할 수 있습니다.
jupyter labextension install @jupyterlab/debugger
conda install xeus-python -c conda-forge
이를 통해 다른 IDE와 잘 알려진 시각적 디버깅 경험이 가능합니다.
출처 : 주피터용 시각 디버거
VsCode에서
파일 -> Preferences -> Settings -> Open Settings (JSON) [오른쪽 위 작은 페이지 아이콘]
이 코드 줄을 끝에 붙여넣기
"jupyter.experimental.debugging": true
이제 상단 탐색 모음에 디버그 옵션이 표시됩니다.
언급URL : https://stackoverflow.com/questions/32409629/what-is-the-right-way-to-debug-in-ipython-notebook
'programing' 카테고리의 다른 글
상품을 추가할 때 우커머스 상품 카테고리가 누락(표시되지 않음)되었습니다. (0) | 2023.10.16 |
---|---|
문자열에서 숫자가 아닌 문자를 모두 빨리 제거 (0) | 2023.10.16 |
주 ()에 있는 주 ()를 c로 호출하기 (0) | 2023.10.16 |
WooCommerce 3의 상점 페이지에 있는 상품 페이지에 더 연결된 읽기로 카트에 추가하기 버튼 바꾸기 (0) | 2023.10.16 |
%NOTFOUND가 페치 후 null을 반환할 수 있습니까? (0) | 2023.10.16 |