FastMM, память трассировки стека для утечек в динамически загружаемой DLL, скомпилированная с пакетами времени выполнения - PullRequest
1 голос
/ 02 декабря 2009

Я использую FastMM вместе с информацией отладки JCL для отслеживания утечек памяти в моем приложении. Однако у меня есть плагины, которые скомпилированы в Delphi, и dll, и основное приложение используют общие пакеты времени выполнения. Теперь, когда я закрываю приложение, оно генерирует отчет об утечках памяти в текстовом файле, что нормально, но содержит следы стека только для основного приложения . Если утечка памяти происходит в dll плагина, трассировка стека приводит к LoadPlugins; процедура в основном приложении! Конечно, мои плагины содержат данные отладки JCL (они вставляются в двоичный файл .dll).

Где проблема? Это из-за использования пакетов времени выполнения? Или какой-то переключатель (определить), который я забыл включить / отключить? Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 02 декабря 2009

Вы установили параметры FullDebugMode и Параметры общего доступа к диспетчеру памяти (ShareMM и далее) в FastMM4Options.inc? Вы также скомпилировали с отладочной информацией?

0 голосов
/ 31 декабря 2009

Пьер, автор FastMM ответил на мой вопрос. Если кому-то интересно, решение состоит в том, чтобы не выгружать плагины при завершении работы, чтобы обеспечить доступность трассировки стека и типов объектов. Однако это вызвало множество ошибок при завершении работы (поскольку FastMM был выгружен дважды или около того), поэтому в конце концов мне пришлось переместить FastMM в общий пакет ...

...