アドレスから関数名、ファイル名、行番号を簡単に取得できる方法

objdumpでも可能だけどアドレスが分かっているならばaddr2lineの方が簡単。
ただし、デバッグ情報がいる。

$ gcc -g -o foo foo.c


hogeという関数があるとする。
80483c5はhogeの中のアドレス。

$ addr2line -e foo -f 80483c5
hoge
/home/longicorn/tmp/foo.c:3

0x80483c5は関数名はhoge()で、foo.cの3行目と言う意味。


仕組みはBFDと言うのを使っていて、libbfdを使えば自分で同じ事が出来るらしい


いままでobjdumpしか使って無かった orz。
これでデバッグが多少楽になる。