う誤動作防止)のディレクトリ図書館のパスが読み込みコアファイルのツールはLinux
質問
いコアファイルに発生するリモートシステムがないのに直接アクセスす。また地元のコピーライブラリファイルからのリモートシステムの実行ファイルにチプログラム。
い分析ではこのコアダンプにgdb.
例えば:
gdb path/to/executable path/to/corefile
私のライブラリは、現在のディレクトリです。
のんデバッガの実施を供給するオプション"-p"や"-p/=.";このような中、私の質問は
いるかどうかを指定しますイドからの相対パスを現在のディレクトリを分析する場合、corefileにgdb?
解決
開始gdbを指定せずに実行可能またはコアファイル、その型は以下のコマンド
set solib-absolute-prefix ./usr
file path/to/executable
core-file path/to/corefile
ませることができるようにミラー図書館パスから正確にターゲットシステム.上記にはデバッグ目標と一致しないホストは公開することもあります再インストールファイルシステムの構造を図書館です。
の場合はリモートデバッグサーバのアーキテクチャLinux/glibcバージョンに対してホストできないとして fd 考:
set solib-search-path <path>
合しようとしているオーバーライド、図書館はすべてそのままコピー対象の図書館のディレクトリ構造への仮置き場に solib-absolute-prefix
解決する。
他のヒント
くなったことが可能ですべてのツールがいない。
しかしいコメント Linux 動的リンカー.下記は印刷のパスの解決すべての共有ライブラリに解決されます。
ldd path/to/executable
知る必要がありますがごとにどの共有ライブラリリンクをご実行形式にまとめたものです。このためには、以下のコマンド:
readelf -d path/to/executable | grep RPATH
のコマンド印刷も、動的リンカーを使標準の場所を環境変数LD_LIBRARY_PATHの共有ライブラリ.
場合は、コマンド版画の一部には、動的リンカーを無視してLD_LIBRARY_PATHのハードコードrpathsです。
場合には上場rpathsは絶対であって、唯一のソリューションかコピー又はシンボリックリンク)図書館が記載されている。
場合には上場rpathsは相対的なものが含まれま$起源の置き換えられ実行時のパスの実行形式にまとめたものです。移動には、実行ファイルやライブラリに含まれています
更なる情報につきを開始することができる。
man ld.so
ここを抜粋したもに developer.apple.com
set solib-search-path path
この変数を設定パスが コロンで区切られたディレクトリのリストへ 共有ライブラリを探索す.
solib-search-path' is used after
solibに対する絶対的なプレフィックス'に失敗した 検索図書館、またはパス 図書館が相対的ではなく ります。使用する場合solib-search-path' instead of
solibに対する絶対的なプレフィックス'、必ず セットの"solibに対する絶対的なプレフィックス"へ nonexistantディレクトリを防止GDB を持つホストの図書館です。
編集:
とは思わないが、上記の設定prependsのディレクトリを加えないように追加し、ファイルに欠から現在の私のシステムに落ちている道がんを追加。かの設定solibに対する絶対的なプレフィックスを偽のものをディレクトリのsolib探索経路のいが行われるようにする。
こともできるだけでも設定LD_PRELOADをそれぞれの図書館やLD_LIBRARY_PATHの現在のディレクトリが呼び出gdb.こみの原因になりまgdbそのものに使用しようとしていずれの図書館だけ盛.
重要な注意:
だってクロス集計のうデバッグとツールを、その
ま行 file ECECUTABLE_NAME
だ!のように:
Using host libthread_db library "/lib/libthread_db.so.1"
を確認しているかどうか取得しますlibthread_dbおります。ものが多いのと同様の問題。などの問題を解決できるものではないのであるか"を設定solib-"だいて構築libthread_dbご利用のクロスコンパイラです。