2013-07-05 20 views
7

私の最もよく使用するgdbコマンドはlで、それに続いてnであり、その後にはl -です。LLDB:ソースコードの表示

lldbで同じようにするにはどうすればよいですか?

私はではありません。は、どこかのコードを見るために何らかの行番号を入力するだけで満足しています。私は、ターミナルに大量の変数をダンプした後、コード内のどこにいるのかを見たいと思います。そして、lへのその後の呼び出しが私をスクロールする(lldbもこれを行うが、決定的にはl -に応答しないので)私がどこにいるかを見るために戻るためにl -を使用した。

おそらく私は何かが不足していて、別のバッファーに対応するソースの位置を表示する "モード"があります。。それはいいかもしれませんが、私はそれを求めていません。

答えて

15

Xcode 4.6では、lldbのlエイリアスは、source listの簡単なショートカットです。

ツリーソースの先頭では、gdbのように動作するように改善されました。あなたはhttp://lldb.llvm.org/でオーバーsource/Interpreter/CommandInterpreter.cppを見ればあなたはlが今これらのケースでの正規表現のコマンドの別名であることがわかります。これらの例では

if (list_regex_cmd_ap->AddRegexCommand("^([0-9]+)[[:space:]]*$", "source list --line %1") && 
    list_regex_cmd_ap->AddRegexCommand("^(.*[^[:space:]])[[:space:]]*:[[:space:]]*([[:digit:]]+)[[:space:]]*$", "source list --file '%1' --line %2") && 
    list_regex_cmd_ap->AddRegexCommand("^\\*?(0x[[:xdigit:]]+)[[:space:]]*$", "source list --address %1") && 
    list_regex_cmd_ap->AddRegexCommand("^-[[:space:]]*$", "source list --reverse") && 
    list_regex_cmd_ap->AddRegexCommand("^-([[:digit:]]+)[[:space:]]*$", "source list --reverse --count %1") && 
    list_regex_cmd_ap->AddRegexCommand("^(.+)$", "source list --name \"%1\"") && 
    list_regex_cmd_ap->AddRegexCommand("^$", "source list")) 

、あなたはこのように動作を取得します:

は、現在のフレームを表示します:

(lldb) l - 
    5  
    6  
    7  
    8  
    9  puts ("hi"); // line 9 
    10 
    11 

(lldb) f 
#0: 0x0000000100000f2b a.out`main + 27 at a.c:15 
    12 
    13 
    14 
-> 15  puts ("hi"); // line 15 
    16 
    17  puts ("hi"); // line 17 
    18 } 

は、以前の10行を表示します

stop-line-count-afterstop-line-count-beforeの設定を使用して、フレーム停止時に表示されるソースコンテキストの量を制御することもできます。

~/.lldbinitファイルで独自の正規表現コマンドエイリアスを作成することができますが、ツリートップのlldbのlと同じ動作をすることができます。構文と例については、help command regexを参照してください。

+0

Hm。なぜ私が以前に私のために働いていないのか分かりません。それは今です。 –

+3

私はおもちゃのソースファイルで遊んでいましたが、私はソースファイルの最後に 'l'を繰り返し使用した場合、' l- 'は逆戻りしていないように見えました。あなたがソースファイルの終わり近くにいたなら、あなたはそれを見たかもしれません。 –

+0

私は参照してください。それは確かに迷惑なバグですが、私はそれがほとんどの時間でうまくいくのでうれしいです。 –

関連する問題