2013-02-01 1 views
3

사용자 컴퓨터에 충돌이 발생할 때마다 충돌보고 시스템에서 충돌 보고서를 생성하려고하는 다중 플랫폼 Qt 응용 프로그램을 만들고 있습니다. 나중에, 충돌 보고서의 모든 디버그 정보로 스택 추적을 볼 수 있어야합니다. 나는 google-breakpad를 보았다.Qt 응용 프로그램을위한 다중 플랫폼 충돌보고 시스템

하지만 Windows 용 MSVC로 전환해야하는 것 같습니다. 지금은 창문에서 MinGW를 사용하고 있는데 상당한 시간이 걸릴 것입니다 & MSVC로 컴파일 된 모든 다른 라이브러리를 가져 오기 위해 노력했습니다. MinGW를 사용할 수 있고 여전히 Google 브레이크 패드를 사용할 수있는 방법이 있습니까? 아니면 Windows에서 멀티 플랫폼 및 밍윙을 지원할 수있는 다른 대안이 있습니까?

답변

0

현재는 Breakpad에서 MinGW를 지원하지 않습니다. Google이나 Mozilla가 MinGW에 관심이 없기 때문에 누군가가 포트에 기여하지 않으면 곧 변경 될 것이라고는 생각하지 않습니다. Breakpad처럼 크로스 플랫폼 방식으로 작동하는 다른 크래시보고 라이브러리에 대해서는 알지 못합니다.

0

google-breakpad를 제외한 열려있는 다중 플랫폼 오류보고 시스템을 모르겠습니다. google-breakpad조차도 MinGW를 지원하지 않습니다. 그것은 내가 알고있는 것입니다. 애플리케이션에서 백 트레이스를 얻을 수 있습니다. 프로젝트 Dr. Mingw은 훌륭한 dll을 제공합니다 : mgwhelp.dll 및 exchndl.dll. 사용하려면 다음이 필요합니다.

  • 디버그 정보로 컴파일하십시오. Dr. Mingw FAQ를 참조하십시오.
  • 는 mgwhelp.dll 포함하고 응용 프로그램이 명시 적에서 LoadLibrary 호출하여 시작시이 같은 예를 들어 ("exchndl.dll")를 응용 프로그램 바이너리와

  • 및로드 exchndl.dll을 exchndl.dll :

    QFile drmingw("exchndl.dll"); 
    if(drmingw.exists()) 
    {// If don't want create reports just delete exchndl.dll from installer 
        LoadLibrary(L"exchndl.dll"); 
    } 
    

    충돌 후 이진은 같은 디렉토리에 역 추적을 가진 파일 binary_name.RPT을 찾을 수 있습니다.

    그 밖의 어떤 조치가 있습니까?

    • 릴리스 모드에서는 디버그 기호를 제거합니다.
    • win32:!win32-msvc*{ 
          # Strip debug symbols. 
          QMAKE_POST_LINK += objcopy --only-keep-debug bin/${TARGET} bin/${TARGET}.dbg && 
          QMAKE_POST_LINK += objcopy --strip-debug bin/${TARGET} && 
          QMAKE_POST_LINK += objcopy --add-gnu-debuglink="bin/${TARGET}.dbg" bin/${TARGET} 
      } 
      
      • 각 검사 실행 .RPT 파일이 존재하고 보내거나 보고서 디렉토리에 저장하는 경우
      . 예를 들어 나는 보고서를 수집하기 위해 gist를 사용합니다.
  • 1

    libcrashreporter-qt "Google Breakpad 충돌보고를 Qt 애플리케이션에 쉽게 통합 할 수 있어야합니다."

    MinGW 툴체인으로 빌드 가능하도록 브레이크 패드에 ​​대한 패치가 포함되어 있습니다.

    관련 문제