powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Выловить утечки памяти с помощью madExcept
11 сообщений из 11, страница 1 из 1
Выловить утечки памяти с помощью madExcept
    #40108784
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, пожалуйста, как правильно пользоваться madExcept`ом. Как локализовать проблему утечек?
Не могу нормально понять, что я создаю и где и почему оно не уничтожается.

Вопросы по картинке.
1. Читать нижний список нужно снизу вверх?
2. Вверху, где обведено красным, как я понимаю, это и есть утечки памяти в байтах.
3. Внизу, где обведено синим, это места вызова, т.е. мои модули, откуда нужно начинать свистопляску.
4. Но я не вижу, где у меня, в моих модулях создается StringList.
Вероятно, что создается какая-то другая компонента, которая в свою очередь и создает StringList?

5. Не понятно, почему по два раза вызывается некоторые мои методы. Я добавил логирование в процедуру SearchByPhoneD() и вижу, что она вызывается один раз.
...
Рейтинг: 0 / 0
Выловить утечки памяти с помощью madExcept
    #40108786
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. вот момент создания StringList, но это уже не в моем модуле.
...
Рейтинг: 0 / 0
Выловить утечки памяти с помощью madExcept
    #40108794
AWSVladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
Т.е. вот момент создания StringList, но это уже не в моем модуле.

не пользовался, не знаю.
Но утечки прекрасно ловятся FastMM с включенными опциями, там все видно.
...
Рейтинг: 0 / 0
Выловить утечки памяти с помощью madExcept
    #40108798
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

На картинке все написано:



Иди и смотри что у тебя там создается, а потом не убивается.

Судя по всему это некий вручную сгенеренный контрол UniGUI.
...
Рейтинг: 0 / 0
Выловить утечки памяти с помощью madExcept
    #40108800
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотрю в книгу, вижу фигу

я понимаю, что написано, но расшифровать не могу

Посмотрел "двойные строки". Я так понял, что это начало и конец функций. Номера строк указывают на начало и конец.

Но кто потом создает TStringList и GetMem, я понять не могу.
...
Рейтинг: 0 / 0
Выловить утечки памяти с помощью madExcept
    #40108801
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
Но кто потом создает TStringList и GetMem, я понять не могу.

Написано же что он глубоко в кишках UniGUI созадется...
Причем в той части, что сорцами не охвачена.

Еще раз: ищи что ты за компоненты создаешь.
...
Рейтинг: 0 / 0
Выловить утечки памяти с помощью madExcept
    #40108803
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
Судя по всему это некий вручную сгенеренный контрол UniGUI.


Я создаю в runtime вкладку TUniTabSheet и внутри нее создаю фрейм TuniFrame с сеткой TUniDBGrid.
Но показываю только если есть что показывать. Иначе показываю только сообщение, что ничего не найдено.
Все это живет внутри самого модуля фрейма.
В качестве AOwner передается главная форма приложения, внутри которой живет TUniPageControl.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
procedure SearchByPhoneD(const sTel: string; AOwner: TComponent);
Var
 T : TUniTabSheet;
 frdFindPhone1: TfrdFindPhone;
begin


  if Trim(sTel).IsEmpty then
  begin
    MessageBox('вы не ввели номер телефона');
    exit;
  end;


  T := TUniTabSheet.Create(AOwner);

    T.PageControl := fmMain.pgMain;
    T.Caption     := constCheckPhone + ': ' + sTel;
    T.ImageIndex  := 8;
    T.Closable    := True;
    t.OnClose     := fmMain.TabSheetClose;
    T.Name        := 'UniTabSheet_' + t.PageIndex.ToString;

      // заменяем кнопку на более крупную, см. CSS
    if T.Closable then
      T.JSInterface.JSAddListener(constAfterLayout, functAddClsCustomSheet);

    UniMainModule.SessionActiveForm := T.Caption;

    frdFindPhone1 := TfrdFindPhone.Create(T);
    frdFindPhone1.Name   := 'frdFindPhone' + T.PageIndex.ToString;
    frdFindPhone1.Parent := T;

    frdFindPhone1.Phone  := sTel;//SetPhone() здесь frdFindPhone.Show;
end;




проверяю
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
procedure SetPhone(...);
begin
...
...
qSearchPhone.open;

  if qSearchPhone.RecordCount = 0 then
  begin
    MessageBox('объявление с таким номером не найдено');
    qSearchPhone.close;
    (self.Owner as TUniTabSheet).Free;// уничтожаем вкладку
  end
  else
  begin
    fmMain.pgMain.ActivePage := self.Owner as TUniTabSheet;
    BeforCreate;
    self.Show;
  end;
end;
...
Рейтинг: 0 / 0
Выловить утечки памяти с помощью madExcept
    #40108804
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
Я создаю в runtime вкладку TUniTabSheet и внутри нее создаю фрейм TuniFrame с сеткой TUniDBGrid.
Но показываю только если есть что показывать. Иначе показываю только сообщение, что ничего не найдено.

А ты так не делай.

P.S. Per rectum ad astra.
...
Рейтинг: 0 / 0
Выловить утечки памяти с помощью madExcept
    #40108805
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. где-то в отдельном модуле сперва проверять?
просто придется код дублировать тогда
ну ладно....
...
Рейтинг: 0 / 0
Выловить утечки памяти с помощью madExcept
    #40108806
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если твои контролы созданы в рантайме но юзеру никогда в браузере не отображались, то они могут быть не полностью инициализированы.
...
Рейтинг: 0 / 0
Выловить утечки памяти с помощью madExcept
    #40108807
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, я об этом догадывался, но очень надеялся на чудо
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Выловить утечки памяти с помощью madExcept
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]