Гость
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Выловить утечки памяти с помощью madExcept / 11 сообщений из 11, страница 1 из 1
02.11.2021, 13:16
    #40108784
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выловить утечки памяти с помощью madExcept
Подскажите, пожалуйста, как правильно пользоваться madExcept`ом. Как локализовать проблему утечек?
Не могу нормально понять, что я создаю и где и почему оно не уничтожается.

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

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

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

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



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

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

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

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

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

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

Еще раз: ищи что ты за компоненты создаешь.
...
Рейтинг: 0 / 0
02.11.2021, 14:05
    #40108803
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выловить утечки памяти с помощью madExcept
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
02.11.2021, 14:09
    #40108804
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выловить утечки памяти с помощью madExcept
X11
Я создаю в runtime вкладку TUniTabSheet и внутри нее создаю фрейм TuniFrame с сеткой TUniDBGrid.
Но показываю только если есть что показывать. Иначе показываю только сообщение, что ничего не найдено.

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

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


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