3

デバッガーで実行する場合、一部のコードを無効にする必要があります。

だから、私はそれをすることを想像します:

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

ただし、ifndef内のコードはデバッガーで実行されるため、クラッシュします。

私はlazarus0.9.29とFPC2.4.0を持っています

4

2 に答える 2

2

あなたが言及しているコンパイラ ディレクティブは、実際にはコンパイラ ディレクティブであり、デバッグ ディレクティブではありません。

それらはコンパイルプロセスに関連しており、魔女はデバッグシステムから完全に分離されています。

あなたがしなければならないことは次のとおりです。

  • プログラムをデバッグする場合は、DEBUG シンボルを定義します。これは、テスト内に存在するブロックをコンパイルせず、デバッグ セッションで実行されません。
  • そのコードをリリースしたい場合は、DEBUG の定義を解除するだけで、すべて出荷する準備が整います。

コンパイルとデバッグを混同し、それらを同じコンテキストに入れています。
それらは実際には完全に別個のコンテキストに存在します。
これは、同じ GUI システムでコンパイルとデバッグを行っていることが原因である可能性がありますが、プログラムをコンパイルすると、デバッガーが探すのはブレーク ポイントだけです。

それが役に立てば幸い。

編集: プログラム/ユニットの上部にあるシンプルな {$DEFINE DEBUG} で定義するか、Lazarus オプション ペインを使用してコマンド ライン パラメータとして追加できます。

私の答えを完成させるために。

于 2010-11-03T14:19:37.280 に答える