문제

내가 직면한 심각한 문제를 내 프로그램을 얻을 수있는,재현에서만 고객의 장소입니다.넣고 로그에 도움이 되지 않으로 의심 실패에서 일어나는 타사 dll.몇 가지 이유로,나들에게 도움을 받을 수도 없었어 라이브러리 제공자입니다.나는 생각하고 생산의 덤프 시점에서의 실패를,그래서 그것을 분석하기 위해 오프라인입니다.이것이 좋습니까?또는 대안은?

도움이 되었습니까?

해결책

그렇습니다. 이것은 모든 프로그램이 가능한 한 자주 사용하고 활용 해야하는 것입니다.

타사 라이브러리를 사용하지 않는 것이 좋습니다. 대신 나만의 덤프를 만듭니다. 매우 간단하고 간단합니다. 기본적으로 다음을 수행해야합니다.

귀하의 프로그램에 액세스해야합니다 dbghelp.dll. 인간 읽기 가능한 통화 스택 등을 만들 수있는 Windows DLL입니다. 디버거는이 DLL을 사용하여 프로세스에 데이터를 표시합니다. 또한 Post Mortem 디버깅, 즉 덤프를 처리합니다. 이 DLL은 소프트웨어와 함께 안전하게 배포 할 수 있습니다. 다운로드하고 설치하는 것이 좋습니다 Windows 용 도구 디버깅 도구. 이렇게하면 모든 종류의 도구와 최고의 도구에 액세스 할 수 있습니다. Windbg.exe 그리고 최신 dbghelp.dll도 그 분포에 있습니다.

dbghelp.dll에서 당신은 예를 들어 전화합니다 minidumpwritedump (), 덤프 파일을 생성하고 다소 그 이상입니다. 당신은 끝났습니다. 해당 파일을 손에 넣 자마자 사용을 시작할 수 있습니다. 비주얼 스튜디오 디버거 (Visual Studio Debugger)에서 .DMP 파일 확장자 또는 WINDBG와 관련이있을 수 있습니다.

이제, 당신이 그것을하는 동안 생각해야 할 몇 가지가 있습니다. 이와 같은 덤프 파일을 확인할 때 실행 파일을 컴파일하고 연결할 때 .pdb 파일을 생성해야합니다. 그렇지 않으면 덤프 데이터를 사람이 읽기 쉬운 데이터에 매핑 할 가능성이 없습니다. 예를 들어 우수한 콜 스택 및 변수 값 등을 얻을 수 있습니다. 이는 또한 이러한 .pdb 파일을 저장해야 함을 의미합니다. 바로 그 릴리스와 정확히 일치 할 수 있어야합니다. 덤프 파일에는 실행 파일의 날짜 스탬프가 찍혀 있으므로 디버거에는 정확한 PDB 파일이 필요합니다. .pdb 파일이 다른 컴파일 세션에 속하는 경우 코드가 단일 비트를 변경하지 않았는지 여부는 중요하지 않습니다.

모든 Windows Win32 개발자가 Oleg Starodumov 사이트를 확인하도록 권장합니다. debuginfo.com. 많은 샘플과 튜토리얼과 덤프 파일 생성을 구성하고 조정하는 방법이 포함되어 있습니다. 물론 특정 데이터를 제외하고 덤프에 첨부 할 사용자 정의 디버그 메시지를 작성하는 수많은 방법이 있습니다.

Minidumps는 예외 시간에 응용 프로그램 상태에 대한 매우 제한된 정보를 포함합니다. 트레이드 오프는 작은 파일입니다 (설정에 따라 약 50-100 KB). 그러나 원한다면, 당신은 a를 만들 수 있습니다 가득한 전체 응용 프로그램의 상태, 즉 글로벌 및 커널 객체의 상태를 포함하는 덤프. 이 파일은 거대 할 수 있으며 극단적 인 경우에만 사용해야합니다.

법적 측면이있는 경우 고객이 자신이하고있는 일을 알고 있는지 확인하십시오. 비즈니스 비밀이나 기타 법적 측면을 공개하지 않아야 할 계약이 이미 있다고 확신합니다. 고객이 불만을 제기하면 버그를 찾는 것이 얼마나 중요한지를 확신시키고 이것이 소프트웨어의 품질이 크게 향상 될 것이라고 확신시킵니다. 비용이 많이 들지 않으면 더 높은 품질. 비용이 많이 들지 않으면 좋은 주장이기도합니다 :)

