あーめんどくさ。
まずは"何が記録されるか"。
"BinaryHacks"をチラ見して手元で確認。binutilsのaddr2lineで。
syasuda@syasuda-ubuntu:~/src/sandbox/placec$ addr2line -e placea 0x80484f4
/home/syasuda/src/sandbox/placec/main.cpp:4
おー。フルパスやんけ。ちなみにソースのあるディレクトリでコンパイルしており、ファイル名のみ指定しています。
で、gdbでプチ検証。
- placeaにソースがある状態でコンパイル
- placebに実行バイナリをcpしてgdb→ソースは見つかる
- placecにソースをmvしてgdb→ソースは見つからない
- placecにソースをmvしたままset substitute-path <placeaのパス> <placecのパス>でgdb→ソースは見つかる
TODO:
- フルパス以外、例えば相対パスを記録できたら素敵じゃない?を調べる
参考:
"BinaryHacks"
HACK15 addr21ineでアドレスからファイル名と行番号を取得する

Binary Hacks ―ハッカー秘伝のテクニック100選
- 作者: 高林哲,鵜飼文敏,佐藤祐介,浜地慎一郎,首藤一幸
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2006/11/14
- メディア: 単行本(ソフトカバー)
- 購入: 16人 クリック: 199回
- この商品を含むブログ (215件) を見る
リンク:
フルパスからの解放その2
http://d.hatena.ne.jp/syasuda/20101128/1290954164
コメント