2016-07-11 11 views
0

私が知る限り、lldbは、ブレークポイントがヒットしたときの自動コマンド実行をサポートしています(gdbcommandsに似ています)。"breakpoint command add"はAndroidスタジオのLLDBコマンドラインでは機能しません

Manualが、それはこのように動作するはずの言葉:

(lldb) breakpoint command add 1.1 
Enter your debugger command(s). Type 'DONE' to end. 
> bt 
> DONE 

この1出力すべきバックトレースブレークポイント1.1がヒットするたびに。あなたが見ることができるように、デバッガがコマンドを入力するために私を提供していません

(lldb) breakpoint list 
... 
8: file = '/home/user/src_file.cpp', line = 2683, exact_match = 0, locations = 1, resolved = 1, hit count = 1 
    8.1: where = libdroid_shared.so`(anonymous namespace)::onDbgThreadResume() + 20 at src_file.cpp:2683, address = 0x0000007f9cad6740, resolved, hit count = 1 

(lldb) breakpoint command add 8.1 
(lldb) breakpoint command add 8.1 
(lldb) 

:私はNDKバージョン12bがAndroidのメーカー2.1.2にLLDBコンソールで同じことをやろうとしています。 breakpoint commmand add行の後にEnterキーを押すと空行だけが出力され、コマンドラインプロンプトは表示されません。

違うファイル、ブレークポイント、アプリで32ビットと64ビットの両方のデバッガを試しましたが、動作しません。 gdbcommandsと同じことが完全に機能します。

私の質問:

  • が、これはAndroidのメーカーやlldbにおける既知のバグです、回避策はありますか?
  • これはAndroidスタジオのUIのバグですか? Android Studioなしでコマンドラインインターフェイスだけのlldbを使用できますか?それ、どうやったら出来るの?

答えて

1

私はAndroidのメーカーについてはあまり知りませんが、それは(この場合には1がためlldbの入力コールバックの取り扱いにおけるAndroidのスタジオやlldb「MI」エミュレーション層のバグ促しているように、これは見えます実際のコマンド)

それはそれが何であるかだ場合は、ファイル内のあなたのコマンドを置くことによって、それを回避することができ、その後、同様に「1行」の入力オプションを使用して:。

(lldb) br com add -o "com source /tmp/lldb.cmds" 
+0

をありがとうございました提案。これは実際に何か変わります。この後、 'breakpoint list'の中で、ブレークポイント8.1には'/tmp/lldb.cmds'のコマンドがあります。しかし、実行されていないようですが、ブレークポイントがヒットしたときに出力に何も表示されません。 私のファイルの内容は単に 'bt'です。大丈夫ですか?私はブレークポイントが当たったたびにバックトレースが印刷されることを期待しています。 Android StudioのLLDBの実装は非常に面倒ですが、おそらくまだ間違っていますか? –

+1

ブレークポイントコマンドファイルに副作用のあるものを実行することができますか(たとえば、別のブレークポイントを設定するなど)。次に、コマンドが実行されたかどうかをブレークポイントに当てはめることができます。彼らが持っている場合(これは私が訴えるでしょう)、これはAndroidスタジオでlldb出力を収集する際のバグのようです。 –

+0

私はそこに「続行」を追加しようとしましたが、明らかに無視されました。少なくとも私のプログラムは継続されるのではなく、ブレークポイントで停止されていました。 –

関連する問題