2013-02-19 2 views
2

ipdb로 파이썬 스크립트를 디버깅하고 있습니다. 어쨌든 명령을 입력 한 후, 예를 들어 n, s, c, b 등과 같이 문제가 발생했습니다. Ctrl + D을 두 번 눌러 명령을 처리하고 계속 진행해야합니다.ipdb 명령 처리를 위해 Ctrl + D가 필요합니다.

무엇이 원인이 무엇입니까? 내가 어떻게 꺼낼 수 있습니까??

+0

는 @EricLeschinski 예, 나는 그것을 참조하십시오. 내 문제가 해결되지 않는다고 생각하지만 그렇지 않습니까? – RevMoon

답변

2

이 효과 ipdb하는 격리되지 :

기술적 Ctrl 키 D가 송신을 종료하고,이 빈 입력 버퍼 을 초래하는 경우에만 EOF를 일으킨다. 어떤 문자를 입력하기 전에 Ctrl-D 키를 누를 때만 발생합니다.

1. At the linux terminal type cat 
2. press enter once. 
3. enter letters: foo 
4. press <Ctrl-D> once, you don't get back to the terminal. 
5. press <Ctrl-D> again, you are brought back to the terminal. 

그래서 그것은 다음과 같습니다 : 당신이 그것을 누르면 처음 입력을 플러시 때문에

[email protected] ~ $ cat 
[email protected] ~ $ 

foo는 두 번 인쇄

이 실험을 수행. 두 번째로 프로그램을 끝내기로 해석합니다.

는 당신이 Ctrl-D를를 누르면됩니다 TTY에 연결하지 마십시오 :이 동작을 중지하는 방법

. 즉, 일반적인 리눅스 터미널을 사용하지 마십시오. 이것이 가능한지 확실하지 않습니다. ipdb

여기에 비디오로 그림과 같이 명령을 처리해야 Enter 키를 눌러에 명령을 처리하는 방법

: 그것은 중간 대기 인하, Ctrl+D 프로그램을 죽이지 않습니다 http://www.gregaker.net/2012/apr/05/debugging-python-with-pdb-or-ipdb/

+0

고마워, 내가 TTY에 연결되어서는 안된다는 것은 무엇을 의미합니까? 나는 두 가지 방법으로 디버깅을 시작한다. (1) 콘솔에서'ipdb myscript.py'를 입력하고 (2)'import ipdb; 내 스크립트 실행에 pdb.set_trace()는''파이썬은 – RevMoon

1

이는 일이 을 통하여. Ctrl+D을 누르면 입력 대기중인 프로세스의 'read()'호출이 중단됩니다. 그들이 입력으로 0 바이트를 읽을 때

Ctrl 키 + D

대부분의 프로그램은 중단됩니다. 아무 것도 입력하기 전에 Ctrl+D을 입력하면 입력 파이프 아래로 0 바이트가 전송되고 은 프로그램이 종료 될 때까지을 유도하므로 수행 할 작업이 남아 있지 않을 수도 있습니다. 이것은 이 아니며 강제입니다.

그러나 일부 키를 누른 다음 Ctrl+D을 누르면 중단 된 호출 read()이 해당 텍스트를 반환하고 기본 프로그램이 다른 라운드를 대기하기로 결정합니다.

새 텍스트를 입력하지 않고 Ctrl+D을 다시 입력하면 예상대로 동작합니다.

귀하의 경우

이 아마 무슨 일이 일어나고 있는지입니다 : 당신은 몇 가지 문자를 입력

  1. 는, 그들은 버퍼링 얻을.

  2. 당신 Ctrl+D. 텍스트는 iPdb에 도달하지만 줄 바꿈을 검색하지 않으므로 더 기다립니다.

  3. 다시 Ctrl+D. 오는 아무것도를지지 않으며 또는 줄 바꿈없이 텍스트를 처리 0 바이트 iPdb에 도달이 시간.

+0

을 myscript.py' 어떻게 내가 ipdb/콘솔 내가 Enter 키를 누르 후 읽기를 알 수 있습니까? – RevMoon

+0

기본 동작이어야합니다. Windows에 있습니까? 키보드/터미널에 잘못 설정되어 있습니까? Enter 키를 누를 때 잘못된 문자가 전송 된 것일 수 있습니다. – slezica

+0

아니요, 저는 우분투 12.04입니다. Mac OS X에서 우분투를 VM으로 사용할 때의 오작동이 있다고 상상해보십시오. – RevMoon

관련 문제