2014-02-16 5 views
11

python.el을 사용하고 있습니다. 메뉴에서 '디버거'를 선택하고 'python -m pdb myfile.py'를 입력하면 gud가 시작되고 a split frame 나는 (Pdb) 프롬프트를 보았고, 파이썬 코드는 첫 번째 줄에 캐럿이있는 다른 파이썬 코드로 나타낼 준비가되었음을 나타냅니다. 예를 들어 'n'단계는 다음 행으로 넘어 가서 캐럿이 그에 따라 이동합니다.코드에서 명시 적 중단 점없이 emacs의 gud와 함께 ipdb 사용하기

대신 'python -m ipdb myfile.py'를 입력하면 프레임이 분할되고 하나의 분할은 gud로 표시되지만 ipdb 콘솔은 분명하지 않습니다. 즉, ipdb를 시작하는이 방법은 효과가없는 것 같습니다. Ipdb는 ipdb.set_trace()를 사용하여 파이썬 코드에 수동으로 중단 점을 삽입하면 gud 인터페이스를 사용하지 않는다는 점을 제외하고는 잘 작동합니다. 이것은 의도적으로 ipdb의 스택 트레이스가 잘 동작 할까?

그렇다면 괜찮습니다. 수동으로 set_trace() 명령을 추가하지 않고 이맥스에서 ipdb를 시작할 수 있습니까? 여기

+0

ipdb.set_trace()가 제대로 동작하지 않습니다. 단지 멈 춥니 다. 어떤 버전의 IPython과 emacs를 사용하고 있습니까? 다른 사람들도 같은 문제가있는 것 같습니다 : http://stackoverflow.com/questions/29425325/using-ipdb-for-debugging-python-inside-emacs –

답변

5

이 기본적인 문제는 하느님의이 방법을 묻는 메시지를 표시하지 않습니다 ipdb 프롬프트 (Pdb)을 찾고 있다는 점이다. 이 문제를 해결하는 방법에는 세 가지가 있습니다 :하는 (Pdb) 프롬프트를 제공하기 위해 ipdb 를 해결 하느님의(Pdb) 또는 (내가 좋아하는)를 찾을 필요 없습니다 해결하려면 하느님의 측면이나 ipdb에 뭔가 하나를 사용하여 측면. 하느님을 고정와

문제는 목록과 단점 세포 이외의 다른 사용할 수 이맥스 리스프 데이터 구조를 활용 전역 변수를 사용하지 않고 오래 내 마음에 조금 삐걱 거리는 것입니다. gud의 총 재 작성은 realgud이라고하며, 현재 MELPA에 있으며 어떤 시점에서 ELPA에도 적용됩니다. 그러나 지금은 ipdb를 지원하지 않습니다. 그래도 instructions for how one would add ipdb support이 있습니다.

두 번째 옵션은 다른 것을 사용하므로 내가 이미 realgud (그러나 하느님의 내가 막 다른 것을 생각하기 때문에)에 통합 된 Python trepan debugger을 제안하도록하는 것입니다. backtraces는 ipdb와 정확히 같지 않지만 소스 코드와 소스 코드를 색칠합니다.

+0

trepan 디버거는 파이썬 3 전용입니다. 그 맞습니까? – garyp

+0

그것은 python3과 python2 모두에서 작동하며 실제로 통계는 python2에서 많이 사용되었음을 보여줍니다. python2를 설치하려면 :'pip install trepan'. python3을 설치하려면 :'pip install trepan3k'. – rocky

+0

고마워요. 묻는 내 이유를 언급해야 했어. 게시 한 pypi 링크는 "Trepan 패밀리에있는 GDB와 유사한 Python3 디버거"라는 단어로 시작하며 그 이상의 명확한 진술은 찾을 수 없습니다. – garyp