dbx コマンドによるデバッグ

最適化コードのデバッグ

dbx は、最適化コードのデバッグを部分的にサポートしています。サポートの範囲は、プログラムのコンパイル方法によって大幅に異なります。

最適化コードを分析する場合、次のことが可能です。

ただし、最適化コードでは、dbx は次のことを行うことができません。

-g オプションによるコンパイル

dbx を効率的に使用するには、プログラムを -g または -g0 オプションによってコンパイルする必要があります。-g オプションは、コンパイラに対して、コンパイル中にデバッグ情報を生成するよう指示します。

たとえば、C++ を使用してコンパイルするには、次のように入力します。


% CC -g example_source.cc

最適化コードを使用して dbx で使用するには、ソースコードを -O (大文字の O) と -g オプションの両方によってコンパイルしてください。

C++ サポートと -g0 オプション

C++ では、-g はデバッグをオンにし、関数のインライン化をオフにします。-g0 (ゼロ) オプションはデバッグをオンにしますが、関数のインライン化には影響を与えません。-g0 オプションによってインライン関数をデバッグすることはできません。 -g0 オプションは、リンク時間と dbx 起動時間を大幅に削減します。これらの時間はプログラムによるインライン関数の使用により異なります。

-g オプションを使用しないでコンパイルされたコード

ほとんどのデバッガの機能を使用するにはプログラムを -g によってコンパイルする必要があるのに対し、dbx では -g を使用しないでコンパイルされたコードに対して、次のレベルのサポートを提供しています。

ただし、dbx では、-g オプションを使用してコンパイルされたソースコード以外を表示できないことに注意してください。これは、strip -x が適用されたコードについてもあてはまります。

dbx を完全にサポートするために -g オプションを必要とする共有ライブラリ

完全なサポートを提供するためには、共有ライブラリも -g オプションを使用してコンパイルする必要があります。-g によってコンパイルされていない共有ライブラリモジュールをいくつか使用してプログラムを作成した場合でも、そのプログラムをデバッグすることはできます。ただし、これらのライブラリモジュールに関する情報が生成されていないため、dbx の機能を完全に使用することはできません。

完全にストリップされたプログラム

dbx は、完全にストリップされた (制御データなどが取り除かれた) プログラムをデバッグすることができます。これらのプログラムには、プログラムをデバッグするために使用できる情報がいくつか含まれますが、外部から識別できる関数しか使用できません。実行時検査は、ストリップされたプログラムまたはロードオブジェクトに対しては、動作しません。