Как заставить {$ IFNDEF DEBUG} работать в проекте lazarus / osx - PullRequest
3 голосов
/ 23 июня 2010

Мне нужно отключить некоторый код при запуске под отладчиком.

Итак, я просто представляю, что делает:

{$IFNDEF DEBUG} 
  ...
{$ENDIF}

Однако код внутри ifndef выполняется в отладчике, что приводит к сбою.

У меня есть Lazarus 0.9.29 и FPC 2.4.0

Ответы [ 2 ]

2 голосов
/ 03 ноября 2010

Директивы компилятора, которые вы упоминаете, на самом деле являются ТА: директивами компилятора, а не директивами отладки.

Они относятся к процессу компиляции, ведь это совершенно отдельно от системы отладки.

Что вынужно сделать это:

  • Если вы хотите отладить программу, определите символ DEBUG.Это НЕ скомпилирует блоки, которые существуют внутри тестов, и не будет выполняться в сеансе отладки.
  • Если вы хотите освободить этот код, просто удалите DEBUG и все готово к отправке.

Вы путаете компиляцию и отладку и помещаете их в один и тот же контекст.
Они фактически находятся в совершенно разных контекстах.
Это может быть связано с тем, что вы компилируете и отлаживаете в одной системе графического интерфейса, но если вы компилируете программу, единственное, что ищет отладчик, - это точки останова.

Надеюсь, это поможет.

Редактировать : Вы можете определить это простым {$ DEFINE DEBUG} где-нибудь в верхней части вашей программы / модуля или используйте панель опций Lazarus, чтобы добавить ее в качестве параметра командной строки.

Чтобы завершить мой ответ.

0 голосов
/ 02 июня 2015
 {$IFOPT D-}
  //code
 {$ENDIF}

, если включен $ DEBUGINFO, который запускается с отладчиком!

...