2012-08-06 3 views
2

예기치 않게 (겉으로보기에) 충돌하는 스크립트가 있습니다. 나는 그것을 재현하는 방법을 찾을 수 없다.Python 시스템 로그 파일

파이썬은 글로벌 시스템 로그 파일을 유지합니까? 그래서 돌아가서 어떤 예외가 종료를 촉진하는지 살펴볼 수 있습니까? 그렇다면 Windows에서 어디에서 찾을 수 있습니까? 가능한 경우 추적을 볼 수 있기를 바랍니다.

편집 : 내가 try...except 블록 내부 전체 스크립트를 넣을 수 있습니다 알고 있지만 다시 충돌하기 전에 나는 그것을 실행 할 수 있습니다 얼마나 오래 모르겠어요. 그 정보가 충돌을 야기한 예외의 유형 일지라도, 이미 발생한 충돌에 대한 정보를 최소한 얻을 수 있기를 바랍니다. 그렇게하면 버그를보다 확실하게 재현 할 수 있습니다.

나는 충돌이 외부 장치와의 통신 실패 (아마도 단순한 느슨한 케이블과 같은 것)로 인한 것 같다고 생각합니다. 이러한 종류의 실패는 본질적으로 무작위이며 재현하기 어렵 기 때문에 통신 오류 또는 진정한 코드 버그인지 알고 싶습니다.

+1

파이썬 문서에서 "사후 부검"디버깅을 참조하십시오. –

+0

실행하려는 스크립트는 무엇입니까? 문제가 발생한다고 생각하는 작은 스 니펫을 게시 할 수 있습니까? –

+1

pdb의 사후 디버거가 마지막 충돌시에만 작동하고 인터프리터의 동일한 인스턴스 내에서 작동하는 것처럼 보입니다. 나는 파이썬이 지난 24 시간 동안 (말하자면) 추락했으며 무엇이 잘못되었는지를 볼 수있는 모든 시간의 목록을 볼 수 있기를 바란다. 이것이 가능한가? –

답변

0

예외 정보에 대해 알고 싶다면이 코드를 사용할 수 있습니다.

try: 
    #do some stuff 
    1/0 #stuff that generated the exception 
except Exception as ex: 
    print ex 
    raw_input() 

올바르게 디버깅하려면 winpdb 도구가 있습니다. 아주 좋은 튜토리얼은 그것을 debugging tutorial

+1

나는'try ... except'와 디버깅 기술에 대해 잘 알고 있습니다. 30 분 전에 추락 한 사건으로 돌아가서 무슨 일이 일어 났는지 알고 싶습니다. –

0

를 사용하여 디버깅을 배우고 사용할 수 있습니다 할 수 있습니다 "캐치"를 exception? 그렇다면 traceback을 사용하여 스택 추적을 인쇄하고 문제가 발생한 위치를 찾아 낼 수 있습니다.

그런 다음 Eclipse를 사용하여 문제의 모듈을 디버깅 할 수 있습니다 (파이썬 lib의 일부라도 평범한 읽을 수있는 형식이 될 것입니다).


import traceback 
... 
... 

try: 
    <your script> 
except Exception as runtime_ex: 
    print runtime_ex, traceback.format_exc()