如何使{$ IFNDEF DEBUG}在lazarus / osx项目中工作

时间:2010-06-22 23:05:56

标签: conditional lazarus freepascal

我需要在调试器下运行时禁用一些代码。

所以,我想象一下:

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

但是,ifndef中的代码是在调试器中执行的,可能会崩溃。

我有lazarus 0.9.29& FPC 2.4.0

2 个答案:

答案 0 :(得分:2)

您提到的编译器指令实际上是:编译器指令,而不是调试指令。

它们与编译过程有关,与调试系统完全分开。

你要做的是:

  • 如果要调试程序,请定义DEBUG符号。这不会编译测试中存在的块,也不会在调试会话中运行。
  • 如果您想要发布该代码,只需取消定义DEBUG,并且所有代码都已准备好发货。

您正在混淆编译和调试并将它们放在相同的上下文中 它们实际上位于完全独立的环境中 这可能是因为您在同一GUI系统下编译和调试,但如果您编译程序,调试器唯一需要的是断点。

希望它有所帮助。

编辑:您可以通过程序/单元顶部的某个简单{$ DEFINE DEBUG}定义它,或使用Lazarus选项窗格将其添加为命令行参数。

完成我的回答。

答案 1 :(得分:0)

 {$IFOPT D-}
  //code
 {$ENDIF}

如果启用了$ DEBUGINFO,则使用调试器运行!