Difference between revisions of "leakview/ru"
(→Usage) |
|||
(One intermediate revision by one other user not shown) | |||
Line 6: | Line 6: | ||
== Использование == | == Использование == | ||
− | |||
− | Leakview | + | Утилита Leakview доступна в среде IDE в разделе ''View / Leaks and Traces'' (Вид / Утечки памяти и стек вызовов). |
− | ''' | ||
− | + | Leakview читает вывод [[heaptrc]]. Чтобы это работало, вам нужно включить heaptrc в вашем коде: <br> | |
− | + | '''Никогда не включайте heaptrc в свой раздел uses вручную. Это делается компилятором неявно, если указано -gh '''<br> | |
− | + | === Включение 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 в файл: | ||
<syntaxhighlight lang="pascal"> | <syntaxhighlight lang="pascal"> | ||
− | {$DEFINE debug} // | + | {$DEFINE debug} //сделайте это здесь, или вы можете определить -dDEBUG в Project Options/Compiler Options/Custom Options (Параметры проекта/Параметры компилятора/Параметры пользователя), то есть в режиме сборки, чтобы вы могли настроить отладку с утечкой и режим сборки по умолчанию без него |
− | |||
uses | uses | ||
... | ... | ||
Line 30: | Line 30: | ||
begin | begin | ||
{$IFDEF DEBUG} | {$IFDEF DEBUG} | ||
− | // | + | // Предположим, что ваш режим сборки задан как -dDEBUG в Project Options/Compiler Options/Custom Options при определении -gh |
− | // | + | // Это позволяет избежать помех при запуске неотладочной сборки/сборки по умолчанию без -gh |
− | // | + | // Задаем -gh вывод для пакета Leakview: |
if FileExists('heap.trc') then | if FileExists('heap.trc') then | ||
DeleteFile('heap.trc'); | DeleteFile('heap.trc'); | ||
Line 43: | Line 43: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | === | + | === Включение heaptrc в FPC === |
− | + | ||
− | + | В FPC вы можете указать -gh в параметрах компилятора в fpc.cfg или в командной строке.<br> | |
+ | Вы можете проверить, скомпилирован ли ваш двоичный файл с помощью heaptrace, следующим образом: | ||
<syntaxhighlight lang="pascal"> | <syntaxhighlight lang="pascal"> | ||
{$if Declared(UseHeapTrace)}...{$ifend} | {$if Declared(UseHeapTrace)}...{$ifend} | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | Затем перенаправьте вывод heaptrc в файл (вместо стандартного вывода). Вы можете использовать код, аналогичный коду Lazarus, или, в качестве альтернативы, установить переменную среды, например на *nix: | |
<syntaxhighlight lang=bash> | <syntaxhighlight lang=bash> | ||
export HEAPTRC="log=heap.trc" | export HEAPTRC="log=heap.trc" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | ||
+ | или Windows: | ||
+ | |||
<syntaxhighlight lang=dos> | <syntaxhighlight lang=dos> | ||
set HEAPTRC="log=heap.trc" | set HEAPTRC="log=heap.trc" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− |
Latest revision as of 21:14, 2 January 2022
│
English (en) │
русский (ru) │
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 в файл:
{$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"