우리 프로젝트는 단위 테스트를 위해 Boost.Test를 사용합니다. 테스트 케이스 중에 예기치 않은 예외가 발생했을 때 미니 덤프를 얻으려고합니다. 그래서 우리는 미니 패드를 작성하기 위해 Google Breakpad를 통합하기 시작했습니다.부스트 테스트를 실행하고 미니 덤프를 생성하는 방법은 무엇입니까?
Boost.Test는 사용자 테스트에서 예외를 모두 가로 채고있는 것처럼 보입니다. Boost 테스트 케이스가 try/catch를 사용하여 각 함수를 래핑하고 예상치 못한 예외가 throw되면 유닛 테스트가 실패하기 때문에 나는 추측합니다. 이렇게하면 Breakpad 예외 핸들러가 미니 덤프를 시작하고 기록하지 못하게됩니다.
Boost.Test를 사용하면 단위 테스트에서 예상치 못한 예외를 catch하고 실패하지 않을 수 있습니까? 대신 브레이크 패드 또는 다른 예외 처리기가 미니 덤프를 작성하도록 트리거 될 수 있도록 예외 처리가 처리되지 않도록 설정하십시오 (또는 다시 시작하십시오)?
나는이 제안을 좋아하지만, 미니 덤프가 catch 블록에 기록 될 때까지 미니 덤프에 저장되는 호출 스택은 스택 맨 위에 '처리기'만 표시합니다. 그러나 '처리되지 않은 예외 필터'가 트리거되고 덤프가 작성되면 문제가되는 호출 스택이 보존됩니다. – mbradber
브레이크 패드는 예외 처리기를 어떻게 설정합니까? – legalize
https://chromium.googlesource.com/breakpad/breakpad/+/master/docs/windows_client_integration.md 여기에있는 문서를 기반으로 ExceptionHandler를 만들었습니다. 이 Breakpad는 처리되지 않은 예외 필터 콜백을 설정하고 처리되지 않은 예외는 미니 덤프를 멋지게 만듭니다. 그러나 게시 된 것과 비슷한 catch 블록에서 'WriteMinidump'API를 명시 적으로 사용하고 있습니다. – mbradber