Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Утечки памяти @ MemCheck


Автор: Fedia 20.8.2007, 22:17
Доброго времени суток !

Давненько не был на форуме и накопилось много вопросов smile 

Для поиска утечек памяти использую модуль MemCheck версии 2.67. После закрытия программы формируется файл LogCX.txt примерно следующего содержания:
Цитата
Leak #2 User allocated memory (GetMem)
    Size: 24
    1 Occurence
    call stack - 0 : (no debug info) Find error: 01D1FDDC
    call stack - 1 : Module IdIMAP4.pas Routine @Idimap4@TIdIMAP4@Capability Line 2036 Find error: 0052B518
    call stack - 2 : Module IdIMAP4.pas Routine @Idimap4@TIdIMAP4@Login Line 1909 Find error: 0052B057
    call stack - 3 : Module IdIMAP4.pas Routine @Idimap4@TIdIMAP4@Connect Line 1946 Find error:

Почти в каждом блоке "Leak" первой строчкой следует строка ...(no debug info) Find error... Может кто-нибуть проконсультировать: почему модуль MemCheck может не находит отладочной информации ?
Кстати большинство утечек происходят в модулях Indy компонентов версии 10. Может быть у кого-нибудь есть версия  Indy с пофиксинными утечками памяти, буду очень благодарен.

Автор: Snowy 20.8.2007, 22:41
Цитата(Fedia @  20.8.2007,  22:17 Найти цитируемый пост)
Может кто-нибуть проконсультировать: почему модуль MemCheck может не находит отладочной информации ?
Вероятно потому, что в опциях проекта, содержащего модуль, не указана опция Debug Info.

Цитата(Fedia @  20.8.2007,  22:17 Найти цитируемый пост)
Может быть у кого-нибудь есть версия  Indy с пофиксинными утечками памяти, буду очень благодарен.
Скачай последнюю версию.
Если и там течёт - либо где-то что-то не уничтожил, либо огрехи индейцев.
Но это уже вопрос к ним...
Вряд ли кто станет править Indy - на то есть разработчики. Проще связаться с ними.

Автор: ne0n 20.8.2007, 22:43
Fedia, может в настройках компилятора галочка не отмечена smile 

Snowy как всегда опередил smile  

Автор: Fedia 20.8.2007, 22:57
Хотел сразу принтскрин выложить, не сразу нашел нужную функцию на форуме. На рисунке настройки проекта.
Кроме того на закладке Linker установлено формирование детализированной карты проекта и отмечена галочка Include TD32 debug info.

Цитата(Snowy @  20.8.2007,  22:41 Найти цитируемый пост)
Скачай последнюю версию.
Если и там течёт - либо где-то что-то не уничтожил, либо огрехи индейцев.


Вроде качал последнюю, которую нашел. Ок, сейчас поищу их официальный сайт.

Автор: Snowy 20.8.2007, 23:07
Оффсайт - www.indyproject.org
Что касается опций - я говорю про настройки проекта, содержащего модуль.
То есть не самого exe, а пакета (читай dpk), включающего модуль.

Автор: Fedia 20.8.2007, 23:19
Цитата(Snowy @  20.8.2007,  23:07 Найти цитируемый пост)
Оффсайт - www.indyproject.org

Спасибо.


Цитата(Snowy @  20.8.2007,  23:07 Найти цитируемый пост)
То есть не самого exe, а пакета (читай dpk), включающего модуль.

Понял, сейчас попробую изменить настройки пакета.

Автор: Fedia 20.8.2007, 23:39
Snowy, к сожалению изменение настроек dpk не помогло. 
Еще могу сказать, что в списке утечек попадаются и мои модули, непосредственно подключенные к проекту программы, и в описании этих утечек тоже есть строка: 
Цитата
 call stack - 0 : (no debug info) Find error: 005305F8
.

Автор: Snowy 21.8.2007, 00:33
Цитата(Fedia @  20.8.2007,  23:39 Найти цитируемый пост)
Snowy, к сожалению изменение настроек dpk не помогло. 
Попробуй сделать build.

Цитата(Fedia @  20.8.2007,  23:39 Найти цитируемый пост)
Еще могу сказать, что в списке утечек попадаются и мои модули, непосредственно подключенные к проекту программы
К сожалению не знаком с MemCheck... Возможео стоит обратиться к документации модуля.

Автор: Fedia 21.8.2007, 04:03
Цитата(Snowy @  21.8.2007,  00:33 Найти цитируемый пост)
Попробуй сделать build.

Поскольку некоторые изменения вступают в силу только после билда, я его уже почти автоматом делаю. И в этот раз аналогично.

Цитата(Snowy @  21.8.2007,  00:33 Найти цитируемый пост)
Возможно стоит обратиться к документации модуля. 

Ок, согласно документации: 
Цитата

Q13: How should I use the addresses in the log file when it is as below ?

*** MEMCHK: Blocks STILL allocated ***

Leak #0 - 1 occurence(s) - USER , Size: 100, allocated at [an unkown address] (no debug info)
Dump: [Ий@.............ў....... GГ.....?.......'HГ.-?A.ј.A. оB.эоB.yRD.h\D.v‚B.?ёB.{5D.]
call stack -1 : 000274A1 (no debug info)
call stack -2 : 0001FF74 (no debug info)
call stack -3 : 000200DB (no debug info)
call stack -4 : 00027276 (no debug info)
call stack -5 : 0002A817 (no debug info)
call stack -6 : 0001FEBF (no debug info)
call stack -7 : 00026FF9 (no debug info)

A: You can use "Find error" ("search" menu) to find the line an address maps to. It is easier to turn on td32 debug informations (project options, linker tab). That will make the MemCheck log file much more usable.
 Нужно просто поставить галочку "td32 debug informations".
Ладно, немного подожду, может кто-то уже сталкивался с такой проблемкой.

Автор: Bose 21.8.2007, 15:43
Цитата(Fedia @  21.8.2007,  04:03 Найти цитируемый пост)
может кто-то уже сталкивался с такой проблемкой.

У меня когда-то было что-то подобное. Лечилось установкой галочки "td32 debug informations" и ребилдом при соблюдении следующих условий:
1) Не использовались rutime-packages 
2) в Library Path дельфей был указан путь к исходникам используемых компонентов.


Возможно стоит попробовать включить пути к исходникам с строку поиска. Это правда увеличит время сброки проекта, зато все компоненты будут пересобираться при каждом buildе. (по моему даже с опциями проекта)

Автор: Fedia 22.8.2007, 00:03
Цитата(Bose @  21.8.2007,  15:43 Найти цитируемый пост)
Возможно стоит попробовать включить пути к исходникам с строку поиска. 

У меня порой MemCheck не находит информации по модулям, находящимся в папке самого проекта. И это самое обидное.
Цитата(Bose @  21.8.2007,  15:43 Найти цитируемый пост)
1) Не использовались rutime-packages

Это означает не использовать опцию "Build with rutime packages"? Если да, то условие соблюдено. Второе тоже.

Автор: dumb 22.8.2007, 11:08
кстати, не знаю как в 2.76, но когда я мучал 2.75, он "косячил" при чтении отладочной инфы - далеко не все записи вычитывал из нужных... правда я его на билдеровском .tds'е мучал, но они вроде как +- одинаковые(не проверял)...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)