2012-10-08 2 views
6

저는 python과 pdb에 비교적 익숙하지 만 gdb에 대한 많은 경험이 있습니다.PDB.run - pdb 세션 다시 시작

내 문제는 어떤 점에서 내 코드에 여러 개의 중단 점을 설정하면 무언가를 변경하고 이러한 중단 점을 유지하는 디버그 세션을 다시 실행하고 싶을 것입니다. 그러나 나는 두 개의 독립적 인 리눅스 플랫폼이 시도하고 동일한 결과를 했어

(Pdb) run 
    Traceback (most recent call last): 
    File "/usr/lib64/python2.6/runpy.py", line 122, in _run_module_as_main 
    "__main__", fname, loader, pkg_name) 
    File "/usr/lib64/python2.6/runpy.py", line 34, in _run_code 
    exec code in run_globals 
    File "/usr/lib64/python2.6/pdb.py", line 1319, in <module> 
    pdb.main() 
    File "/usr/lib64/python2.6/pdb.py", line 1312, in main 
    pdb.interaction(None, t) 
    File "/usr/lib64/python2.6/pdb.py", line 198, in interaction 
    self.cmdloop() 
    File "/usr/lib64/python2.6/cmd.py", line 142, in cmdloop 
    stop = self.onecmd(line) 
    File "/usr/lib64/python2.6/pdb.py", line 267, in onecmd 
    return cmd.Cmd.onecmd(self, line) 
    File "/usr/lib64/python2.6/cmd.py", line 219, in onecmd 
    return func(arg) 
    File "/usr/lib64/python2.6/pdb.py", line 661, in do_run 
    raise Restart 
pdb.Restart 
]$ 

다음과 같은 출력으로 종료 내 PDB 세션의 경우 내 세션을 "실행"을 입력하지만 문서에 어떤 수정을 찾을 수 없습니다.

답변

8

그렇다면 아무 문제가 없다면 pdb에서 "run"은 gdb에서 "run"과 완전히 똑같지는 않습니다. gdb에서 실행을 입력하면 프로그램이 다시 시작되고 첫 번째 중단 점까지 계속됩니다. pdb에서 프로그램이 다시 시작되고 파일의 시작 부분으로 이동합니다. 그런 다음 첫 번째 중단 점에 도달하려면 'n'을 누르고 'c'를 눌러야합니다. 프로그램을 실행 시키려고하면 위와 같이 디버거가 충돌하는 파일의 시작 부분에 두 번째로 입력합니다. 비정상 상태가 발생하면

+0

예, 누군가 걱정됩니다. 감사! – Oddthinking

+2

이것은 여전히 ​​pdb의 버그입니다 – erjoalgo

+0

다시 시작한 후에 바로 할 수 있습니까? 그렇습니다. –

1

(즉, 프로그램에 버그가), PDB 오히려 유용하게 말한다 :

Uncaught exception. Entering post mortem debugging 
Running 'cont' or 'step' will restart the program 

을 여기에, 무례로 종료 할 수있는 PDB 과정의 원인이됩니다 "실행"또는 "다시 시작"를 입력 OP 상태 (그러나 "계속"또는 "단계"는 약속대로 다시 시작됩니다).

아마도 많은 참을성 pythonistas는 우리가 "사후 디버깅"을 입력했는지 여부에 관계없이 작업을 "실행"하거나 "다시 시작"하겠지만 기존의 다시 시작 의미가 확실한 구현의 부산물이라고 확신합니다.