디버거와 동시에 저주를 사용하십니까?
-
19-09-2019 - |
문제
전화 해요 python -m pdb myapp.py
, 예외가 발생하고, 일반적으로 문제를 조사하기 위해 PDB 통역사에게 다시 던져 질 때. 그러나이 예외는 내가 전화 한 후에 발생합니다. curses.wrapper()
PDB 통역사를 쓸모없는 저주 모드로 입력했습니다. 이 문제를 어떻게 해결할 수 있습니까?
해결책
James의 대답은 좋고 나는 그것을 발전 시켰지만 나는 또한 내 프로그램의 논리와 프리젠 테이션 레이어를 나누려는 것을 고려할 것입니다. Curses 부품을 라이브러리 위에 얇은 레이어를 유지하고 올바른 루틴을 호출하여 오류를 재현하는 간단한 드라이버를 작성하십시오. 그런 다음 다이빙을하고 필요한 일을 할 수 있습니다.
내가 생각할 수있는 또 다른 방법은 debug
또는 당신을 일반 화면으로 다시 던지고 PDB를 호출하는 것. 그런 다음 예외를 제기하고 프로그램을 실행하는 코드 바로 전에 고수하십시오. 같은 것
def debug(stdscr):
curses.nocbreak()
stdscr.keypad(0)
curses.echo()
curses.endwin()
import pdb; pdb.set_trace()
분명히 이것은 curses.wrapper
기능. 간단히 언급되어 있습니다 http://www.amk.ca/python/howto/curses/.
다른 팁
파이썬에 익숙하지 않으면 이것이 바로 당신이 원하는 것이 아닐 수도 있습니다. 그러나 분명히 WinPDB는 GDB가 실행중인 프로세스 (IIUC)에 캔과 마찬가지로 스크립트에 첨부 할 수 있습니다.
http://winpdb.org/docs/launch-time/
이름으로 오도하지 마십시오. 플랫폼 독립적입니다.
pyclewn을 사용하십시오
당신이 사용할 수있는 pyclewn Vim과 함께. 또는 pdb-clone, pyclewn의 핵심, 좋은 GDB, 원격 디버그를 사용할 수 있습니다.