フルパスからの解放その3

  • 投稿日:
  • by
  • カテゴリ:



あーめんどくさ。


まずは"何が記録されるか"。


"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→ソースは見つかる


f:id:syasuda:20101129173513p:imageあまり参考にならないスクリーンショット



TODO:



  • フルパス以外、例えば相対パスを記録できたら素敵じゃない?を調べる



参考:


"BinaryHacks"


HACK15 addr21ineでアドレスからファイル名と行番号を取得する



Binary Hacks ―ハッカー秘伝のテクニック100選

Binary Hacks ―ハッカー秘伝のテクニック100選






リンク:


フルパスからの解放その2


http://d.hatena.ne.jp/syasuda/20101128/1290954164