2016-03-25 18 views
0

外部ビルドシステム経由でC++開発用のXcodeを使用しています。 Xcode 6.2(lldb 320.4.160)を使用すると、すべて正常に動作し、ブレークポイントを設定することができます。しかし、Xcodeの新しいバージョンにアップグレードしたい場合などです。 7.3(lldb 350.0.21.3)私のブレークポイントはもはやヒットしていません。これまでの私の研究は、新しいlldbが何らかの理由でブレークポイントを設定できないことを私に伝えています。なぜlldb> v320.4.160で自分のソースファイルを見つけることができないのですか?

私は、プログラムの実行を停止し、(lldb) breakpoint list私の出力は次のようになります入力した後:最後に

Current breakpoints: 
    1: file = '/full/path/to/src/main.cpp',  line = 842, exact_match = 0, locations = 0 (pending) 
    2: file =  '/full/path/to/src/class.cpp', line = 383, exact_match = 0, locations = 0 (pending) 
    3: file = '/full/path/to/src/Homie.cpp', line = 12, exact_match = 0, locations = 0 (pending) 

(pending) BPが正しく設定できなかったことを示しています。私は今breakpoint set --file main.cpp --line 842経由lldbにブレークポイントを設定した場合、私は(lldb) breakpoint listは、次のような出力を与えているのブレークポイントを取得します:

4: file = 'main.cpp', line = 12, exact_match = 0, locations = 1, resolved = 1, hit count = 0 
    4.1: where = TEST`::__cxx_global_array_dtor() + 29 at main.cpp:842, address = 0x000000010027130d, resolved, hit count = 0 

このブレークポイントは、プログラムの実行中にヒットされている - 素敵な

すべてを私がしようとした場合Xcodeを使用して同じ実行可能ファイルにブレークポイントを設定する6.2デバッガは完全なファイルパスでもソースファイルを正常に見つけることができます。

新しいlldbバージョンでブレークポイントが正しく設定されるようにするにはどうすればよいですか?

ありがとうございます!

答えて

0

Xcodeは常にソースへのフルパスという概念を使用して、ファイル&をブレークポイントに設定します。 Xcodeがプロジェクトをビルドしているとき、「ソースへの完全なパス」とそれがコンパイラに提供したもの(コンパイラがデバッグ情報に書き込むもの)が同じであることを確認できます。しかし、外部ビルドシステムでは、それらは同じではないかもしれません(例えば、ビルドシステムが複雑な相対パスやシンボリックリンクなどを参照する可能性があります)。デバッガはすべてのソースファイルパスそれは大きなプロジェクトではあまりにも高価です。したがって、これらが完全なパスでブレークポイントを設定しても一致しない場合は動作しません。

あなたは、デバッガは、あなたのmain.cppには、場所のアドレス(上記の例で0x000000010027130d)を発見し、コマンドを実行し、その後、あなたのブレークポイントを設定することで、持っていると考えて何のパスを見つけることができます。

(lldb) image lookup -va 0x000000010027130d 

ワン

CompileUnit: id = {0x00000000}, file = "/tmp/hello-world.c", language = "c99" 

ここでは、Xcodeがブレークポイントを設定したときと同じフルパスが表示されます。そうであれば、私は何がうまくいかないのか分からないが、そうでなければ、なぜそれを知っているのか、それはそれを固定する方向であなたを指摘するかもしれない。

+0

ええ、それは実際問題でした。どのバイナリにどのようなパスが実際に組み込まれているかを調べる方法をヒントに感謝します。デバッガは 'full/path/to /./ src/main.cpp'を探しましたが、明らかにデバッガでは解決できませんでした。私はmakefileのsrcパスを変更したところ、うまくいきました。 – p0fi

関連する問題