Информация об изменениях

Сообщение Re[2]: Application Verifier повреждение кучи от 11.10.2014 14:51

Изменено 11.10.2014 14:52 nen777w

Здравствуйте, OlegMax, Вы писали:

OM>Здравствуйте, nen777w, Вы писали:


N>>Место где это произошло мне с помощью Application Verifier не определить, придется делать какой то вспомогательный класс + макросы

N>>и рассовывать по коду в места когда по выделенному указателю или смещению от него происходит запись, для отслеживания редиски.

OM>Простой вариант — включить PageHeap, тогда запись за пределами выделенного в хипе блока сразу приведет к легко обнаруживаемому AV.

OM>Надо установить Debugging Tools for Windows, запустить утилиту Global Flags и для заданного процесса поставить одну галочку. Короче, google for "page heap".

Спасибо. Утилиту нашёл, подсунул в закладке Image File путь к бинарю и поставил только эту галку. Приложение стало тормозить еще больше, но к сожалению место где портят память не показывает.
Кстати что за галка Enable Application Verifier? Не понял зачем, если appverif рабоает и без этого.
Правильно ли я понимаю что оно как Application Verifier должно в случае обнаружения такого места сгенерировать int 3 и оставноить отладчик?

Ещё вопрос по appverif, я где то читал, что утилита работает следующим образом, на каждое выделение памяти запомнинает текущий стек приложения.
Но мне то в принципе стек не нужен, я и так знаю где память выделялась (написал специальный класс + макросы для отслеживания этого дела), но просто интересно.
Фигня в том что выделения и освобождения памяти очень много, буквально счёт идёт на тысячи, отследить это руками я пока не представляю как.
Пока благодаря моим спец. классам я знаю только что размер выделенного блока, (когда на free происходит ругань от appverif) один и тот же.
Re[2]: Application Verifier повреждение кучи
Здравствуйте, OlegMax, Вы писали:

OM>Здравствуйте, nen777w, Вы писали:


N>>Место где это произошло мне с помощью Application Verifier не определить, придется делать какой то вспомогательный класс + макросы

N>>и рассовывать по коду в места когда по выделенному указателю или смещению от него происходит запись, для отслеживания редиски.

OM>Простой вариант — включить PageHeap, тогда запись за пределами выделенного в хипе блока сразу приведет к легко обнаруживаемому AV.

OM>Надо установить Debugging Tools for Windows, запустить утилиту Global Flags и для заданного процесса поставить одну галочку. Короче, google for "page heap".

Спасибо. Утилиту нашёл, подсунул в закладке Image File путь к бинарю и поставил только эту галку. Приложение стало тормозить еще больше, но к сожалению место где портят память не показывает.
Кстати что за галка Enable Application Verifier? Не понял зачем, если appverif рабоает и без этого.
Правильно ли я понимаю что оно как Application Verifier должно в случае обнаружения такого места сгенерировать int 3 и оставноиться отладчике?

Ещё вопрос по appverif, я где то читал, что утилита работает следующим образом, на каждое выделение памяти запомнинает текущий стек приложения.
Но мне то в принципе стек не нужен, я и так знаю где память выделялась (написал специальный класс + макросы для отслеживания этого дела), но просто интересно.
Фигня в том что выделения и освобождения памяти очень много, буквально счёт идёт на тысячи, отследить это руками я пока не представляю как.
Пока благодаря моим спец. классам я знаю только что размер выделенного блока, (когда на free происходит ругань от appverif) один и тот же.