pdb python

IDE 가 없 으 면 python 디 버 깅 에 대해 걱정 할 때 본 고 를 참고 할 수 있 습 니 다.(pdb 명령 디 버 깅) 참조:http://docs.python.org/library/pdb.html 도움말
pdb 로 python 디 버 깅 을 진행 합 니 다. 사용 방법 은 기본적으로 gdb 와 차이 가 많 지 않 습 니 다. 먼저 간단 한 예 를 보 겠 습 니 다: epdb1. py.
    # epdb1.py -- experiment with the Python debugger, pdb

a = "aaa"

b = "bbb"

c = "ccc"

final = a + b + c

print final

:

1: , 。

import pdb

2: pdb.set_trace()


           파일 변환:         
 # epdb1.py -- experiment with the Python debugger, pdb

import pdb


a = "aaa"

pdb.set_trace()



b = "bbb"

c = "ccc"

final = a + b + c

print final

이 프로그램 을 실행 할 수 있 습 니 다. 정지점 이 나 올 때 까지 멈 출 수 있 습 니 다. gdb 와 유사 합 니 다. 명령 을 실행 할 수 있 습 니 다. 직접 차 로 돌아 가 는 것 은 이전 명령 을 반복 하 는 것 입 니 다!p (print) 변수 값 n (next) 다음 s (step) 단 계 를 보고 함수 c (continue) 에 들 어가 서 계속 l (list) 소스 코드 를 볼 수 있 습 니 다.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
pdb 디 버 깅 으로 여러 가지 방법 을 선택 할 수 있 습 니 다.
1. 명령 행 에서 대상 프로그램 을 시작 하고 - m 인 자 를 추가 하여 my script. py 를 호출 하면 정지점 은 프로그램의 첫 줄 을 실행 하기 전에 python - m pdb my script. py 입 니 다.
2. Python 인 터 랙 션 환경 에서 디 버 깅 사용 > > import pdb > > import my module > > pdb. run ('my module. test ()')
3. 자주 사용 하 는 것 은 프로그램 중간 에 프로그램 을 삽입 하 는 것 입 니 다. 일반 IDE 에 정지점 을 두 고 debug 를 시작 하 는 것 에 비해 이런 방식 은 hardcode 입 니 다.
view plain copy to clipboard print ?
"color: rgb(255, 119, 0); font-weight: bold;" > if   
  •  __name__ == "color: rgb(72, 61, 139);" > "__main__"   

  • :  
  •     a = "color: rgb(255, 69, 0);" > 1   

  •   
  •     "color: rgb(255, 119, 0); font-weight: bold;" > import   

  •  "color: rgb(220, 20, 60);" >pdb  
  •   

  •     "color: rgb(220, 20, 60);" >pdb  
  • ."color: black;" >set_trace  

  • "color: black;" >(  
  • "color: black;" >)  

  •   
  •     b = "color: rgb(255, 69, 0);" > 2   

  •   
  •     c = a + b  

  •     "color: rgb(255, 119, 0); font-weight: bold;" > print   
  •  "color: black;" >(  

  • c"color: black;" >)  
    if
    
     __name__ == "__main__"
    
    :
    a = 1
    import pdb
    pdb .set_trace ( )
    b = 2
    c = a + b
    print ( c)

    그리고 스 크 립 트 를 정상적으로 실행 합 니 다. pdb. settrace () 가 정 해 지면 디 버 깅 프롬프트 (Pdb) 를 볼 수 있 습 니 다.
    상용 디 버 깅 명령
  • h (elp) 는 현재 버 전의 Pdb 에서 사용 할 수 있 는 명령 을 인쇄 합 니 다. 명령 을 조회 하려 면 h [command] 를 입력 하 십시오. 예 를 들 어 "h l" - list 명령 보기
  • l (ist), 현재 실행 할 코드 블록
  • 을 표시 할 수 있 습 니 다.
    (Pdb) l 497 pdb.set_trace() 498 base_data = {} 499 new_data = {} 500 try: 501 execfile(base_file_name,{},base_data) 502 -> execfile(new_file_name,{},new_data) 503 except: 504 logger.writeLog(“error! load result log error!”) 505 print “load cmp logs error!” 506 raise Exception, “load cmp logs error!” 507
    > 정지점 설정   (Pdb)b  10 \ # 정지점 은 이 py 의 10 번 째 줄 에 설정 합 니 다.   또는 (Pdb) b  ots. py: 20 \ # 정지점 을 ots. py 20 줄 로 설정 합 니 다.   정지점 삭제 (Pdb) b \ # 정지점 번호 보기            (Pdb) cl 2 \ # 두 번 째 정지점 삭제     >운행 하 다.    (Pdb) n \ # 단일 실행    (Pdb) s \ # 자세하게 실행 하면 내 려 오 는 방법    (Pdb) c \ # 다음 정지점 으로 건 너 뛰 기 > 보기    (Pdb) p param \ # 현재 변수 값 보기    (Pdb) l \ # 실행 코드 보기    (Pdb) a \ # 모든 스 택 내 변 수 를 봅 니 다.
  • b (reak) 는 정지점 을 설정 합 니 다. 예 를 들 어 'b 77' 은 현재 스 크 립 트 의 77 줄 에 정지점 을 칠 수 있 고 함수 명 을 매개 변수 로 입력 할 수 있 습 니 다. 정지점 은 구체 적 인 함수 입구 로 걸 수 있 습 니 다. b 만 두 드 리 면 기 존의 모든 정지점
  • 이 표 시 됩 니 다.
    (Pdb) b 504 Breakpoint 4 at /home/jchen/regression/regressionLogCMP.py:504
  • condition bpnumber [condition], 조건 정지점 설정, 다음 문 구 는 네 번 째 정지점 에 조건 'a = = 3'
  • 을 추가 하 는 것 입 니 다.
    (Pdb) condition 4 a==3 (Pdb) b Num Type Disp Enb Where 4 breakpoint keep yes at /home/jchen/regression/regressionLogCMP.py:504 stop only if a==3
  • cl (ear), 뒤에 인자 가 있 으 면 지정 한 정지점 을 지 우 는 것 입 니 다 (저 는 Python 2.4 에서 성공 한 적 이 없습니다!!!). 인자 가 없 으 면 모든 정지점 을 지 우 는 것 입 니 다
  • .
    (Pdb) cl Clear all breaks? y
  • disable / enable, 정지점 비활성화 / 활성화
  • (Pdb) disable 3 (Pdb) b Num Type Disp Enb Where 3 breakpoint keep no at /home/jchen/regression/regressionLogCMP.py:505
  • n (ext) 은 프로그램 이 다음 줄 을 실행 하도록 합 니 다. 현재 문장 에 함수 호출 이 있 으 면 n 을 사용 하면 호출 된 함수 체 에 들 어가 지 않 습 니 다
  • s (tep) 는 n 과 비슷 하지만 현재 함수 호출 이 있 으 면 s 는 호출 된 함수 체 에 들 어 갑 니 다
  • c (ont (inue)) 는 정지점
  • 에 부 딪 힐 때 까지 프로그램 을 정상적으로 실행 합 니 다.
  • j (ump), 프로그램 을 지정 한 줄 로 이동 시 키 기
  • (Pdb) j 497 > /home/jchen/regression/regressionLogCMP.py(497)compareLog() -> pdb.set_trace()
  • a (rgs), 현재 함수 의 인자 인쇄
  • (Pdb) a _logger = _base = ./base/MRM-8137.log _new = ./new/MRM-8137.log _caseid = 5550001 _toStepNum = 10 _cmpMap = {‘_bcmpbinarylog’: ‘True’, ‘_bcmpLog’: ‘True’, ‘_bcmpresp’: ‘True’}
  • p, 가장 유용 한 명령 중 하나 로 변 수 를 인쇄 합 니 다
  • (Pdb) p _new u’./new/MRM-8137.log’
  • ! 느낌표 뒤에 문장 을 따라 가면 특정한 변 수 를 직접 바 꿀 수 있다
  • q (uit), 디 버 깅 종료
  • 좋은 웹페이지 즐겨찾기