문제

나는 DLL 몇몇에게는 COM 개체.때로는 이 반대가 충돌 많은 16진수 정보가 포함된 Windows 이벤트 로그에 오류 이벤트를 등록합니다.왜 이런 충돌이 발생하는지 전혀 모르겠습니다.

그렇다면 COM 개체 예외를 어떻게 추적할 수 있습니까?

도움이 되었습니까?

해결책

첫 번째 단계는 실패 코드의 16진수 값(예:E_FAIL 0x80004005).오류 코드의 의미를 파악하기 위해 해당 값을 Google에 게시하는 것은 정말 행운이었습니다.

그런 다음 시행착오를 거쳐 코드에서 실패한 위치와 실패의 근본 원인을 찾아내려고 합니다.

다른 팁

오류 코드가 무엇을 의미하는지 알아내는 매우 빠른 방법을 원한다면 Visual Studio와 함께 패키지된 "오류 조회" 도구를 사용할 수 있습니다(세부 정보 여기).16진수 값을 입력하면 해당 오류 코드를 설명하는 문자열이 제공됩니다.

물론 일단 그 사실을 알게 된 후에도 왜 그런 일이 발생하는지 알아내야 합니다.

오류(hresult) 코드를 조회하는 좋은 방법은 HResult Plus 또는 welt.exe(Windows 오류 조회 도구)입니다.

나는 무슨 일이 일어나고 있는지 확인하기 위해 COM 클래스 내부적으로 로깅을 사용합니다.또한 COM 클래스가 실행 파일에 의해 로드되면 여기에 VS 디버거를 연결하고 중단점, 조사식 및 모든 재미있는 항목을 사용하여 COM 코드를 디버그할 수 있습니다.

COM 개체는 예외를 발생시키지 않습니다.HRESULT를 반환하며 대부분 실패를 나타냅니다.따라서 예외 스택 추적과 동등한 것을 찾고 있다면 운이 없는 것입니다.코드를 직접 살펴보고 무슨 일이 일어나고 있는지 파악해야 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top