Я отладки программного обеспечения, которое в конечном итоге происходит сбой с одним из следующих сообщений:отладка проблема распределения памяти Visual C++
1. DAMAGE: after normal block (#24729280) at 0x00D710E0
2. Debug Assertion Failed
Program: D:\Soft\Test.exe
File: dbgheap.c
Line: 1017
Expression: _BLOCK_TYPE_IS_VALID(phead->nBlockUse)
Это программное обеспечение действительно старое, но менять его сейчас не вариант. Он написан на Visual C++ 6.0. Мы предполагаем, что это переполнение буфера, поэтому мы пытаемся найти способы определить, где это происходит.
Я нашел информацию о PageHeap (который, кажется, в состоянии рассказать мне, что я хочу) и GFlags, но, похоже, я не могу заставить его работать.
Я создал тестовую программу:
char* test;
test = new char[5];
test[5] = 'a';
delete[] test;
, который вызывает ошибку:
DAMAGE: after normal block (#55) at 0x1671920
Затем я попытался прикрепление PageHeap к нему, запустив:
gflags.exe /p /enable MemoryTest.exe /full
, а затем перезапустив он (как через интерфейс Visual C++ 6.0, так и через проводник Windows), что привело к той же ошибке.
Затем я попытался скомпилировать версию релиза, и побежал через интерфейс Visual C++ 6.0, чтобы получить ошибку:
User breakpoint called from code at 0x7c90120e
А из проводника Windows, я только что получил диалог окна прошу меня отправить отчет об ошибке.
Что мне не хватает?
Я пытаюсь использовать это для отладки примера, который я создал. Удалось перейти к шагу 5 (перезагрузить файл PDB), затем нажмите f5. Вот когда я получаю две ошибки: поврежденный шаблон суффикса и поврежденный блок кучи, но я не могу понять, как и почему это произошло ... – Rodrigo
Вы можете попробовать, запустив exe с прикрепленным отладчиком. Этого можно достичь с помощью gflags.exe. Когда вы запустите gflags.exe, вкладка «Файл изображения» 1.Goto 2) Дайте полный путь к вашему exe в текстовом поле изображения. 3) нажмите Tab, чтобы включить 4) Дайте полный путь к windbg -g в текстовом поле Debugger. –
Я попытался открыть gflags.exe, перейдя к файлам изображений, выбрал мой exe и выбрал вариант отладки, заполняющий его C: \ DebugTools \ windbg.exe -g. Затем я попытался нажать «ОК», но ничего не произошло. Затем я нажал кнопку запуска, но отладки не было показано. – Rodrigo