良し悪し
あるプログラムをデバッグしていたら、なぜか、あるスタティックで定義した
関数が表れない。シンボルどころかスタックトレースにも表れない。
何故か判らずに、gcc/gdbのバージョンをいろいろ変えてみて、どうもgcc-4.1
が原因らしい。
-g回りのオプションが増えているので、これかと思っていろいろやってみるが
うまくいかない。
デバッグ情報が入っていないのをobjdumpで確認中に、objedump -Sで見てみる
と…
そのソース部分に、なんのコードもない。
その関数は、一箇所からしか呼ばれていない。最適化されすぎていて、呼ばれ
ている場所に埋め込まれていたのだ。
ローカス変数が見えないことなどは、ざらにあったのだが、関数まるごと消え
ているのは初めて。
変数スコープはどうなっているのかよくわからない。その関数がどういう引数
で呼ばれているのかも表示しかたが判らない。何をどう確認してよいのか、さっ
ぱり判らない。
13時間ほど悩んだ。
オプティマイズも良し悪しである。
--
___ わしは、山吹色のかすてーらが大好きでのぅ
[[o o]] ふぉっふぉっふぉ
'J' 森下 お代官様 MaNMOS 英夫@ステラクラフト
PGP Finger = CD EA D5 A8 AD B2 FE 7D 02 74 87 52 7C B7 39 37
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735