PDB 중단 점을 Python 코드에 넣는 더 간단한 방법?
편의 질문입니다. 저는 Visual Studio 및 XCode와 같은 IDE의 디버거로 인해 약간 망쳐되었습니다. import pdb; pdb.set_trace()
중단 점을 설정 하기 위해 입력해야하는 것이 약간 어색하기 때문에 알았습니다 (파일 상단에 pdb를 오지 않고 잊어 버릴 수도 있습니다).
IDE에서 보는 것만 보는 큼 간단하고 눈에 많은지 않는 Python 코드에서 중단 점을 설정하는 더 간단한 방법이 있습니까?
다음을 실행하여 pdb
명령 줄에서 프로그램을 사용할 수 있습니다.
python -m pdb your_script.py
첫 번째 줄에서 중단 된 다음 break
명령을 사용하여 코드에서 원하는 위치에 중단 점을 추가 할 수 있습니다. 구문은 다음과 가변합니다.
b (reak) [[파일 이름 :] lineno | 함수 [, 조건]]
어디에서나 중단 점을 추가 할 수 있을지 유연합니다.
당신이 사용할 수있는 :
from pdb import set_trace as bp
code
code
bp()
code
code
vim에는 이에 대한 매크로가 설정되어 있습니다 (내 .vimrc 파일에 있음).
map <silent> <leader>b oimport pdb; pdb.set_trace()<esc>
map <silent> <leader>B Oimport pdb; pdb.set_trace()<esc>
\ b (삽입 입이 아닐 때)를 지정하는 현재 줄은 중단 점을 추가하거나 \ B (대문자 참고)를 현재 줄 앞에 추가합니다.
잘 작동하는 것입니다. 대부분의 다른 '간단한'프로그래머 편집기 (emacs, sublimetext 등)는이 작업을 수행하는 쉬운 방법을 가지고 있어야합니다.
편집 : 나는 실제로있다 :
au FileType python map <silent> <leader>b oimport pdb; pdb.set_trace()<esc>
au FileType python map <silent> <leader>B Oimport pdb; pdb.set_trace()<esc>
수천 개의 소스 파일에 감사합니다. 자바 펼쳐 또는 사용하는 다른 언어에 대해 사용할 줄을 매우 쉽게 추가 할 수 있습니다.
2019 업데이트 (Python 3.7 이상)
Python 3.7 이상에는 이제 vim breakpoint()
에서 이전 버전 import pdb; pdb.set_trace()
을 대체 할 수 있는 내장 기능 이 있습니다 . 여전히 동일하게 작동합니다.
프로그램을 중지 할 때마다 중단 점을 수동으로 설정하지 않고 (Python 3.2 이상에서), 예를 들어 3 행에 중단 점을 직접 만들고 실행 중지 가정합니다.
python -m pdb -c "b 3" -c c your_script.py
다음 정보가 도움이 될 수 있습니다.
.pdbrc 파일이 사용자의 홈 디렉터리 나 현재 디렉터리에 있으면 디버거 프롬프트에서 입력해야 읽어서 실행합니다. 이것은 특히 유용합니다. 두 파일이 모두 존재하는 경우 홈 디렉토리에있는 파일을 먼저 거기에 정의 된 파일을 로컬 파일로 대체 할 수 있습니다.
버전 3.2에서 변경 : .pdbrc 이제 계속 또는 다음과 같은 계속되는 명령을 포함 할 수 있습니다. 이전에는 명령이 효과가 없었습니다.
버전 3.2의 새로운 기능 : pdb.py는 이제 .pdbrc 파일에있는 것처럼 명령을 실행하는 -c 옵션을 허용합니다. 디버거 명령을 참조하십시오.
아직 시도하지 않는 Python 3.7에서 breakpoint ()라는 새로운 내장 기능을 구현 합니다. 즉, 이제 하나의 문으로 중단 점을 삽입 할 수 있습니다.
breakpoint()
다음은 소스 코드에서 아무것도 구현하지 않고 명령 줄에서 pdb를 사용하는 방법입니다 (문서 및 기타 온라인 리소스는 과거에 디버거 만 사용했던 프로그래머에게이를 설명하는 좋은 작업을 수행하지 않습니다).
쉘 프롬프트에 다음을 입력하여 pdb를 시작하십시오.
python -m pdb 'python_script'
이 명령은 pdb를 초기화하고 pdb 디버거는 python_script의 첫 번째 줄에서 중단되고 사용자의 입력을 기다립니다.
(Pdb)
디버거와 통신하기위한 인터페이스입니다. 이제 여기에서 명령을 수 있습니다. 비주얼 디버거에서 버튼이나 키보드 단축키를 사용하는 것과 달리 여기서 명령을 사용하여 동일한 결과를 도출합니다.
"n"(다음) 명령으로 코드의 다음 줄로 선택할 수 있습니다.
(Pdb) n
다음을 수행하면 줄 번호와 소스의 특정 코드가 표시됩니다.
> python_script(line number)method name
-> current line in the source code
소스 코드에 줄 번호를 지정하여 중단 점을 접근 할 수 있습니다.
(Pdb) b 50
여기서 디버거는 50 번째 줄에서 중단 설정되어 있습니다. 다른 중단 점이 바로 50 번째 줄의 중단 점이 첫 번째가 되고이 경우 1 인 중단 점 ID로 참조 될 수 있습니다. 중단 점을 더 추가하면 계속해서 식별자 (예 : 2, 3 등)를 얻습니다.
중단 점이 설정되면 pdb가 다음과 같이 중단 점에 도달 할 때까지 프로그램을 계속 실행합니다.
(Pdb) c
중단 점에 도달하면 이전에 설명한대로 n 명령을 사용하여 다음 줄로 이동할 수 있습니다. 변수 값을 확인하려면 다음과 같이 매개 변수 명령을 실행합니다.
(Pdb) p variable_name
중단 점이 더 이상 필요하지 않으면 clear 명령을 사용하여 중단 점의 ID를 전달하여 지울 수 있습니다.
(Pdb) clear 1
마지막으로, 디버거 작업이 끝나면 파이썬 명령 줄 인터프리터를 종료하는 것처럼 실행을 종료 할 수 있습니다.
(Pdb) exit()
나는 이것이 누구나 pdb를 시작하는 데 도움이되기를 바랍니다. 다음은 디버거와 함께 사용할 수있는 명령 목록입니다. pdb so question and answers
파이썬 디버깅을 지원하는 IDE를 사용하거나 훌륭한 Winpdb 도구를 확인할 수 있습니다. 모든 플랫폼에서 작동하며 Python 스크립트에 그래픽 디버깅 기능을 제공합니다.
Python 3.7
에는 중단 점을 설정하는 새로운 내장 방법이 있습니다. 부름
breakpoint()
자세한 내용은 https://stackoverflow.com/a/53263117/6488361
당신이 사용할 수있는:
- 날개 ide
- pydev 플러그인으로 이클립스
- pycharms
위의 모든 항목은 IDE 내부에서 Python 디버깅을 지원합니다.
Python 플러그인이 설치된 경우 Atom에서 ' pdb
'를 입력하고 Enter 키를 누르면 스 니펫이 import를 입력하고 다시 추적합니다.
나는 이것을 vim에서 편집하고 드롭 다운이 나타날 때까지 기다리는 경우에도 가끔 입력하기 때문에 이것을 사용했습니다.
스크립트에서 디버거를 실행하는 가장 간단한 방법은
pdb your_script.py
Linux 명령 줄에서 pdb를 실행하면
usage: pdb.py scriptfile [arg] ...
참고 URL : https://stackoverflow.com/questions/6980749/simpler-way-to-put-pdb-breakpoints-in-python-code
'IT' 카테고리의 다른 글
다른 시간에 다른 변수로 목록을 정렬하는 방법 (0) | 2020.08.27 |
---|---|
akka는 Erlang과 어떻게 비교 검증? (0) | 2020.08.27 |
전환이 끝날 때 호출 (0) | 2020.08.27 |
파이썬 요청을 사용하여 브라우저 방문을 가짜로 만드는 방법은 무엇입니까? (0) | 2020.08.27 |
Bootstrap 3 Horizontal Divider (드롭 다운에 없음) (0) | 2020.08.27 |