Profiling/ru
│
English (en) │
français (fr) │
русский (ru) │
Профилирование памяти
Heaptrc, LineInfo
Чтобы обнаружить утечки памяти, просто соберите программу с ключом "-gh". При компиляции, в секцию Uses каждого модуля, будет добавлен модуль heaptrc. Модуль встраивается менеджер памяти и отслеживает её использование.
При использовании heaptrc с ключом -gl (добавление отладочной информации о строках), можно получить информацию о том какой код вызывал утечку.
Подключая модуль Heaptrc через ключ компиляции, его поведение можно контролировать с помощью системной переменной HEAPTRC, которая может содержать следующие значения:
- keepreleased: освобождаемая память остаётся под наблюдением и проверяется, если в неё производится повторная запись.
- disabled: отключить трассировку. позволяет отключить проверку памяти, в уже скомпилированной (с -gh) программе.
- nohalt: heaptrc останавливает программу, при первой найденной ошибке. Если это значение присутствует, то программа продолжит своё исполнение, несмотря на ошибку.
- haltonnotreleased: heaptrc печатает информацию о всех "утечках". Добавив этот параметр, можно ограничить печать только информацией о первой найденной утечке.
- log=<имя_файла>: установить файл, куда нужно печатать информацию об утечках. Если файл не указан, то использовании с Windows графическими приложениями могут возникать ошибки.
Модуль heaptrc можно использовать явно. Однако, он должен быть также первым модулем, подключаемым программой (файлом проекта в Lazarus-е). Если heaptrc используется явно, то вы уже не сможете скомпилировать программу с -gh, однако, использование -gl необходимо для получения информации о месте утечки.
Внимание: heaptrc конфликтует с модулем cmem, если вы хотите отлаживать внешние библиотеки, используйте Valgrind.
Дополнительная информация о модуле heaptrc в документации на RTL (англ):