コンパイラおよびリンカーオプションにより、ユーザーはデバッグ情報をより自由に生成したり、使用したりできるようになります。コンパイラは、インデックススタブに似た DWARF のインデックスを生成します。このインデックスは常に存在し、これによって dbx の起動が速くなるほか、DWARF でのデバッグではその他の項目も改善されます。
次の図は、デバッグ情報のさまざまな種類と場所を示しています。ここでは、特にデバッグデータがどこに存在するかを強調しています。
図 4-1 デバッグ情報のフロー
DWARF は、デフォルトでは実行可能ファイルにロードされます。新しいインデックスにより、–xs=no オプションで DWARF をオブジェクトファイル内に残すことが可能になります。これにより、実行可能ファイルのサイズがより小さく、リンクがより高速になります。デバッグするには、これらのオブジェクトファイルを保持しておく必要があります。これは、スタブの動作と同様です。
Oracle Solaris 11.1 リンカーは、実行可能ファイルの構築中に、デバッグ情報を個別の補助ファイルに送信できます。個別のデバッグファイルは、すべてのデバッグ情報を移動、インストール、またはアーカイブする必要がある環境で役立ちます。実行可能ファイルは個別に動作できますが、その個別のデバッグファイルのコピーを使用して複数のユーザーがデバッグすることもできます。
dbx は、デバッグ情報を個別のファイルに抽出するための GNU ユーティリティー objcopy の使用を引き続きサポートしていますが、Oracle Solaris リンカーの使用には、objcopy に比べて次の利点があります。
個別のデバッグファイルはリンクの副産物として生成される
大きすぎて 1 つのファイルとしてリンクできなかったプログラムは 2 つのファイルとしてリンクされる
詳細については、補助ファイル (Oracle Solaris のみ)を参照してください。
–g1 コンパイラオプションは、配備されるアプリケーションのデバッグ可能性を最小限に抑えることを目的にしています。このオプションでアプリケーションをコンパイルすると、ファイルと行番号のほか、事後デバッグ中に重要であると見なされた単純なパラメータ情報が生成されます。詳細については、コンパイラのマニュアルページおよびコンパイラのユーザーガイドを参照してください。