2012-07-24 2 views
3

VS2008, C. 일부 미리 빌드 된 라이브러리를 사용합니다. 내가 디버거와 호출되는 라이브러리 함수를 통해 내 코드를 단계별로 할 때,이 얻을 :가능한 힙 손상을 디버깅하는 방법은 무엇입니까?

HEAP [unit_test.exe] : 힙 중단 점을 트리거하고있다 35c70 윈도우 근처 최선을 다하고 범위의 마지막 항목 누락 unit_test.exe에 있습니다.

unit_test.exe 또는로드 한 DLL에 버그가 있음을 나타내는 힙 손상이 원인 일 수 있습니다.

unit_test.exe에 포커스가있는 동안 사용자가 F12 키를 누를 때도 발생할 수 있습니다.

출력 창이 더 많은 진단 정보를 가지고있을 수 있습니다.

디버깅하는 방법에 대한 아이디어가 있으십니까?

업데이트 : 코드를 리팩토링하여 printf()를 수행 할 때 팝업이 표시되는지 확인합니다. 나는 또한 무료()가있을 때 그것을 얻는다. 그 줄을 주석 처리하고 malloc()이있을 때 힙 손상 팝업 대화 상자가 나타납니다.

+0

: 어떤 라이브러리와 어떤 기능을 사용하고 있습니까? – holgac

+1

코드에 따라 정확히 몇 가지 옵션을 사용할 수 있습니다. 힙 공간을 직접 할당하고 수정하는 경우 포인터 중 하나에서 디버거에 감시 점을 설정하고 버퍼 오버런과 같은 일부 작업이 수행하지 않아야하는지 확인하려고 할 수 있습니다. – AlcoJaguar

+0

@AlcoJaguar malloc을 무료로 호출합니다 (플랫폼은 Windows XP 임). 모든 포인터에 시계를 넣는 것이 었습니까? – likejiujitsu

답변

4

응용 프로그램 검증 도구를 사용하여 힙 손상을 테스트하는 것이 좋습니다. Application Verifier는 리소스 누출 및 힙 손상을 식별하는 데 도움이되는 Microsoft의 무료 도구입니다. App Verifier는 url : http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=20028에서 찾을 수 있습니다. 힙 손상 및 기타 작업을 수행하는 방법을 알 수 있습니다. http://technet.microsoft.com/en-us/library/bb457063.aspx

이러한 상황에서는 종종 유용합니다.

관련 문제