테스트 케이스로 치명적인 오류가 발생하는 프로그램이 있는데, 로그와 스택 추적을 치명적으로 읽음으로써 문제를 찾을 수 있습니다. 읽기 작업이 있음이 밝혀졌습니다 NULL 포인터시.gdb로 실행할 때 치명적인 오류가 사라졌습니다.
그러나 gdb를 첨부하여 의심스러운 코드 주위에 중단 점을 설정하려고하면 null 포인터가 관찰되지 않습니다! 이 프로그램은 오류없이 원활하게 작동합니다.
이것은 단일 프로세스, 단일 스레드 프로그램이므로 이전에 이런 종류의 문제가 발생하지 않았습니다. 아무도 내게 몇 가지 의견을 줄 수 있습니까? 감사.
추가 : 치명적인 트리거 코드 앞에 pause() syscall을 호출하여 치명적인 오류가 발생하기 전에 프로그램을 잠자기 상태로 만든 다음 gdb를 on-the-fly에 첨부해야합니다. 슬프게도 치명적인 오류는 발생하지 않았습니다. .
시도 디버깅을? –
ahh, Heisenberg 's Uncertainty Principle, 프로그래밍에 적용됨 –
악명 높은 [heisenbug] (http://en.wikipedia.org/wiki/Unusual_software_bug#Heisenbug) –