2017-10-11 43 views
1

릴리스 된 프로그램의 충돌을 분석 할 수 있도록 Microsoft Minidump 기능을 사용하고 있습니다.Microsoft 미니 덤프 파일이 많은 정보를 제공하지 않습니다.

https://msdn.microsoft.com/en-us/library/windows/desktop/ee416349(v=vs.85).aspx

코드는 다음과 유래 질문에 대한 대답과 유사하다 : 나는 충돌이있을 때

How to write a sample code that will crash and produce dump file?

보통, 내가 비주얼 스튜디오에서 크래시 덤프 파일을 열 수 있으며 소요 이 문제를 정말로 쉽게 해결할 수있는 소스 코드의 불쾌한 줄에.

하지만 때때로 그렇게 쉽지는 않습니다.

문제가되는 소스 행을 찾을 수없는 크래시 덤프 파일이 있습니다. 왜 그런가요? 이 덤프 파일에서 얻을 수있는 유용한 정보는 무엇입니까? 건초 더미에서 바늘을 찾는 데 필요한 정보가 있습니까?

내가하는 일은 다음과 같습니다.

이 릴리스의 소스는 태그로 체크 아웃합니다.

내가 크래시 덤프와 같은 폴더에 해당 PDB 파일을 복사 - 파일 myprogram.exe.3140.dmp

그때 EXE 파일을 빌드하는 데 사용되는 컴파일러 크래시 덤프를 열고, 비주얼 스튜디오입니다 2012 년

나는 다음 몇 가지 유용한 정보를 볼 수

:

마지막 쓰기 시간 2017년 10월 10일 15시 28분 52초 프로세스 아키텍처 : 트레드를 읽거나 쓰려고했습니다 86 예외 코드가 0xc0000005 예외 정보 가상 주소로 적절한 액세스 권한이 없습니다. 힙 정보 현재

OS 버전 6.1.7601

모듈 : myprogram.exe로 1.7.41.0 myprogram.dll 1.1.0.27 등

은 그 때 나는 원주민 만

와 디버그를 클릭 다음 대화 상자가 나타납니다.

myprogram.exe.3140.dmp 0x548BFFD5 처리되지 않은 예외 : 0xC0000005 : 실행중인 액세스 위반 위치 0x548BFFD5.

로드 된 모듈에서 현재 스택 프레임을 찾을 수 없습니다. 이 위치에 소스를 표시 할 수 없습니다.

나는 브레이크 버튼을

을 클릭 그런 다음 프레임 모듈에 있지 말한다. 로드 된 모듈에서 현재 스택 프레임을 찾을 수 없습니다. 이 위치에 소스를 표시 할 수 없습니다.

나는 다음 뷰 분해 하이퍼 링크를 클릭하고 다음을 참조하십시오

548BFFD5을 ?? ??

무엇이 물음표입니까? ?? ??.그것은 매달린 포인터 문제를 나타 냅니까? 다른 것?

+0

나는 정보를 얻지 못하고 놀랍지는 않다.'실제로 코드가 아니었던 코드를 실행하려고 시도한 것처럼 들린다.'0x548BFFD5' 아마도 UB의 형식에 따라 반송 주소가 손상되어 임의의 메모리 조각을 실행하려고 시도했을 수 있습니다. – Borgleader

답변

0

물음표는 0x548BFFD5 주소 (응용 프로그램이 실행하려고 시도하는)의 데이터가 의미있는 것으로 분해되지 않음을 의미합니다.

아마도 포인터가 매달려 있거나 더 이상 존재하지 않는 개체가 가리키는 함수를 실행하려고 시도했을 것입니다. 또는 아무 것도 가리 키지 않는 함수 포인터를 실행하려고합니다.

기호로 컴파일 한 경우 호출 스택/스택 추적을 다시보고 문제가 시작되는 곳을 확인할 수 있습니다.