문제

나는 힙 부패를 추적하는 폭발을 가지고 있습니다. 표준 페이지 힙 확인을 활성화했습니다

gflags /p /enable myprogram.exe

그리고 이것은 부패를 확인하는 데 성공합니다.

===========================================================
VERIFIER STOP 00000008: pid 0x1040: corrupted suffix pattern 

    10C61000 : Heap handle
    19BE0CF8 : Heap block
    00000010 : Block size
    00000000 : 
===========================================================

전체 페이지 힙 확인을 켜면 (gflags /p /enable myprogram.exe /full) 부패가 도입 될 때 오류가 발생할 것으로 기대하면 더 이상 아무것도 얻지 못합니다.

나는 읽는 동안 내 희망을 얻기 시작했다 고급 Windows 디버깅 : 메모리 손상 파트 II— HEAPS, 이것은 장입니다 고급 Windows 디버깅. WindBG를 설치하고 디버그 기호를 다운로드했습니다 user32.dll, kernel32.dll, ntdll.dll ~에 따르면 http://support.microsoft.com/kb/311503. 이제 프로그램이 디버거에서 중단되면이 명령을 발행하여 힙 페이지에 대한 정보를 볼 수 있습니다.

0:000> dt _DPH_BLOCK_INFORMATION 19BE0CF8-0x20
ntdll!_DPH_BLOCK_INFORMATION
   +0x000 StartStamp       : 0xabcdaaaa
   +0x004 Heap             : 0x90c61000 
   +0x008 RequestedSize    : 0x10
   +0x00c ActualSize       : 0x38
   +0x010 FreeQueue        : _LIST_ENTRY [ 0x0 - 0x0 ]
   +0x010 TraceIndex       : 0
   +0x018 StackTrace       : (null) 
   +0x01c EndStamp         : 0xdcbaaaaa

나는 (null) 스택 추적. 지금, http://msdn.microsoft.com/en-us/library/ms220938%28vs.80%29.aspx 말 :

StackTrace 필드에 여러 가지 이유로 널 값이 아닌 값이 항상 포함되지는 않습니다. 우선 스택 추적 감지는 X86 플랫폼에서만 지원됩니다. 두 번째는 X86 시스템에서도 스택 트레이스 감지 알고리즘이 완전히 신뢰할 수 없습니다. 블록이 할당 된 블록 인 경우 스택 추적은 할당 모멘트입니다. 블록이 풀리면 스택 추적은 자유 순간입니다.

그러나 할당 순간에서 스택 추적을 볼 가능성이 높아지는 사람이 누구나 생각하는지 궁금합니다.

읽어 주셔서 감사합니다!

도움이 되었습니까?

해결책

아,! 더 많은 것을 가능하게해야했습니다 gflags 옵션 :

gflags /i myprogram.exe +ust

이 효과가있는 다음과 같습니다.

ust - Create user mode stack trace database

매개 변수 설명을 볼 때 간단 해 보입니다. 바보 나. 그러나 트레이스 데이터베이스의 크기가 적용되기 전에 다음을 설정해야합니다.

gflags /i myprogram.exe /tracedb 512

... 또는 무엇이든 (MB).

다른 팁

Microsoft에 따르면, C Runtime (CRT) 모듈의 Malloc 함수는 일부 Windows 버전에서 FPO (Frame Pointer Oceision)를 사용합니다. Malloc 함수의 전체 스택 정보가 표시되지 않을 수 있습니다. (http://support.microsoft.com/kb/268343)

가능하면 디버그 버전 CRT (예 : /MDD 옵션)를 연결 하여이 문제를 해결하십시오.

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