3

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

所以,我只是想象这样做:

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

但是,ifndef 中的代码在调试器中执行,导致它崩溃。

我有拉撒路 0.9.29 和 FPC 2.4.0

4

2 回答 2

2

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

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

你要做的是:

  • 当您要调试程序时,请定义 DEBUG 符号。这不会编译测试中存在的块,也不会在调试会话上运行。
  • 当您确实想发布该代码时,只需取消定义 DEBUG,一切都已准备好发布。

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

希望能帮助到你。

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

完成我的回答。

于 2010-11-03T14:19:37.280 回答
0
 {$IFOPT D-}
  //code
 {$ENDIF}

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

于 2015-06-02T13:11:05.940 回答