Python 자체 디버거 (PDB) 내에서 여러 줄 명령문을 실행하는 방법
그래서 나는 파이썬 스크립트를 실행하고 있는데 파이썬 스크립트를 PDB라고 부릅니다.
import ipdb; ipdb.set_trace()
(iPython의 PDB 버전은 차이가 없다고 생각하지만 컬러 출력에만 사용합니다).
이제 디버거에 도착하면 if 절이나 for 루프와 같은 여러 줄 문을 실행하려고하지만 입력하자마자
if condition:
리턴 키를 누르면 오류 메시지가 나타납니다. *** SyntaxError: invalid syntax (<stdin>, line 1)
PDB 내에서 여러 줄로 된 문장을 어떻게 실행할 수 있습니까? 가능하지 않은 경우 if 절이나 for 루프를 계속 실행하는 방법이 있습니까?
pdb에서 사용 가능한 모든 로컬 변수를 사용하여 임시 대화식 Python 세션을 시작하는 동안이 작업을 수행 할 수 있습니다.
(pdb) !import code; code.interact(local=vars())
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
완료되면 Ctrl-D를 사용하여 일반 pdb 프롬프트로 돌아갑니다.
Ctrl-C를 누르지 않으면 전체 pdb 세션이 종료됩니다.
python3 ipdb
(및 pdb
)에는 interact 이라는 명령이 있습니다. 다음과 같은 용도로 사용할 수 있습니다.
글로벌 네임 스페이스에 현재 범위에서 찾은 모든 (글로벌 및 로컬) 이름이 포함 된 대화식 인터프리터 ( 코드 모듈 사용)를 시작하십시오 .
사용하려면 interact
pdb 프롬프트에서 간단히 입력하십시오 . 무엇보다도 여러 줄에 걸친 코드를 적용하고 실수로 다른 pdb 명령이 트리거되는 것을 피하는 데 유용합니다.
Python (2.7.1) 인터프리터 또는 디버거 (import pdb) 내에서 다음 구문으로 여러 줄 명령문을 실행할 수 있습니다.
for i in range(5): print("Hello"); print("World"); print(i)
참고 : 인터프리터 안에있을 때 코드가 실행되기 전에 return을 두 번 눌러야합니다. 그러나 디버거 내에서는 return을 한 번만 누르면됩니다.
내 권장 사항은 IPython 포함을 사용하는 것입니다.
python
ipdb> from IPython import embed; embed()
중단 점에 도달 할 때 몇 개의 명령을 실행하려는 경우 특별한 경우가 있습니다. 그런 다음 디버거 명령이 commands
있습니다. 여러 줄의 명령을 입력 한 다음 end
키워드로 전체 시퀀스를 끝낼 수 있습니다. 로 더 (pdb) help commands
.
이 작업을 수행 할 수 있는지 모르겠지만 ipdb의 훌륭한 기능입니다. 물론 목록 이해를 사용하고 다음과 같은 간단한 여러 줄 표현을 실행할 수 있습니다.
if y == 3: print y; print y; print y;
일반적으로 여러 줄이 필요한 작업을 수행하기 위해 미리 함수를 작성할 수도 있습니다.
텍스트 편집기에서 코드를 작성한 다음 디버거에 붙여 넣으십시오.
if True:
print('a')
그것은 어리석은 해결책이지만 더럽고 빠른 작업입니다. Linux 터미널에서 작동하지만 Windows 콘솔에서 작동하는지 확실하지 않습니다.
'Programing' 카테고리의 다른 글
페이지가 화면보다 큰 경우 화면 중간에 div를 배치하는 방법 (0) | 2020.06.27 |
---|---|
64 비트 Windows에 SetupTools 설치 (0) | 2020.06.27 |
Entity Framework Code First에서 객체를 분리하려면 어떻게해야합니까? (0) | 2020.06.27 |
C # 문자열에서 문자 제거 (0) | 2020.06.27 |
"코 루틴"과 "스레드"의 차이점은 무엇입니까? (0) | 2020.06.27 |