마지막으로 충돌 덤프 분석에 대해 자세히 알아 보려면 또 다른 훌륭한 사이트가 있습니다. dumpanalysis.org

도움이 되었기를 바랍니다. 더 자세히 설명하기를 원한다면 의견을 제시하십시오.

건배 !

편집하다:

그냥 추가하고 싶었습니다 minidumpwritedump () 밑줄이있는 미니 덤프 노출 정보에 대한 포인터가 있어야합니다. 하지만 getExceptionInformation () 매크로는 예외 핸들러에서 예외적으로 귀하에게 제공합니다 (구조화 된 예외 처리 또는 SEH) :

__try {

}
__except (YourHandlerFunction(GetExceptionInformation())) {

}

yourHandlerFunction ()은 미니 럼프를 생성하는 것을 돌보는 사람이 될 것입니다 (또는 통화 체인 아래로 다른 기능). 또한 프로그램에 사용자 지정 오류가있는 경우 예를 들어 발생하지 않아야하지만 기술적으로는 예외가 아닙니다. Raiseexception () 나만의.

getExceptionInformation () 프로그램 실행 중에는 이러한 맥락에서만 사용될 수 있으며 다른 곳은 없습니다.

다른 팁

충돌 덤프는 매우 일반적인 문제 해결 방법이며 특히 고객 사이트에서만 재현하는 문제에 대해 매우 효과적 일 수 있습니다.

고객/고객이 현재하고있는 일과 허가가 있는지 확인하십시오. 충돌 덤프는 고객이 원하지 않거나 허용되지 않는 민감한 정보를 가질 수 있습니다.

그보다 더 나은 충돌 데이터를 다시 업로드 할 라이브러리가 있습니다.

버그 덤프 그리고 파리채

그리고 Microsoft 방법이 있습니다.

http://msdn.microsoft.com/en-us/library/aa936273.aspx

면책 조항 : 나는 변호사가 아니며, 하나 인 척하지도 않습니다. 이것은 법적 조언이 아닙니다.

로그 및 충돌 덤프에 포함 할 수있는 데이터는 작업중인 도메인에 따라 다릅니다. 예를 들어 의료 장비 및 환자 정보 시스템에는 종종 무단 사람에게는 보이지 않아야하는 환자에 대한 민감한 데이터가 포함되어 있습니다.

HIPAA 개인 정보 보호 규칙 "해당 엔티티"(...)가 보유한 특정 정보의 사용 및 공개를 규제합니다. PHI (Protected Health Information)의 사용 및 공개에 대한 규정을 설정합니다. PHI는 건강 상태, 건강 관리 제공 또는 개인과 연결될 수있는 건강 관리에 대한 지불에 관한 해당 기관이 보유한 모든 정보입니다. [10] 이것은 다소 광범위하게 해석되며 개인의 의료 기록 또는 지불 기록의 일부를 포함합니다. -Wikipedia

건강 정보를 개인에게 연결할 수는 없습니다. 충돌 덤프 및 로그는 익명화되어 민감한 정보를 제거하거나 전혀 보내지 않아야합니다.

어쩌면 이것은 특정 사례에 적용되지 않으므로 일반적인 메모입니다. 나는 그것이 군사 및 재무 등과 같은 민감한 정보를 처리하는 다른 영역에 적용된다고 생각합니다.

기본적으로 가장 쉬운 방법을 생산하는 덤프 파일은 사용하여 하는.을 변경할 필요가 없습니다.

하는 부분의 디버깅을 위한 도구로 windows,문서에서 언급니다.하이 기본적으로 거대한 vbscript 자동화 windbg.

당신이해야 할 것을 사용 하:

  1. 다운로드 및 설치 디버깅을 위한 도구 windows to c:\debuggers
  2. 응용 프로그램을 시작합니다
  3. 열 명령줄로 이동 c:\debuggers
  4. 이 라인은"하는 충돌 your_exe.exe"
  5. 을 재현 충돌

당신이 얻을 덤프하는 모든 정보를 확인할 수 있습니다.을 열 수 있습니다 덤프에서 좋아하는 디버거.내 windbg 명령은"분석-v"나를 도와에서의 40%이상에서는 모든 충돌이 일어난에서는 고객 사이트이었지 않을 재현할 수 있습니다.

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