Старый 20.07.2014, 16:13   #1   
Форумец
 
Аватар для Spectator
 
Сообщений: 39,861
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
RAD Studio и утечки памяти

В общем, дело такое. В относительно свежей редакции RAD Studio обнаружился крайне неприятный глюк.
Создаем стандартный Win32 проект, пусть будет обычный гуёвый, в FormShow или по кнопке, не важно, главное чтобы код сработал после запуска, выделяем с помощью обычного оператора new область памяти, произвольного объема.
Теперь пробуем программу завершить, штатным образом, по "крестику", кнопке выхода, через меню, не важно.
и... падаем. где то в дебрях VCL.

RAD Studio - это, кто вдруг не в курсе, последнее название прожекта ранее известного как С++ Builder / Delphi.

Собственно вопрос основной: как с этим жить? Первое что пришло в голову - сторонний детектор утечек памяти, что в любом случае вещь полезная. Кто какой может посоветовать проверенный на собственной шкуре, и именно в контексте хорошей интеграции с актуальной версией RAD Studio? Которая очень актуально не дает закрыться корректно программе из-за банально забытого освобождения памяти. Если кто знает другое грамотное решение довольно пикантной ситуации - с благодарностью выслушаю.

Вариант писать программы как истинный самурай, без единой ошибки, безусловно интересен, но не очень... так что прошу не предлагать))) Интересно услышать того кто на практике с этим сталкивался и какое то грамотное решение, быть может в настройках? нашел и готов безвозмездно поделиться с общественностью, как минимум в моем лице.

Версия RAD Studio если у кого какая более менее хотя бы свежая есть, где подобное не наблюдается, тоже с интересом бы узнал номер билда / апдейта / патча. А то как то грустно слишком, вроде бы софтинка стала заметно приятнее в общении, со времен когда она была билдеро-дельфей, но вот такой косяк перечеркивает все плюсы.

Вообще у меня такое ощущение что это какая-то криво работающая фича, которая хочет сообщить об утечке, но вместо этого где то глючит сама... если можно штатными средствами самой студии это поправить, было бы совсем здорово если бы кто подсказал.

Побочные вопросы по продуктам линейки RAD Studio если тут будут - тему переименую / переоформлю , я не против совершенно, наоборот лучше темы не плодить.
  Ответить с цитированием
Старый 20.07.2014, 18:26   #2   
Registered User
 
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56

Hopkroft вне форума Не в сети
Spectator, Eurekalog вам в помощь. С помощью неё обнаруживал утечки в приложениях написанных в CodeGear.
Но у меня есть подозрение, что может глючит какой-то компонент, который ставиться для "прокачки" самой IDE.
Непонятно и ещё одно, какая версия CodeGEar используется и что будет, если просто собрать проект и запустить его отдельно от IDE.
Продукт который я описал выше - позволяет интегироваться в приложение, и в дальнейшем даёт возможность получать отчёт о работы программы. Вроде как даже триалка у него есть. Но можно найти и .... вообщем если что - пиши в личку, кину ссылку. ХОтя найти особого труда не составляет
  Ответить с цитированием
Старый 20.07.2014, 19:12   #3   
Форумец
 
Аватар для Spectator
 
Сообщений: 39,861
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Цитата:
Сообщение от Hopkroft Посмотреть сообщение
Spectator, Eurekalog вам в помощь. С помощью неё обнаруживал утечки в приложениях написанных в CodeGear
спасибо! на вид что-то интересное, как минимум.
уже смотрю. с покупкой лицензионной версии я, думаю, справлюсь как нибудь самостоятельно))) триалку уже поставил, сегодня же поковыряю. отпишусь тогда по результатам отдельно. мне да, отслеживания утечек будет вполне достаточно. сверхмощное что-то не нужно, вроде адекватный код пишу относительно)) но вот после активного использования VS в своё время, мне очень сильно не хватает конкретно этого. там всё просто - не освободил память, на выходе получил дамп, и по шее от начальника, если он в этот момент оказался рядом))) а тут столько лет прошло, и такой элементарной вещи не догадались сделать.
я на днях просто пошел покурить, с запущенной программой, вернулся и TaskMan'е увидел что откушал три гига памяти. мне что то реально дурно стало, я к таким цифрам не привык еще.
в таймере, 50-миллисекундном (скорость выполнения функции тестировал), в совершенно сыром проекте чуток совсем не освободил, ага.
  Ответить с цитированием
Старый 20.07.2014, 19:22   #4   
Мы вместе
 
