как отключить heaptrc unit?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

как отключить heaptrc unit?

Сообщение Kon.pasc » 31.10.2009 18:11:01

Не получается сабж. После завершения программы всегда выдает окошко heaptrc: 0 unfreed memory blocks :0
Помню в версии 0.9.26 окошко выскакивало только если были проблемы с памятью - сейчас перешел на svn 0.9.29 и fpc 2.3.1 - выскакивает всегда! Что это - баг?
1) Убрал галку с Use heaptrc unit (-gh) в Compiler Options - не помогает (баг?).
2) Скачал сегодняшнюю Lazarus svn revision 22358 - не помогает,
3) Сделал Clean+Build со всеми компонентами - - не помогает, heaptrc выскакивает.
Может в fpc 2.3.1 проблема? Скачал из svn - пока не разобрался как его самого через себя скомпилить - сомнеюсь поможет ли...
Может где-то что-то в .cfg поменять?
OS - Windows.
Kon.pasc
новенький
 
Сообщения: 26
Зарегистрирован: 31.10.2009 17:45:38

Re: как отключить heaptrc unit?

Сообщение Mr.Smart » 31.10.2009 21:41:28

Kon.pasc писал(а):Что это - баг?

Нет не баг!
Удалите модуль heaptrc из файла lpr если он там есть.
Пересобрать весь проект (Запуск/Собрать всё)!
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: как отключить heaptrc unit?

Сообщение Kon.pasc » 01.11.2009 10:04:51

Удалите модуль heaptrc из файла lpr если он там есть.

Так и нету его там :(. Просмотрел все модули в uses - нет его. Запустил поиск - нашел подозрительные файлы Makefile.fpc в fpc\2.3.1\source\rtl\win32(\os2, \linux и т.п.). Может все-таки fpc 2.3.1 собран с heaptrc?:
Код: Выделить всё
[package]
main=rtl

[target]
loaders=$(LOADERS)
units=system objpas macpas buildrtl lineinfo lnfodwrf
implicitunits=sysinitpas sysinitcyg sysinitgprof \
      ctypes strings \
      [b]heaptrc[/b] matrix \
      windows winsock winsock2 initc cmem dynlibs signals \
      dos crt objects messages \
      rtlconsts sysconst sysutils math types \
      strutils dateutils varutils variants typinfo fgl classes \
      convutils stdconvs cpu mmx charset ucomplex getopts \
      winevent sockets printer \
      video mouse keyboard fmtbcd \
      winsysut sharemem exeinfo fpintres

но у меня не хватает знаний понять для чего этот файл.

У кого-нибудь вообще работает включение/отключение heaptrc из лазаря? С какими версиями fpc и Лазаря?
Kon.pasc
новенький
 
Сообщения: 26
Зарегистрирован: 31.10.2009 17:45:38

Re: как отключить heaptrc unit?

Сообщение Kon.pasc » 10.11.2009 20:05:41

Ясно, у всех по завершению кода выскакивает окошко heaptrc. Убрать никак. :-(
Kon.pasc
новенький
 
Сообщения: 26
Зарегистрирован: 31.10.2009 17:45:38

Re: как отключить heaptrc unit?

Сообщение Kon.pasc » 17.11.2009 20:54:09

Ковырял также с FPC 2.4 rc - безрезультатно.
Случайно нашел причину, если кому интересно.
Для проектов в отладке у меня всегда стоит свой дефайн -dDebug. Пока не обновился до версии 0.9.29 и фпц 2.3.1 все прекрасно работало.
Но вот чудеса, теперь когда есть дефайн "Debug" для проекта ВСЕГДА подключается heaptrc, хоть что ты там делай с галочками.
Кстати в FPC Programmers' Guide в топике Predefined symbols "Debug" не значится.

Ради интереса поискал по сырцам LCL и FPC конструкцию типа {$IFDEF Debug} но почему-то не нашел. В компиляторе зашили что-ли?

Вопрос к знатокам - баг или не баг? Попробуйте кто-нибудь у себя добавить -dDebug при выключенном heaptrc. Идти мне в bugs.freepascal.org или у меня глюки?
Kon.pasc
новенький
 
Сообщения: 26
Зарегистрирован: 31.10.2009 17:45:38

Re: как отключить heaptrc unit?

Сообщение Mr.Smart » 17.11.2009 22:13:37

Kon.pasc
Данный "дефайн" определён в конфиге fpc.cfg:
Код: Выделить всё
#
# Some examples (for switches see below, and the -? helppages)
#
# Try compiling with the -dRELEASE or -dDEBUG on the commandline
#

# For a release compile with optimizes and strip debuginfo
#IFDEF RELEASE
  -O2
  -Xs
  #WRITE Compiling Release Version
#ENDIF

# For a debug version compile with debuginfo and all codegeneration checks on
#IFDEF DEBUG
  -glh
  -Crtoi
  #WRITE Compiling Debug Version
#ENDIF

Так что если вы указываете пареметр -dDebug то автоматически добавляется ключ -gh (Использовать модуль Heaptrc) и соответственно -gl :wink:
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: как отключить heaptrc unit?

Сообщение Kon.pasc » 23.11.2009 21:03:29

Да, верно. Жаль столько времени убил на разборки. Надо будет впредь поаккуратнее с именами дефайнов.
Kon.pasc
новенький
 
Сообщения: 26
Зарегистрирован: 31.10.2009 17:45:38


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25

Рейтинг@Mail.ru