현재 처리되지 않은 예외가 발생했을 때 정보를 얻기 위해 콜백을 제공하기 위해 SetUnhandledExceptionFilter()을 사용했습니다. 그 콜백은 ExceptionAddress
을 제공하는 EXCEPTION_RECORD을 제공합니다.C++ Win32 처리되지 않은 예외 처리기
[1] 실제로 무엇입니까 ExceptionAddress
무엇입니까? 예외를 제공하는 함수/코드의 주소 또는 일부 함수가 액세스하려고 시도한 메모리 주소입니까?
[2] 처리되지 않은 예외가 발생할 때 더 나은 정보를 줄 수있는 더 좋은 메커니즘이 있습니까? (나는 디버그 모드를 사용하거나 런타임 성능에 영향을주는 코드를 추가 할 수 없다. 가능한 한 빨리 코드를 실행할 때 충돌이 드물고 릴리스 빌드에서만 가능하다.)
[3] 몇 가지 방법이있다. 처리되지 않은 예외가 발생할 때 호출 스택 주소. 이 아마도 이미 DLL의 코드에 의해 발생 된 그 충돌을 가정하는 것이 좋다,
[4] 가정 ExceptionAddress
주소 A를 가지고, 나는 DLL X로드 및 기본 주소 A-x
및 A+y
에서 다른 DLL Y에서 실행해야 엑스?
(1) OK (2) 제 경우에는 릴리스 빌드에 대한 정보를 디버깅 할 때 충돌이 발생하지 않습니다. (3) 감사합니다. 사용법을 알려주세요. (4) 나는 이것을 시도 할 것이다. 덕분에 – uray
다음은 Google의 호의에 따라 사용법을 보여주는 기본 튜토리얼입니다. http://jpassing.com/2008/03/12/walking-the-stack-of-the-current-thread/ – shoosh