나는 심각하게 몇 달을 보냈다는 문제가있다!코드를 실행할 때 Python이 드문 경우에 충돌이 발생합니다. 디버깅 방법은 무엇입니까?
기본적으로 HD5 파일을 읽고 HD5 파일에 저장해야하는 코드를 실행하고 있습니다. 나는 이것을 위해 h5py를 사용하고있다.
문제가 (어떤 것이 든) 문제의 5 % (각각의 실행은 몇 시간이 걸립니다)에서만 발생하기 때문에 디버그하기가 매우 어렵습니다. 그리고 거기에 도달하면 파이썬이 완전히 충돌하므로 파이썬 자체로 디버깅하는 것이 불가능합니다. 단순한 로그를 사용하면 정확한 충돌 상황을 정확히 찾아내는 것이 불가능합니다. 코드가 다른 점에서 충돌하거나 지연되는 경우가 매우 무작위 적으로 나타납니다.
나는 일이 뭐죠 알아낼 올리 디버그를 사용하여 시도하고 안전하게 지속적으로 다음 위치에서 충돌이 있다는 결론을 내릴 수있다 : 액세스 위반 오류 메시지와 함께, 곧 파이썬 기본 PyObject_ClearWeakRefs를 호출 한 후 http://i.imgur.com/c4X5W.png![image](https://i.stack.imgur.com/R77Ck.png)
것 같다 . 이상한 것은 파일이 성공적으로 기록되었다는 것입니다. 무엇이 액세스 위반 오류가 발생합니까? 아니면 파이썬 내부 (예 : 스택?) 파일이 아닌 (즉, 내 코드) 내부입니까?
아이디어가 있습니까? 그렇지 않다면 정확히 어떤 일이 일어나는지보다 똑똑한 방법으로 발견 할 수 있습니까? 어쩌면 일부 숨겨진 파이썬 로그 또는 내가 모르는 뭔가? 감사합니다.
어떤 OS입니까? 정확한 오류 메시지 란 무엇입니까? (예를 들어 세분화 오류입니까?) – mgilson
자신 만의 로그를 만들 수 있습니다. 파이썬에는 많은 로깅 모듈, 예를 들어 http://docs.python.org/library/logging.html이 있습니다. 그런 다음 모든 로그에 로깅을 삽입 할 수 있습니다. 코드 (일부 회사 나 다른 회사의 심각한 코드 인 경우 어쨌든 똑똑 할 것입니다) - 또한 - 코드를 작은 덩어리로 분리하여 다른 부분을 더 쉽게 확인할 수 있도록해야합니다. 함수를 통해 변수를 전달하는 대신 파일을 쓰고 읽은 다음 오류가 발생하면 중단 한 부분부터 다시 시작할 수 있습니다. –
감사합니다. 내 코드를 작은 덩어리로 분할하고 로깅을 포함 시켰습니다. 그러나 불행히도 충돌은 매우 무작위입니다.로거는 매번 다른 시점에서 발생하기 때문에 좋은 통찰력을주지 못합니다. 그러나 디버거의 디버그 출력은 일관성이 있습니다. 따라서 정직과 관련된 하드웨어가 아니라고 생각합니다. OS는 python 2.7.2가 설치된 Windows 7입니다. python이 충돌하기 때문에 오류 메시지는 없습니다. 내가 접근 할 수 있었던 가장 가까운 것은 접근 위반 오류 (스크린 샷 참조)를 암시하는 것으로 보이는 OllyDbg 출력이었습니다 – Muppet