1

完全なデバッグ情報を含む GNU make、clang などで構築された (アプリではなく) 実行中のプロセスがあります。ソースコード、変数バインディングなどを表示する lldb と GUI デバッガーを使用してそれにアタッチしたいと考えています。

OS X 10.8 で XCode 4.6.2 またはその他のツール (Emacs の lldb モードなど) を使用してこれを行う方法はありますか?

XCode 4.6.2 でアタッチしようとしましたが、逆アセンブルしか表示されず、ソース コードを探す場所を伝える方法が見つかりませんでした。SO の誰かが、スキームを編集してカスタム作業ディレクトリを設定することを提案しましたが、フォルダー選択アイコンは無効になっています。もう 1 人は Add Files to ... を提案しましたが、それは役に立ちませんでした。

単純な lldb を使用して Terminal.app からアタッチすると、行番号とソース ファイル名が表示されます (パス名は表示されません)。ソースコードを探す場所をlldbに伝える方法も見つかりませんでした。

gbd では、コマンド ラインで dir コマンドを使用して、ソースの場所を通知し、list コマンドを機能させることができます。これにより、XCode に gbd を使用するように指示すると (「プロセスへのアタッチ/プロセス識別子 (PID) または名前による」メニューから引き続き可能)、XCode にソースが表示されますが、gdb サポートは XCode から削除されているため、このメソッドはすぐに停止します。働く。

4

2 に答える 2

1

target.source-maplldbの設定を使用して、マッピングを提供できます。独自のシステムでプログラムをビルドした場合、これが必要な理由はわかりません。ある場所 ( /tmp/original-directory) にあるソース コードを使用してプログラムをビルドし、ソースを別の場所に移動した場合にのみ発生します。 ( /tmp/new-directory) デバッグを試みます。より一般的には、あるシステムでビルドしていて、デバッグのためにすべてを 2 番目のシステムに移動するが、ソース ファイルを同じ場所にコピーしない場合に発生します。

とにかく、http://lldb.llvm.org/lldb-gdb.htmlはこれがどのように使用されるかの例を示していますが、要するに、

(lldb) settings set target.source-map /buildbot/path /my/path

ソース コード ファイルを検索するときに、すべての/buildbot/pathtoを置き換えるように lldb に指示します。/my/pathこの設定を~/.lldbinitファイルに追加して、永続化することができます。

gdb のdirコマンドに直接相当するものはまだありませんが、通常はこの方法で同じことを簡単に実行できます。

ああ、ちょっと待って、Xcode 4.2.3 ビットを見たところです...これは lldb の非常に古いバージョンです。lldb を使用する場合は、Xcode 4.6 にアップグレードすることを強くお勧めします。Xcode 4.2 の lldb をよく覚えていません...

于 2013-05-22T02:47:17.127 に答える