릴리스 된 프로그램의 충돌을 분석 할 수 있도록 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을 ?? ??
무엇이 물음표입니까? ?? ??.그것은 매달린 포인터 문제를 나타 냅니까? 다른 것?
나는 정보를 얻지 못하고 놀랍지는 않다.'실제로 코드가 아니었던 코드를 실행하려고 시도한 것처럼 들린다.'0x548BFFD5' 아마도 UB의 형식에 따라 반송 주소가 손상되어 임의의 메모리 조각을 실행하려고 시도했을 수 있습니다. – Borgleader