[python] 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는 이제 continue 또는 next와 같은 디버깅을 계속하는 명령을 포함 할 수 있습니다. 이전에는 이러한 명령이 효과가 없었습니다.

버전 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


답변

Python 3.7에는 중단 점을 설정하는 새로운 기본 제공 방법이 있습니다. 부름

breakpoint()

자세한 내용은 https://stackoverflow.com/a/53263117/6488361