2012-04-26 2 views
0

다음 작업을 수행 할 수 있습니까? 나는 윈도우 프로그래밍에 익숙하지 않기 때문에 불가능한 것에서부터 무의미한 것에 이르기까지 다양하게 요구할 수 있습니다. 올바르게 이해하면 0으로 나누기 또는 액세스 위반과 같은 오류는 Windows 구조화 된 예외 메커니즘에 의해 처리됩니다. 구조화 된 예외가 발생할 때 스택 추적을 포함하여 사용 가능한 최대 정보를 로그 파일에 덤프하고 싶습니다. MSVC10, 윈도우 7을 사용하고 있습니다.C++에서 로깅 SEH 오류

편집 : 관련없는 질문은 이것이 합당한가하는 것입니다. 스택에는 디버깅에 도움이되는 유용한 정보, 즉 함수의 이름이 포함됩니까? 또한,이 예외를 잡은 스택을 덤프하는 가장 좋은 방법은 무엇입니까? 감사합니다.

+0

예, http://msdn.microsoft.com/en-us/library/windows/desktop/ms681415(v=vs.85).aspx 구조화 된 예외를 catch 할 수 있지만이 오래된 문서가 최종 : http://www.microsoft.com/msj/0197/exception/exception.aspx – birryree

답변

1

예, 가능합니다. 여기에서 샘플을 찾을 수 있습니다 : try-except Statement.

예기치 않은 SEH 예외의 경우 dump creation을 고려하는 것이 좋습니다. 그렇지 않은 경우 원인을 찾기가 어려울 수 있습니다.

+0

덤프 생성 제안을 주셔서 감사합니다. 호출 순간에 덤프가 스택을 포함 할 수 있습니까? 그렇다면 함수 이름과 주소가 될 수 있습니까? – stas

+0

릴리스 빌드 용 PDB 파일을 작성하면 호출 스택의 주소 대신 함수 이름을 얻게됩니다. 게다가 덤프를 사용하면 응용 프로그램의 모든 스레드에 대해 스택을 얻을 수 있습니다. – Eugene