2016-11-07 58 views
2

lldbの公式のガイドラインによれば、デバッグセッション中(コマンドsource listを使用)のソースコードを表示する機能は、ソースファイルの新しいパス名を設定することによって行われます。LLDB - ソースコードパスを設定する

つまり、あるコンピュータで/ tmpにプロジェクトをコンパイルし、ソースコードが/ Users/Src /にある別のコンピュータに展開した場合は、settings set target.source-map /tmp /Users/Srcから展開マシンにlldbを実行してください。

しかし、私が他の誰かから実行可能ファイルを得て、ビルドディレクトリを知らないとどうなりますか?ソースコードがどこにビルドされているかとは別に構成されているかもしれません(ただし、ファイルの内容は同じです)。

私の質問は以下のとおりです。

  1. は供給パスに再帰的にソースファイルを一致させるために検索する方法を知っているlldbていますか?

  2. mach-o実行可能ファイルから元のパス名を取得するにはどうすればよいですか?

    デバッグセッションの再マップソースファイルのパス名:

ここでは、コマンドの形式的な記述です。あなたのソースファイルがプログラムのビルド時と同じ場所にない場合---プログラムが別のコンピュータ上に構築されている可能性があります---代わりにローカルファイルパスでソースを見つける方法をデバッガに伝える必要がありますビルドシステムのファイルパスの

+0

私はlldbとosxのどちらにも馴染んでいませんが、実行可能ファイルからいくつかのパス情報を得るために 'readelf -a'と' objdump -p'を試してみることをお勧めします。しかし、 'readelf'はosxでは利用できないようです。http://stackoverflow.com/questions/3286675/readelf-like-tool-for-mac-os-x –

+0

コメントありがとうございます。しかし、ORXの実行可能なバイナリ構造はELFと異なり、MACH-Oと呼ばれますが、私はobjdumpと同義語を見つけようとします。 – Zohar81

答えて

1

あなたは、問題のコード内の関数の名前がわかっている場合は、操作を行います。

(lldb) image lookup -vn <FunctionName> <BinaryImageNameContainingFunction> 

CompileUnitエントリを探します。与えられたパスは、デバッグ情報から得られたパスlldbです。

関連する問題