dbx は、最適化されたコードに対する部分的なデバッグサポートを提供しています。サポートの範囲は、プログラムをコンパイルした方法によって大幅に異なります。
最適化されたコードを分析する場合は、次のことが可能です。
任意の関数の開始時に実行を停止する ( stop in function コマンド)
引数を評価、表示、または変更する
大域変数、局所変数、または静的変数を、評価、表示、または変更する
ある行から別の行までシングルステップ実行する (next または step コマンド)
プログラムが (–O および –g オプションを使用して) 最適化とデバッグを同時に有効にしてコンパイルされている場合、dbx は制限モードで動作します。
どのコンパイラが、どのような環境下でどの種類のシンボリック情報を発行するかについての詳細情報は、リリースごとに変更される可能性があります。
ソース行の情報は使用できますが、あるソース行のコードが最適化されたプログラムの複数の異なる場所に現れる可能性があるため、ソース行でプログラムをステップ実行すると、オプティマイザがコードをどのようにスケジュールしたかによって、現在の行がソースファイル内の別の場所に移動します。
末尾呼び出しを最適化すると、関数の最後の有効な操作が別の関数への呼び出しである場合、スタックフレームがなくなります。
OpenMP プログラムの場合、–xopenmp=noopt オプションを使用してコンパイルすると、コンパイラは最適化を適用しないように指示されます。ただし、オプティマイザは OpenMP ディレクティブを実装するために引き続きコードを処理するため、説明された問題のいくつかは –xopenmp=noopt でコンパイルされたプログラムで発生する可能性があります。