Profiling/ru

From Lazarus wiki
Revision as of 22:03, 15 November 2009 by Skalogryz (talk | contribs) (New page: {{profiling}} [http://ru.wikipedia.org/wiki/Профилирование Профилирование в Википедии]: == Профилирование памяти == === Heaptrc...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

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.