インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
デバッグ情報の生成を有効/無効にします。
Linux* および macOS*: | -debug [keyword] |
Windows*: | なし |
keyword |
コンパイラーが生成するデバッグ情報の種類。設定可能な値は以下のとおりです。
|
これらのキーワードのデフォルト以外の設定については、「説明」セクションを参照してください。
それぞれ異なる |
通常、デフォルトは -debug none でデバッグ情報は生成されません。ただし、Linux* では、最適化 (オプション -O2 以上) とデバッグ (オプション -g) を有効にしてコンパイルすると、デフォルトで -debug inline-debug-info オプションが有効になります。 |
このオプションは、デバッグ情報の生成を有効/無効にします。
デフォルトでは、デバッグを有効にすると最適化が無効になります。デバッグと最適化の両方を有効にするには、-debug オプションと最適化オプション (-O3、-O2、または -O3 のいずれか) を一緒に指定します。
semantic-stepping、inline-debug-info、variable-locations および extended キーワードはそれぞれを組み合わせて使用することができます。競合するキーワードが一緒に使用された場合、コマンドラインで最後に指定されたものが優先されます。
オプション |
説明 |
---|---|
-debug none |
デバッグ情報の生成を無効にします。 |
-debug full または -debug all |
詳細なデバッグ情報を生成します。これは、keyword なしで -debug を指定するのと同じです。 |
-debug minimal |
デバッグの行番号情報を生成します。 |
-debug emit_column |
デバッグの列番号情報を生成します。 |
-debug expr-source-pos |
文レベルの粒度でソース位置情報を生成します。 |
-debug inline-debug-info |
インライン展開されたコードの拡張デバッグ情報を生成します。 インライン展開される関数では、シンボルはデフォルトで呼び出し元に関連付けられます。このオプションを指定すると、インライン展開される関数のシンボルが、呼び出される関数のソースに関連付けられます。 |
-debug pubnames |
コンパイラーは DWARF debug_pubnames セクションを生成します。コンパイル単位のグローバル・オブジェクトと関数の名前をリストできます。 |
-debug semantic-stepping |
ブレークポイントとステップ処理に役立つ拡張デバッグ情報を生成します。最終的に影響するソース文のマシン命令でデバッガーを停止します。 例えば、代入文の場合、プログラム変数に値を代入するストア命令になります。関数呼び出しの場合、呼び出しを実行するマシン命令になります。これらのソース文用に生成された他の命令は、ステップ処理中は表示されません。 このオプションは、最適化が有効でないと効果はありません。 |
-debug variable-locations |
スカラーローカル変数の検索に役立つ拡張デバッグ情報を生成します。「ロケーション・リスト」として知られる Dwarf オブジェクト・モジュールの機能を使用します。 この機能は、ローカルスカラー変数のランタイム・ロケーションがより正確に指定されるようにします。つまり、コード中の指定された位置において、メモリーまたはマシンレジスターにある変数値を見つけることができます。 |
-debug extended |
キーワード値 semantic-stepping および variable-locations を設定します。また、行情報に列番号を含めるようにコンパイラーに指示します。 詳細なデバッグ情報を生成します。キーワード値 semantic-stepping および variable-locations も設定します。-debug full または -debug all よりも強力な設定です。 |
-debug parallel |
スレッドデータ共有と再入可能な呼び出し検出に必要な、並列デバッグコードのインストルメンテーションを生成します。データ共有と再入可能な呼び出しを検出するには、-qopenmp オプションを指定する必要があります。 |
Linux* システムでは、デバッガーは実行ファイルからデバッグ情報を読み取ります。そのため、情報はオブジェクト・ファイルに書き込まれ、そしてリンカーにより実行ファイルに追加されます。
macOS* システムでは、デバッガーはオブジェクト・ファイルからデバッグ情報を読み取ります。そのため、実行ファイルにはデバッグ情報が含まれません。したがって、これらのシステムでデバッグを行う場合は、オブジェクト・ファイルを残しておかなければなりません。
Visual Studio*: なし
Eclipse*: [Advanced Debugging (高度なデバッグ)] > [Enable Parallel Debug Checks (並列デバッグチェックを有効にする)] (-debug parallel)
[Debug (デバッグ)] > [Enable Expanded Line Number Information (行番号情報の出力を有効にする)] (-debug expr-source-pos)
Xcode*: なし
-debug full、-debug all、または -debug |
Linux* および macOS*: -g Windows*: /debug:full、/debug:all、または /debug |
-debug variable-locations の場合 |
Linux* および macOS*: -fvar-tracking Windows*: なし |
-debug semantic-stepping の場合 |
Linux* および macOS*: -fvar-tracking-assignments Windows*: なし |