readelfなんて使ったことないし、バイナリに弱すぎ

C言語を挫折した人間なので、バイナリとかアセンブラとかは全く分からない。

スクリプト言語サイコーなのだが、どうしたってサーバを動かしていれば

C言語で書かれた、デーモンやら何やらでトラブルは起きる。

先日もデーモンプログラムで、どうも変な挙動をしていたのだが

古いプログラムで、しかもソースから入れていることもあって

なんとか自力で原因究明しなくてはならなくなった。

元々、デバッグ情報付きでコンパイルされてなく

オプションを付けてコンパイルしなくてはならなかったのだが

付けたはずのオプションが、どっかで無効になったのか

gdbで実行すると、デバッグ情報が無いよ! と怒られまくった。

デバッグ情報が付かなかったのは、Makefile内の修正箇所ミスだったのだが

都度gdbを実行してから怒られており、もっと簡単に知る方法はないのかと調査した。

  • 結果

だそうです。

  • 試しにやってみた

.debug_infoというセクションが有ると、デバッグ情報付きです。

とあるapacheはデバッグ情報付きでした。

ubuntu 12.04 amd64にパッケージで入れたfirefoxは.debug_infoというセクションはありません。

.gnu_debuglink があやしい気がしますが詳細は調べてません。