-qlinedebug はあまり役にたたない ― 2013年09月10日 12時31分51秒
-qlinedebug
というオプションがある。デバッグオプションの -g
とは別途用いる。
IBM のサイトをみると以下のように説明されている。
目的
デバッガー用に行番号およびソース・ファイル名の情報のみを生成する。
-qlinedebug が有効な場合、コンパイラーは最小限のデバッグ情報しか生成しないため、 結果として得られるオブジェクト・サイズは、 -g デバッグ・オプションを指定した場合に生成されるオブジェクトよりも 小さくなります。 デバッガーを使用してソース・コードをステップスルーすることができますが、変数情報を表示したり照会することはできません。 トレースバック・テーブルを生成させると、 行番号が組み込まれます。
つまり、デバッガで各々の行を実行できるが変数は見ることは出来ない。コードにも依るのだが、-qlinedebug
は -g
に比べると、一割から二割程度のバイナリサイズを削減できる。なお、strip を使うと、七割から九割ぐらいのぜい肉をそぎ落とすことが出来る。実行ファイルのほとんどは余分な情報なのだ。
core ファイルを開くと、最後のトレースは見られるが変数が一切見られないので、確かに落ちた辺りは見られるが、既に痕跡は無くなっているのだ。core を調べる時に役に立つのがやはり、変数の値。最適化によって、直には見られなくても、大きな手がかりになるので、これが無くなってしまうのは痛い。
AIX では strip された実行ファイルからの core であっても、strip する前の実行ファイルを使えるらしい。もし、それが真実だとすると、linedebug を使うよりも strip した方が core は見やすいことになる。まだ、自身での経験はあまりないので、もっと見極める必要がある。
最近のコメント