-qlinedebug はあまり役にたたない2013年09月10日 12時31分51秒

AIX のコンパイラには -qlinedebug というオプションがある。デバッグオプションの -g とは別途用いる。

IBM のサイトをみると以下のように説明されている。

目的 デバッガー用に行番号およびソース・ファイル名の情報のみを生成する。 -qlinedebug が有効な場合、コンパイラーは最小限のデバッグ情報しか生成しないため、 結果として得られるオブジェクト・サイズは、 -g デバッグ・オプションを指定した場合に生成されるオブジェクトよりも 小さくなります。 デバッガーを使用してソース・コードをステップスルーすることができますが、変数情報を表示したり照会することはできません。 トレースバック・テーブルを生成させると、 行番号が組み込まれます。

つまり、デバッガで各々の行を実行できるが変数は見ることは出来ない。コードにも依るのだが、-qlinedebug-g に比べると、一割から二割程度のバイナリサイズを削減できる。なお、strip を使うと、七割から九割ぐらいのぜい肉をそぎ落とすことが出来る。実行ファイルのほとんどは余分な情報なのだ。

core ファイルを開くと、最後のトレースは見られるが変数が一切見られないので、確かに落ちた辺りは見られるが、既に痕跡は無くなっているのだ。core を調べる時に役に立つのがやはり、変数の値。最適化によって、直には見られなくても、大きな手がかりになるので、これが無くなってしまうのは痛い。

AIX では strip された実行ファイルからの core であっても、strip する前の実行ファイルを使えるらしい。もし、それが真実だとすると、linedebug を使うよりも strip した方が core は見やすいことになる。まだ、自身での経験はあまりないので、もっと見極める必要がある。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2013/09/10/6977413/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。