내가 비주얼 스튜디오 9.0에서 "출력"창에서이 메시지를 인쇄 디버깅 오전 MFC 프로그램 :Visual C++ : 할당 크기가 잘못되었습니다. 디버거가이 메시지에서 멈추도록 강제하는 방법?
HEAP[AppName.exe]: Invalid allocation size - 99999998 (exceeded 7ffdefff)
나는이 나쁜 "새로운", 초기화되지 않은 변수 또는 유사한 오류로 인해 확신 .
질문 : 스택 추적을보고 문제를 해결할 수 있도록이 메시지에서 디버거를 멈추게하려면 어떻게해야합니까?
편집 : 다음 스 니펫은 동일한 경고를 표시하지 않습니다. 대신 Invalid allocation size: 4294967295 bytes.
스타일 메시지가 생성됩니다.
int stupid = -1;
char *bob = new char[stupid];
그리고 :
malloc(-1);
그래서, 나는 그것이 자신의 메모리 관리와 시스템 DLL 내에서오고하거나 다른 API를 사용하고 생각한다.
거기서 깨지는 데 문제가 있습니다. 나는'{,, ntdll.dll} _DbgPrint @ 4'의 다양한 조합을 시도했습니다. 어떤 아이디어? –
하나의 방법은 ntdll.dll에서'dumpbin'을 사용하여'DbgPrint()'의 이미지베이스와 오프셋을 찾고, 둘을 합쳐서 함수의 가상 주소를 찾은 다음 그 주소에 브레이크 포인트를 만듭니다. 프로세스가 실행되면 완료됩니다. 따라서 단계별로 설정 한 다음 중단 점을 설정 한 다음 계속해야합니다. –
언어를'Unknown '로 설정하고'{,, ntdll.dll} _DbgPrint' 함수를 사용하여 중단 점을 작동 시키십시오. 알았다! 힙 메시지로 연결되는'CListCtrl :: GetColumn' 호출. –