Аватар для DWanek
 
Сообщений: 917
Регистрация: 15.04.2005
Возраст: 40

DWanek вне форума Не в сети
Цитата:
Сообщение от Spectator Посмотреть сообщение
сторонний детектор утечек памяти
Очень долгое время используем для delphi менеджер под названием FastMM http://sourceforge.net/projects/fastmm/ Очень довольны.

Вместе с оператором New(), вроде как, нужно в конце использовать оператор Dispose(), который очищает эту выделенную память. При достаточно большом разнообразии задач ни разу не пользовался этими операторами. Для работы с произвольными данными, которые нужно хранить в памяти, читать, писать, копировать, сохранять и т.д. пользуюсь классами типа TStream или TMemoryStream.
  Ответить с цитированием
Старый 20.07.2014, 19:45   #5   
Форумец
 
Аватар для Spectator
 
Сообщений: 39,861
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Цитата:
Сообщение от DWanek Посмотреть сообщение
Очень долгое время используем для delphi менеджер под названием FastMM http://sourceforge.net/projects/fastmm/ Очень довольны.
ну это я в курсе, спасибо всё равно, но нечто подобное я между делом уже сам написал. хотелось бы что-то посерьезнее. я, к сожалению, New / Dispose в сишном эквиваленте использую гораздо чаще чем TStream)))
  Ответить с цитированием
Старый 20.07.2014, 21:06   #6   
Registered User
 
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56

Hopkroft вне форума Не в сети
DWanek, а что за контора, которая сейчас Delphi использует? Знаю 2 таких, одна где завод Калина сидит, другая рядом в Бизнес центре, для банка софт пишет. Случаем не оттуда?
  Ответить с цитированием
Старый 21.07.2014, 05:15   #7   
Мы вместе
 
Аватар для DWanek
 
Сообщений: 917
Регистрация: 15.04.2005
Возраст: 40

DWanek вне форума Не в сети
Hopkroft, нет. Вот это сделали, сейчас развиваем и дописываем: http://ufo-game.ru/ Не сайт естественно, а игру
  Ответить с цитированием
Старый 21.07.2014, 09:52   #8   
Registered User
 
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56

Hopkroft вне форума Не в сети
DWanek, круто! Успехов и процветания проекту!
  Ответить с цитированием
Старый 23.07.2014, 15:28   #9   
Форумец
 
Аватар для Spectator
 
Сообщений: 39,861
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Hopkroft, докладаю... в общем и целом оно встало. проект собирается и запускается.
EMemLeaksBCB.cpp в проект добавлен.
в Packages добавил EurekalogExpert.bpl, вроде нормально встал. но тут начались фокусы. фокус первый - в диалоге Components, вызываемого по кнопке Components из Project Options указано что внутре у ней две компоненты - TEurekaLog и TEurekaLog7. Фокус второй - в режиме дизайна формы в окне Tool Palette есть библиотека EurekaLog, но внутри только TEurekaLog. Который если кинуть на форму и запустить программу приводит к следующему результату

Debug Output:
ExceptionLog unit and TEurekaLog component can only be used in compatibility mode.

Please, use ExceptionLog7 and TEurekaLog7 component for new applications without compatibility mode enabled.


заюзать TEurekaLog7 я не могу так просто, поскольку его нет в палитре компонент. Не было у вас такой хрени?
  Ответить с цитированием
Старый 23.07.2014, 16:21   #10   
Registered User
 
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56

Hopkroft вне форума Не в сети
Spectator, ну у меня работам с этим продуктом заключалась в проставлении галки Активировать Eurekalab(В настройках проекта). Потом протыкал галки, что мне нужно искать. Очень немаловажный момент в том, что настройки самой IDE влияют на те ошибки, которые будет отлавливать EurekaLab.
После этого собирал проект, и в процессе работы, выскакивало окошко этого продукта, где было сказано в каком месте у меня утечка или другая бяка.
До исползования компонентом как-то руки не дошли, да и полученной информации мне оказалось достаточно.

Последний раз редактировалось Hopkroft; 23.07.2014 в 16:33. Причина: уточнение конфигурации
  Ответить с цитированием
Старый 23.07.2014, 16:37   #11   
Форумец
 
Аватар для Spectator
 
Сообщений: 39,861
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Hopkroft, ну я понял, установкой конкретной компоненты обычно один человек в конторе и заведует, я понимаю) ок, пока тогда брошу, потом еще повожусь, может что придумаю. что-то сглючило, похоже, надо просто с нуля попробовать.
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind