2008-08-14 4 views
0

나는 이고 어떤 것은 COM 개체입니다. 경우에 따라이 개체 이 (가)과 충돌하고 많은 16 진수 정보가 포함 된 Windows 이벤트 로그에 오류 이벤트를 등록하는 경우가 있습니다. 나는이 충돌이 일어나는 이유를 전혀 모른다.COM 개체 예외를 추적하는 방법?

그래서 어떻게 이러한 COM 개체 예외를 추적 할 수 있습니까?

답변

2

첫 번째 단계는 실패 코드의 16 진 값 (E.G. E_FAIL 0x80004005)을 조회하는 것입니다. 나는 오류 코드가 의미하는 바를 이해하기 위해 Google에 그 가치를 게시하는 것에 정말 행운을 가져 왔습니다.

그런 다음 시행 착오를 사용하여 오류가있는 코드의 위치와 오류의 근본 원인을 격리하려고 시도합니다.

1

오류 코드의 의미를 알아내는 데 정말로 빠른 방법을 원한다면 Visual Studio와 함께 패키지 된 "오류 조회"도구 (자세한 내용은 here)를 사용할 수 있습니다. 16 진수 값을 입력하면 오류 코드를 설명하는 문자열이 표시됩니다.

물론, 일단 당신이 그것을 알게되면, 당신은 아직도 그것이 일어나고있는 이유를 알아 내야 만합니다.

1

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

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

1

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