Здравствуйте, Сергей Выдров, Вы писали:
СВ>Налицо GDI-leaks в очень большом проекте. Написан на COM (т.е. на VC++ и Delphi). Разобраться без тулзов нереально, пожалуй.
СВ>Что посоветуете? Никогда не работал ни с одним таким отладчиком.
Здравствуйте, gandalf_g, Вы писали:
_>Здравствуйте, Сергей Выдров, Вы писали:
СВ>>Налицо GDI-leaks в очень большом проекте. Написан на COM (т.е. на VC++ и Delphi). Разобраться без тулзов нереально, пожалуй.
СВ>>Что посоветуете? Никогда не работал ни с одним таким отладчиком.
_>Может NuMega Bounds Checker поможет малость?
Здравствуйте, Сергей Выдров, Вы писали:
СВ>Здравствуйте, gandalf_g, Вы писали:
_>>Здравствуйте, Сергей Выдров, Вы писали:
СВ>>>Налицо GDI-leaks в очень большом проекте. Написан на COM (т.е. на VC++ и Delphi). Разобраться без тулзов нереально, пожалуй.
СВ>>>Что посоветуете? Никогда не работал ни с одним таким отладчиком.
_>>Может NuMega Bounds Checker поможет малость?
СВ>Ну это понятно, я его уже смотрел. А еще что?
Есть CRT функции, показывающие есть ли у тебя лики. Так не подходит?
Здравствуйте, Сергей Выдров, Вы писали:
СВ>Налицо GDI-leaks в очень большом проекте. Написан на COM (т.е. на VC++ и Delphi). Разобраться без тулзов нереально, пожалуй.
СВ>Что посоветуете? Никогда не работал ни с одним таким отладчиком.
Изловить места, где GDI-объекты создаются/запрашиваются.
Помедитировать над ними... Обернуть в умные указатели... особенно — если апишная функция возвращает "ненужные" хэндлы (например, ::SelectObject(hDC,hNewGdiObj) ).
BoundsChecker подскажет, какие именно объекты текут, и даже — примерно где. (Нужно только пересобрать весь проект с инструментацией).
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, Сергей Выдров, Вы писали:
СВ>>Налицо GDI-leaks в очень большом проекте. Написан на COM (т.е. на VC++ и Delphi). Разобраться без тулзов нереально, пожалуй.
СВ>>Что посоветуете? Никогда не работал ни с одним таким отладчиком.
К>Изловить места, где GDI-объекты создаются/запрашиваются. К>Помедитировать над ними... Обернуть в умные указатели... особенно — если апишная функция возвращает "ненужные" хэндлы (например, ::SelectObject(hDC,hNewGdiObj) ). К>BoundsChecker подскажет, какие именно объекты текут, и даже — примерно где. (Нужно только пересобрать весь проект с инструментацией).
Проблема в том, что, как я говорил, проект написан на COM'е. По этой причине CRT, умные указатели, BoundsChecker не очень подходят.
Хотелось бы запустить из-под такого отладчика исполняемый файл, а потом получить статистику по модулям (dll, ocx, exe): утекло столько-то хэндлов таких-то типов. Все. Дальше ответственный специалист берется за дело .
Здравствуйте, Сергей Выдров, Вы писали:
К>>Изловить места, где GDI-объекты создаются/запрашиваются. К>>Помедитировать над ними... Обернуть в умные указатели... особенно — если апишная функция возвращает "ненужные" хэндлы (например, ::SelectObject(hDC,hNewGdiObj) ). К>>BoundsChecker подскажет, какие именно объекты текут, и даже — примерно где. (Нужно только пересобрать весь проект с инструментацией).
СВ>Проблема в том, что, как я говорил, проект написан на COM'е. По этой причине CRT, умные указатели, BoundsChecker не очень подходят.
Я не говорил про CRT.
Под словами "проект написан на COM" ты имеешь в виду, что в нём полно сторонних ActiveX'ов, которые не подлежат инструментации?
СВ>Хотелось бы запустить из-под такого отладчика исполняемый файл, а потом получить статистику по модулям (dll, ocx, exe): утекло столько-то хэндлов таких-то типов. Все. Дальше ответственный специалист берется за дело .