2012-01-03 3 views
0

메모리 힙 예외 (손상)가 발생하는 응용 프로그램이 있습니다.메모리 힙 손상 및 GFlags/windbg

"gflags.exe를 :

웹에

나는 문장 이런 종류의 발견했다. 힙 디버그 프로그램에 GFlags 사용하면 표준을 설정할 수/전체, 또는/DLL이 그 것이다 옵션을 힙 ".

당신의 프로그램이 힙 메모리를 덮어 쓰기 할 때 액세스 위반 및 손상 오류를 생성하는 운영 시스템을 강제하지만 구체적으로 어떻게 버그를 일으키는 내 소스 코드의 라인을 찾을 수에 GFlags 또는 Windbg에서 때와 내가 할 수 있습니까?

웹에 좋은/합성지가 있습니까?

답변

2

GFlags를 사용하면 Windows의 힙 관리자가 힙 문제의 디버깅을 돕기 위해 다르게 동작 할 수 있습니다.

/full 옵션과 함께 사용하면 할당 된 버퍼 길이에 도달하면 액세스 위반으로 인해 프로그램이 "충돌"합니다.

(GFlags/full이 없으면 프로그램이 계속 진행될 수 있으며 나중에 문제가 많이 나타납니다.) VS 또는 windbg로 바로 디버깅을 수행하거나 크래시 덤프를 수집 할 수 있습니다.

디버거가 이제 오류 (명령어 포인터) 을 가리켜 야하며 버그를 일으킨 원본을 찾을 것입니다.

/full 옵션을 사용하면 프로그램에서 훨씬 많은 메모리를 사용하므로 상대적으로 작은 프로그램에서만 사용할 수 있습니다. /full 옵션으로 "크래시"가 발생하지 않는 경우/full/backwards

+0

! 예를 들어! analyze -v를 통해 IP가 표시됩니까? – Guillaume07

+0

예 소스 및 .prd를 사용할 수있는 경우 소스의 스 니펫을 볼 수도 있습니다. 그러나 오류가 f.eks memcpy에 대한 잘못된 매개 변수로 인해 발생할 경우 스택으로 다시 코드를 이동해야합니다. –