Difference between revisions of "leakview/ru"

From Free Pascal wiki
Jump to navigationJump to search
 
(One intermediate revision by one other user not shown)
Line 6: Line 6:
  
 
== Использование ==
 
== Использование ==
The Leakview utility is available in the IDE under ''View / Leaks and Traces''. 
 
  
Leakview reads [[heaptrc]] output. For this to work, you'll need to enable heaptrc in your code:<br>
+
Утилита Leakview доступна в среде IDE в разделе ''View / Leaks and Traces'' (Вид / Утечки памяти и стек вызовов).
'''Never include heaptrc in your uses clause manually. This is done implicitly by the compiler when -gh is specified'''<br>
 
  
=== Enabling heaptrc in Lazarus ===
+
Leakview читает вывод [[heaptrc]]. Чтобы это работало, вам нужно включить heaptrc в вашем коде: <br>
To enable this in your Lazarus project: go to Project Options/Linking and in the Debugging section enable ''Use Heaptrc unit (check for mem-leaks) (-gh)''
+
'''Никогда не включайте heaptrc в свой раздел uses вручную. Это делается компилятором неявно, если указано -gh '''<br>
  
To get meaningful heaptrc results with descriptions to your code lines and not just assembler addresses, go to Tools/Options/Debugger/general and set a debugger.
+
=== Включение heaptrc в Lazarus ===
 +
Чтобы включить это в вашем проекте Lazarus: перейдите в Project Options/Compiler Options/Debugging (Параметры проекта/Параметры компилятора/Отладка) и в разделе Other debugging info (Прочая отладочная информация) включите ''Use Heaptrc unit (check for mem-leaks) (-gh)'' (Использовать модуль Heaptrc (проверка на наличие утечек памяти) (-gh))
  
You can then let the program log the output of the heaptrc unit to a file. Add the following code fragments in your .lpr, at the beginning of your code to redirect the heaptrc output to file:
+
Чтобы получить значимые результаты heaptrc с описанием строк кода, а не только с адресами ассемблера, перейдите в Tools/Options/Debugger/general (Сервис/Параметры/Отладчик/Общие) и задайте отладчик.
 +
 
 +
Затем вы можете позволить программе записывать вывод модуля heaptrc в файл. Добавьте следующие фрагменты кода в свой .lpr в начале кода, чтобы перенаправить вывод heaptrc в файл:
 
<syntaxhighlight lang="pascal">
 
<syntaxhighlight lang="pascal">
   {$DEFINE debug}    // do this here or you can define a -dDEBUG in Project Options/Other/Custom Options, i.e. in a build mode so you can set up a Debug with leakview and a Default build mode without it
+
   {$DEFINE debug}    //сделайте это здесь, или вы можете определить -dDEBUG в Project Options/Compiler Options/Custom Options (Параметры проекта/Параметры компилятора/Параметры пользователя), то есть в режиме сборки, чтобы вы могли настроить отладку с утечкой и режим сборки по умолчанию без него
 
 
 
uses
 
uses
 
   ...
 
   ...
Line 30: Line 30:
 
begin
 
begin
 
   {$IFDEF DEBUG}  
 
   {$IFDEF DEBUG}  
   // Assuming your build mode sets -dDEBUG in Project Options/Other when defining -gh
+
   // Предположим, что ваш режим сборки задан как -dDEBUG в Project Options/Compiler Options/Custom Options при определении -gh
   // This avoids interference when running a production/default build without -gh
+
   // Это позволяет избежать помех при запуске неотладочной сборки/сборки по умолчанию без -gh
  
   // Set up -gh output for the Leakview package:
+
   // Задаем -gh вывод для пакета Leakview:
 
   if FileExists('heap.trc') then
 
   if FileExists('heap.trc') then
 
     DeleteFile('heap.trc');
 
     DeleteFile('heap.trc');
Line 43: Line 43:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=== Enabling heaptrc in FPC ===
+
=== Включение heaptrc в FPC ===
In FPC, you can specify -gh in your compiler options in fpc.cfg or on the commandline.<br>
+
 
You can test if your binary is compiled with heaptrace by:
+
В FPC вы можете указать -gh в параметрах компилятора в fpc.cfg или в командной строке.<br>
 +
Вы можете проверить, скомпилирован ли ваш двоичный файл с помощью heaptrace, следующим образом:
 
<syntaxhighlight lang="pascal">
 
<syntaxhighlight lang="pascal">
 
{$if Declared(UseHeapTrace)}...{$ifend}
 
{$if Declared(UseHeapTrace)}...{$ifend}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Then redirect the heaptrc output to file (instead of standard output). You can use similar code to the Lazarus code or alternatively, set the environment variable, e.g. on *nix:
+
Затем перенаправьте вывод heaptrc в файл (вместо стандартного вывода). Вы можете использовать код, аналогичный коду Lazarus, или, в качестве альтернативы, установить переменную среды, например на *nix:
 
<syntaxhighlight lang=bash>
 
<syntaxhighlight lang=bash>
 
export HEAPTRC="log=heap.trc"
 
export HEAPTRC="log=heap.trc"
 
</syntaxhighlight>
 
</syntaxhighlight>
or Windows:
+
 
 +
или Windows:
 +
 
 
<syntaxhighlight lang=dos>
 
<syntaxhighlight lang=dos>
 
set HEAPTRC="log=heap.trc"
 
set HEAPTRC="log=heap.trc"
 
</syntaxhighlight>
 
</syntaxhighlight>
 
[[Category:Lazarus]]
 
[[Category:Debugging]]
 
[[Category:Lazarus IDE plugins]]
 

Latest revision as of 21:14, 2 January 2022

English (en) русский (ru)

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

leakview.png

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

Утилита 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 в файл:

  {$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, следующим образом:

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

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

export HEAPTRC="log=heap.trc"

или Windows:

set HEAPTRC="log=heap.trc"