할 수 있습니어점에서 실행되는 프로그램하는 방울을 대화형 터미널?

나는'm 확실하지 않으면 내가 무엇'm 요청이 가능한 모든지만,이후 파이썬은 통역 수 있습니다. 나는'm 만들려고 변화하는 오픈 소스 프로젝트만 있기 때문에 더 유형에 python it's 을 알고 어려운 변수가 있으로 데이터가 무엇인지 알 수 있습니다. 할 수 있't just look up the documentation var's 입력할 수 있기 때문'해야 합니다 그것이 어떤 종류입니다. 고 싶은 드롭게 터미널 할 수 있도록 빠르게 검사하 유형 변수의 그들은 무엇을 입력하여 도움(var)또는 인쇄(var). 내가 이것을 할 수 있을 변경하여 코드고 다시 프로그램을 실행하는 각하시는 것이 훨씬 느리게됩니다.

Let's 가 프로그램:

def foo():
    a = 5
    my_debug_shell()
    print a

foo()

my_debug_shell 기능이 나는'm 요구에 대해입니다. 그것은 나에게 하는'>>>'쉘의 파이썬할 수 있는 도움말을 입력(a),그리고 그것은 내게 말할 것입니다 정수입니다. 그때 나는 형식'a=7',일부는'계'명령,프로그램을 인쇄 7,5 없기 때문에,내가 그것을 변경.

질문에 대한 의견 (1)
해결책

http://docs.python.org/library/pdb.html

import pdb
pdb.set_trace()
해설 (7)

여기에는 솔루션이지 않는't 코드를 변경해야 하:

python -m pdb prog.py 
(pdb) b 3
Breakpoint 1 at prog.py:3
(pdb) c
...
(pdb) p a
5
(pdb) a=7
(pdb) ...

에서 짧은:

시작 프로그램 디버거에서 제어 -브레이크 포인트를 설정에서 지정된 코드의 라인 -프로그램을 실행하는점 -당신은 당신을 얻을 대화형 프롬프트는's 당신은 당신이 원하는 무엇(입력'help'에 대한 모든 옵션)

해설 (5)

A한-라인부분적인 해결책은 단순히 넣어1/0당신이 원하는 곳 중단점 이 예외를 발생시키는 것에 의해 발견되고 디버거. 두는 이러한 접근법의 장점은:

-점이 설정 방법에 대해 강력한 코드 수정(에 의존하지 않은 특정 라인 수);

하이 필요하지 않가져오기 pdb에서 모든 프로그램 디버깅할;할 수 있는 대신 직접 삽"점"이 필요합니다.

을 잡기 위해 예외를 자동으로 단순히 할 수 있python-m pdb prog.py...,그리고 유형c(ontinue)기 위해서는 프로그램을 시작합니다. 을 때1/0에 도달하면 프로그램을 종료,하지만 변수를 조사할 수 있습으로pdb디버거(p my_var). 지금 이를 허용하지 않을 수정하는 것 and 유지 running 프로그램입니다. 대신할 수 있습려고 버그를 수정하고 프로그램을 다시 실행합니다.

를 사용하려면 강력한만큼쉘,만큼-pdb prog.py...같은 일이지만,리만큼's 은 더 나은 디버거 인터페이스입니다. 또는,당신은 모든 것을 할 수 있습니다 내에서만큼 쉘:

-에만큼 설정,"디버그에는 예외"의 형태만큼(%pdb). -프로그램을 실행에서만큼으로%실행 prog.py.... 예외가 발생하면,디버거가 자동으로 활성화되고 검사할 수 있는 변수,등등.

의 장점 이 후자의 접근 방식은(1)만큼 포탄은 거의해야 하며(2)이 설치되면,디버깅을 쉽게 할 수 있습을 통해 그것은(대신 직접을 통해 pdb 모듈). 전체 문서에서 사용할 수 있는만큼 페이지입니다.

해설 (3)

파이썬3.7는 새로운 내장 방식의 설정 중단점.

breakpoint()

의 구현점()가져오기 pdb호출pdb.set_trace().

기억을 포함하는 중괄호(),문점`은 없는 함수 키워드가 있습니다.

해설 (0)

프로그램을 실행할 수 있습니다 사용하여 pdb 며,중단점을 추가 시작하기 전에 실행합니다.

하지만 현실에서,it's 일반적으로 빠르고 편집하는 코드고에 넣어 set_trace()호출,다른 사용자로 언급했다.

해설 (0)

이 무엇인지 확실하지 않은 진짜 문제입니다. Python 제'pdb'디버거(구글 자)외에 추가할 수 있습 로깅 및 디버그 출력으로 필요합니다.

해설 (1)