Sign in Join
Wiki copytemporary

leakview/ru

English · Русский

Leakview позволяет быстро перемещаться по отчетам об утечках HeapTrc.

Использование

Утилита Leakview доступна в среде IDE в разделе View / Leaks and Traces (Вид / Утечки памяти и стек вызовов).

Leakview читает вывод heaptrc. Чтобы это работало, вам нужно включить heaptrc в вашем коде:
Никогда не включайте heaptrc в свой раздел uses вручную. Это делается компилятором неявно, если указано -gh\

Включение heaptrc в Lazarus

Чтобы включить это в вашем проекте Lazarus: перейдите в Project Options/Compiler Options/Debugging (Параметры проекта/Параметры компилятора/Отладка) и в разделе Other debugging info (Прочая отладочная информация) включите Use Heaptrc unit (check for mem-leaks) (-gh) (Использовать модуль Heaptrc (проверка на наличие утечек памяти) (-gh))

Чтобы получить значимые результаты heaptrc с описанием строк кода, а не только с адресами ассемблера, перейдите в Tools/Options/Debugger/general (Сервис/Параметры/Отладчик/Общие) и задайте отладчик.

Затем вы можете позволить программе записывать вывод модуля heaptrc в файл. Добавьте следующие фрагменты кода в свой .lpr в начале кода, чтобы перенаправить вывод heaptrc в файл:

pascal
  {$DEFINE debug}     //сделайте это здесь, или вы можете определить -dDEBUG в Project Options/Compiler Options/Custom Options (Параметры проекта/Параметры компилятора/Параметры пользователя), то есть в режиме сборки, чтобы вы могли настроить отладку с утечкой и режим сборки по умолчанию без него
uses
  ...
  {$IFDEF debug}
  , SysUtils
  {$ENDIF}

...

begin
  {$IFDEF DEBUG} 
  // Предположим, что ваш режим сборки задан как -dDEBUG в Project Options/Compiler Options/Custom Options при определении -gh
  // Это позволяет избежать помех при запуске неотладочной сборки/сборки по умолчанию без -gh

  // Задаем -gh вывод для пакета Leakview:
  if FileExists('heap.trc') then
    DeleteFile('heap.trc');
  SetHeapTraceOutput('heap.trc');
  {$ENDIF DEBUG}

  ...
end.

Включение heaptrc в FPC

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

pascal
{$if Declared(UseHeapTrace)}...{$ifend}

Затем перенаправьте вывод heaptrc в файл (вместо стандартного вывода). Вы можете использовать код, аналогичный коду Lazarus, или, в качестве альтернативы, установить переменную среды, например на *nix:

bash
export HEAPTRC="log=heap.trc"

или Windows:

dos
set HEAPTRC="log=heap.trc"

From the Free Pascal wiki, page "leakview/ru", as it stood on 2022-01-02 after a change by Zoltanleo, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 1, last changed by WikiArchive .

Edited on wiki.freepascal.org by 2 people, 2022

From the official wiki's backup of 26 May 2024: who edited this page there, and when. Edits made there after that date were not recorded, and the earlier versions are not shown here; the main page says why.

WhenWhoWhat changed
ZoltanleoCreated page
Zoltanleo
ZoltanleoUsage
FTurtleDeleted English categories.
ZoltanleoИспользование

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.