2010-12-21 7 views
18

AppEngine을 로컬로 (예 : dev_appserver.py를 사용하여) 작업하는 동안 단계별 디버깅을 수행 할 수 있습니까? logging.info() 또는 유사한 함수를 사용하여 코드의 모든 변수 값을 표시하고 오류의 위치를 ​​결정하는 것은 너무 오래된 방식입니다.AppEngine : 단계별 디버깅

답변

8

지역에서 appengine 프로세스가 정상적인 파이썬 프로세스가있는 경우 당신은 옵션이 몇 가지 있습니다 : 코드에서

  1. , 장소 "코드 중단 점"import pdb; pdb.set_trace()합니다. dev_appserver.py을 정상적으로 실행하면 python 디버거가 코드가있는 행에 도달하면 중단됩니다.

  2. pdb에 dev_appserver.py을 실행하십시오. 셸에서 : $ python -m pdb dev_appserver.py. 중단 점을 설정하려면 b filename.py:linenumber 명령을 사용하십시오. 그런 다음 c 명령을 사용하여 계속하십시오.

http://docs.python.org/library/pdb.html#debugger-commandspdb module documentation를 참조하십시오.

+1

를 작동하지 않았다 참조하십시오. 그냥 멈추지 않고 BdbQuit 오류가 발생하는 것 같습니다! – Rafid

+0

둘째는 저에게 효과적 이었지만 편리하지 않았습니다.그것은 처음부터 중단되고, 코드의 특정 지점에서 중단 점을 가지기를 원합니다. – Rafid

+0

중단 점을 설정하려면 "b filename.py:linenumber"명령을 사용하십시오. 그런 다음 계속하려면 "c"명령을 사용하십시오. http://docs.python.org/library/pdb.html#debugger-commands를 참조하십시오 – codeape

15

codeape의 대답의 첫 번째 제안에 조금 더 자세히 설명하십시오. dev_appserver.py가 stdin, stdout 및 stderr에 대해 신경 쓰이기 때문에 "코드 중단 점"을 설정하는 데 약간의 작업이 필요합니다. 이것은 나를 위해 트릭을 수행합니다

import sys 
for attr in ('stdin', 'stdout', 'stderr'): 
    setattr(sys, attr, getattr(sys, '__%s__' % attr)) 
import pdb 
pdb.set_trace() 

명령 줄에서가 아닌 GUI 앱 엔진 런처를 통해 dev_appserver.py를 실행해야합니다. pdb.set_trace() 행이 실행되면 그 시점에 pdb 디버거에 드롭됩니다.

+0

코드를 좀 더 설명해 주시겠습니까? 여기서 왜 setattr이 필요한가요? 이 코드를 입력하지 않으면 어떻게됩니까? – Rafid

+0

나는 당신의 해결책을 시도했지만 그것은 나를 위해 작동하지 않았다. "잘못된 탐색"오류가 발생합니다. – Rafid

+0

for 루프는 단순히''sys.stdin = sys .__ stdin__;을 쓰는 바로 가기입니다. sys.stdout = sys .__ stdout__; sys.stderr = sys .__ stderr__'' – codeape

3

PyCharm Professional Edition은 단계별 디버깅을 가능하게합니다.

몇 가지 설정 단계를 거쳐야하는 경우 PyCharm Community Edition 무료 버전을 Google App Engine Python과 함께 사용할 수 있도록 구성 할 수 있습니다. 배포와 같은 PyCharm Professional Edition의 모든 이점을 얻지는 못하지만 단계별 디버깅을 수행하고 코드 탐색 및 자동 완성 작업을 수행 할 수 있습니다. 디버깅을 사용하려면

, 설정하여 PyCharm 실행/디버그 구성을 편집 :

  • 스크립트 : 앱 엔진의 dev_appserver.py
  • 스크립트 매개 변수 : --automatic_restart=no --max_module_instances="default:1" .
  • 작업 디렉토리 :베이스 프로젝트 폴더를합니다 (app.yaml 파일이 포함 된 파일)

aup PyCharm CE pr에서 더 자세한 지침, 설명 및 코드 완성 작업 방법 oject, http://www.enkisoftware.com/devlogpost-20141231-1-Python_Google_App_Engine_debugging_with_PyCharm_CE.html을 참조하십시오.

하면 Windows에서 작업하는 당신이 GAE에 대한 디버그 파이썬 (마이크로 소프트 비주얼 스튜디오 커뮤니티) PyTools를 사용하려는 경우, 첫 번째는 나를 위해 http://www.enkisoftware.com/devlogpost-20140814-1-Python_Google_App_Engine_debugging_with_PyTools.html