Sign in Join
Wiki copytemporary

leakview/ru: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: leakview/ru

OldNewLine
1+**Leakview** позволяет быстро перемещаться по отчетам об утечках [[heaptrc|HeapTrc]].
2+
3+![](/wiki-images/3/3e/Leakview.png)
4+
5+## Использование
6+
7+Утилита Leakview доступна в среде IDE в разделе *View / Leaks and Traces* (Вид / Утечки памяти и стек вызовов).
8+
9+Leakview читает вывод [[heaptrc]]. Чтобы это работало, вам нужно включить heaptrc в вашем коде:\
10+**Никогда не включайте heaptrc в свой раздел uses вручную. Это делается компилятором неявно, если указано -gh**\
11+
12+### Включение heaptrc в Lazarus
13+
14+Чтобы включить это в вашем проекте Lazarus: перейдите в Project Options/Compiler Options/Debugging (Параметры проекта/Параметры компилятора/Отладка) и в разделе Other debugging info (Прочая отладочная информация) включите *Use Heaptrc unit (check for mem-leaks) (-gh)* (Использовать модуль Heaptrc (проверка на наличие утечек памяти) (-gh))
15+
16+Чтобы получить значимые результаты heaptrc с описанием строк кода, а не только с адресами ассемблера, перейдите в Tools/Options/Debugger/general (Сервис/Параметры/Отладчик/Общие) и задайте отладчик.
17+
18+Затем вы можете позволить программе записывать вывод модуля heaptrc в файл. Добавьте следующие фрагменты кода в свой .lpr в начале кода, чтобы перенаправить вывод heaptrc в файл:
19+
20+``` pascal
21+ {$DEFINE debug} //сделайте это здесь, или вы можете определить -dDEBUG в Project Options/Compiler Options/Custom Options (Параметры проекта/Параметры компилятора/Параметры пользователя), то есть в режиме сборки, чтобы вы могли настроить отладку с утечкой и режим сборки по умолчанию без него
22+uses
23+ ...
24+ {$IFDEF debug}
25+ , SysUtils
26+ {$ENDIF}
27+
28+...
29+
30+begin
31+ {$IFDEF DEBUG}
32+ // Предположим, что ваш режим сборки задан как -dDEBUG в Project Options/Compiler Options/Custom Options при определении -gh
33+ // Это позволяет избежать помех при запуске неотладочной сборки/сборки по умолчанию без -gh
34+
35+ // Задаем -gh вывод для пакета Leakview:
36+ if FileExists('heap.trc') then
37+ DeleteFile('heap.trc');
38+ SetHeapTraceOutput('heap.trc');
39+ {$ENDIF DEBUG}
40+
41+ ...
42+end.
43+```
44+
45+### Включение heaptrc в FPC
46+
47+В FPC вы можете указать -gh в параметрах компилятора в fpc.cfg или в командной строке.\
48+Вы можете проверить, скомпилирован ли ваш двоичный файл с помощью heaptrace, следующим образом:
49+
50+``` pascal
51+{$if Declared(UseHeapTrace)}...{$ifend}
52+```
53+
54+Затем перенаправьте вывод heaptrc в файл (вместо стандартного вывода). Вы можете использовать код, аналогичный коду Lazarus, или, в качестве альтернативы, установить переменную среды, например на *nix:
55+
56+``` bash
57+export HEAPTRC="log=heap.trc"
58+```
59+
60+или Windows:
61+
62+```dos
63+set HEAPTRC="log=heap.trc"
64+```
65+
66+---
67+*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](/wiki-contact).*

Back to history