Сообщение 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) один и тот же.
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) один и тот же.
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) один и тот же.