1

이것은 몇 가지 질문에 다소 복잡한 문제입니다. 대답이있는 질문에만 자유롭게 응답하십시오.사용자 정의 오류보고 (XP 이상)

몇 가지 구성 요소에 대한 Windows 예외의 경우 미니 덤프를 작성하고 XP SP3을 최소 OS로 지원하는 작업이 있습니다.

  • CSP 및 PKCS11 라이브러리 (DLL의)는 알려진 브라우저에서 모두 사용
  • 한 UI와 하나의 비 UI 서비스
  • 정적 라이브러리를 사용하는

    • 독립 C++ 응용 프로그램 : 구성 요소 포함 이전 세 점

    요구 사항은 WER (XP 이후)와 같지만 Microsoft의 현재 Winqual 대신 전용 공급 업체 서버에 보고서를 보내는 것입니다. 보고 기능을 하나의 정적 라이브러리에 래핑 할 수 있다는 것이 정말 좋을 것입니다.

    하지만 문제가 있습니다. DLL은 특별한 짐승입니다. DLL 코드에서 오류가 발생하는 경우에만 보고서를 생성하는 방법? 서비스에는 특별한 처리가 필요할 수도 있습니다.

    우선,이 작업을 도와 줄 수있는 알려진 오픈 소스 라이브러리가 있습니까? 그렇지 않다면 나는 내 자신을 굴려야 할 것이다.

    내 첫 번째 생각은 각 모듈에서 잠자는 워치 독 스레드를 사용하는 것입니다. 이 스레드는 이벤트를 기다리는 중이고 unhandled exception filter에서 설정됩니다. 스레드는 MiniDumpWriteDump을 사용하여 보고서를 생성하고 인터넷을 통해 보고서를 보내고 마친 후 언급 된 필터에서 스레드가 끝날 때까지 기다렸다가 프로세스를 종료합니다. 이 솔루션에 대한 의견이 있으십니까? 예를 들어 로컬 시스템 계정의 Windows 서비스가 인터넷에 액세스 할 수 있습니까?

  • +0

    Windows 7에서는 지정된 위치에 덤프를 저장하도록 WER을 구성 할 수 있습니다. 아마 비스타에서. XP에 대해서는 확실하지 않습니다. 그런 다음 언제 어디서나 덤프를 보낼 수 있습니다. –

    답변

    1

    "예외를 기다리는"스레드를 만들 필요가 없습니다. UnhandledExceptionFilter를 사용하여 고유 한 예외 처리기를 등록하십시오. this URL을 보면, 예외가 발생할 때 MiniDumpWriteDump를 취하는 방법을 잘 설명하고 있습니다.

    로컬 시스템 자격 증명에서 실행되는 Windows 서비스에는 네트워크 액세스 권한이 없습니다.

    +0

    프로세스 당 하나의 UnhandledExceptionFilter 만 등록 할 수 있습니다. 예외가 DLL에서 발생한다는 사실은 DLL을 개발하고 예외 구조에 적절한 플래그를 배치하는 한 실제 문제가 아닙니다. DLL이 다른 UnhandledExceptionFilter를 등록하면 이전의 DLL이 제거됩니다. – mox

    +0

    그들은 인증 된 액세스 권한이 없지만 네트워크에 정상적으로 도달 할 수 있습니다. WER 서버가 어떻게 컴퓨터를 인증 할 수 있습니까? – ixe013

    +0

    맞음, 그들은 익명입니다! – mox