2010-02-19 3 views
3

나는 MiniDumpWriteDump를 사용하여 충돌시 덤프 파일을 생성 해 왔습니다. 나는 전체 메모리 덤프를하려고 노력했다. 이 작동하는 것으로 예상대로 큰 파일을 생성합니다.C++ MiniDumpWriteDump - FullMemoryDump에서 많은 정보를 제공하지 않습니다.

그러나이 거대한 파일을 Visual Studio (2005)로로드 할 때 힙의 변수 값을 볼 수없는 것 같습니다. 실제로 그것은 정상적인 덤프보다 더 많은 정보를 제공합니다 ...

내 전화 MiniDumpWriteDump는 다음과 같습니다.

MINIDUMP_EXCEPTION_INFORMATION mdi; 

mdi.ThreadId = GetCurrentThreadId(); 
mdi.ExceptionPointers = in_pInfo; 
mdi.ClientPointers = FALSE; 

MiniDumpWriteDump(GetCurrentProcess(),GetCurrentProcessId(), 
    fHan, 
    MiniDumpWithFullMemory, 
    &mdi, 
    0, 
    0); 

참고 : 나는 PDB의, 유효한 스택의 전체 세트를 가지고 있고, 내 테스트 응용 프로그램에서 나는 0으로 나누기에 오류를 꾀하고있다.

이유가 무엇인가요?

건배 리치

+0

WinDbg를 사용해 보셨습니까? 거기서 작동합니까? – Andy

+0

아무거나 이것의 오는가? –

답변

2

올바른 .PDB 파일이없는 아마 때문이다. 또는 옵티마이 저 버전의 RSA 암호화를 통해 코드가 작성 되었기 때문입니다. 포인터가 레지스터에 전달되는 x64 빌드가 있기 때문입니다. 또는 힙 손상으로 인해 코드가 충돌하여 디버그 정보를 신뢰할 수 없게 만들었습니다. 또는 부서지는 실의 더미는, 부딪 치기 위하여 빵 부스러기를 남겨 두지 않고 날려진다.

선택하십시오.

+0

글쎄, 난 애플 리케이션을 테스트하고있어, 그래서 제로에 의해 나눕니다. 스택은 손상되지 않았습니다. pdb는 모두로드되고 올바릅니다. 그러나 어떤 힙이나 전역 변수의 값을 볼 수 없습니다. – Rich

+1

그런 중요한 정보로 질문을 업데이트하십시오. 이 말을 앞두고 말하면 모든 사람의 시간을 낭비하는 것입니다. 또한 사용 된 MiniDumpWriteDump() 플래그와 "볼 수없는"플래그가 무엇인지 정확하게 문서화해야합니다. –

+0

질문이 업데이트되었습니다. – Rich