내 디버깅 요구에 pdb
대해서는 꽤 좋습니다. 그러나 내가 들어갈 수 있다면 훨씬 더 시원하고 도움이 될 것 ipython
입니다. 이것이 가능합니까?
답변
ipdb
iPython을 표준 pdb에 포함 하는 프로젝트가 있으므로 다음과 같이 할 수 있습니다.
import ipdb; ipdb.set_trace()
일반적인 .NET을 통해 설치할 수 pip install ipdb
있습니다.
ipdb
매우 짧기 때문에 easy_installing 대신 ipdb.py
Python 경로에 파일을 만들고 다음을 파일에 붙여 넣을 수도 있습니다.
import sys
from IPython.Debugger import Pdb
from IPython.Shell import IPShell
from IPython import ipapi
shell = IPShell(argv=[''])
def set_trace():
ip = ipapi.get()
def_colors = ip.options.colors
Pdb(def_colors).set_trace(sys._getframe().f_back)
답변
IPython 0.11에서는 다음과 같이 코드에 직접 IPython을 포함 할 수 있습니다.
프로그램은 다음과 같을 수 있습니다.
In [5]: cat > tmpf.py
a = 1
from IPython import embed
embed() # drop into an IPython session.
# Any variables you define or modify here
# will not affect program execution
c = 2
^D
이것은 당신이 그것을 실행할 때 일어나는 일입니다 (기존 ipython 세션 내에서 임의로 실행하기로 선택했습니다. 내 경험에서 이와 같은 ipython 세션을 중첩하면 충돌이 발생할 수 있습니다).
In [6]:
In [6]: run tmpf.py
Python 2.7.2 (default, Aug 25 2011, 00:06:33)
Type "copyright", "credits" or "license" for more information.
IPython 0.11 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: who
a embed
In [2]: a
Out[2]: 1
In [3]:
Do you really want to exit ([y]/n)? y
In [7]: who
a c embed
답변
최신 버전의 IPython (> 0.10.2)을 사용하는 경우 다음과 같이 사용할 수 있습니다.
from IPython.core.debugger import Pdb
Pdb().set_trace()
하지만 ipdb를 사용하는 것이 더 낫습니다.
답변
동등한
import pdb; pdb.set_trace()
IPython은 다음과 같습니다.
from IPython.ipapi import make_session; make_session()
from IPython.Debugger import Pdb; Pdb().set_trace()
약간 장황하지만 ipdb가 설치되어 있지 않으면 알아두면 좋습니다. make_session
등, 색 구성표를 설정하면 통화가 필요하며, set_trace
호출 배치 할 수 있습니다 어디서나 당신은 휴식해야합니다.
답변
일반적으로 ipython을 사용할 때 내부에 “pdb”명령을 사용하여 자동 디버깅을 설정합니다.
그런 다음 스크립트가있는 디렉토리에서 “run myscript.py”명령을 사용하여 스크립트를 실행합니다.
예외가 발생하면 ipython은 디버거 내에서 프로그램을 중지합니다. 매직 ipython 명령 (% magic)에 대한 도움말 명령을 확인하십시오.
답변
중단 점을 설정하려는 스크립트에이 한 줄을 간단히 붙여넣고 싶습니다.
__import__('IPython').Debugger.Pdb(color_scheme='Linux').set_trace()
최신 버전은 다음을 사용할 수 있습니다.
__import__('IPython').core.debugger.Pdb(color_scheme='Linux').set_trace()
답변
최근에 모듈이 뒤섞인 것 같습니다. IPython 0.13.1에서 다음은 나를 위해 작동합니다.
from IPython.core.debugger import Tracer; breakpoint = Tracer()
breakpoint() # <= wherever you want to set the breakpoint
아아, qtconsole에서는 모두 쓸모가 없습니다 .