Контроль утечек при выполнении Gdi функций

Тема в разделе "Другие", создана пользователем klizardin, 30 июн 2006.

Статус темы:
Закрыта.
  1. klizardin

    klizardin Гость

    Для контроля утечки GDI функций пишу модуль, который подставляет свои функции вместо стандартных из подключаемого модуля. Реализуется это дело путем перехвата API функций. Пример перехвата API функций

    Проблема возникла в том, что я не могу перехватывать функции из MFC42.dll так как в нем не находиться секции ".idata", а именно в ней прописанны функции для импорта.
    Я перехватываю часть функций, которые inline /*программа пишется на С++*/, но реализованные внутри MFC42.dll до них я не могу добраться.

    Изночальная проблема: длл-ка падает под win98 при скролировании области отрисовки документа. Т.к. из-за сложности модуля, да и не родного происхождения (не я его писал, да и автор не все свое использовал) очень тяжелоо искать в коде что неверно. Легче попробовать автоматизированные средства. Bounds checker ничего не выдал. Беглый просмотр кода нашел один нюанс.

    Код (Text):
    //что то вроде
    ...
    CPen pen;
    pen.CreatePen(...)
    CPen* poldpen = pDC->SelectObject(&pen);
    poldpen->DeleteObject();
    ...
    //естественно далее в этом месте никакого SelectObject "вернуть обратно" не вызывается
    //да и в дальнейшем коде сомнительно, что нечто подобное происходит
    возможно существуют и другие подобные нюансы. На этот нюанс BoundsChecker ни как не реагировал.

    Как найти неправильное использование GDI объектов? Есть ли утилиты для этого преднозначенные?
    Если самому писать, то как быть с дллками типа MFC42.dll где нет секции ".idata"? Как они импортируют функции из других модулей?
     
  2. proc

    proc Гость

    Если проблема еще актуальна, скинь часть кода, где отваливается. Попробую помочь.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей