2013-07-05 16 views
7

Mein am häufigsten verwendeter gdb Befehl ist l, gefolgt von n, gefolgt von l -.LLDB: Quellcode auflisten

Wie bekomme ich das gleiche in lldb?

Ich bin nicht zufrieden mit nur einige Zeilennummer eingeben irgendwo um den Code zu sehen. Ich möchte sehen, wo ich im Code bin, nachdem ich eine Tonne Variablen an das Terminal ausgegeben habe. Und ich benutzte l -, um zurück zu schauen, wo ich bin, seit nachfolgende Anrufe zu l Scroll mich nach unten (lldb tut dies auch, aber entscheidend reagiert nicht auf l -).

Vielleicht vermisse ich etwas und es gibt eine Art von "Modus" ich kann es setzen, die die entsprechende Quelle in einem separaten Puffer die ganze Zeit anzeigen wird. Das wäre nett, aber ich frage nicht einmal danach.

Antwort

15

In Xcode 4.6, die LLDB l alias ist eine einfache Abkürzung für source list.

In den oberen Baumquellen wurde dies verbessert, um sich mehr wie gdb zu verhalten. Wenn Sie bei source/Interpreter/CommandInterpreter.cpp über bei http://lldb.llvm.org/ schauen sehen Sie, dass l ist jetzt ein regulärer Ausdruck Befehl alias mit diesen Fällen:

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")) 

Mit diesen Fällen werden Sie Verhalten wie diese:

anzeigen aktuellen Frame :

(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 } 

zeigen vorherigen zehn Zeilen:

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

Sie können auch die Einstellungen stop-line-count-after und stop-line-count-before verwenden, um zu steuern, wie viel Quellkontext bei Bildstopps angezeigt wird.

Beachten Sie, dass Sie Ihren eigenen regulären Ausdruck Befehlsalias in Ihrer ~/.lldbinit Datei mit dem gleichen Verhalten wie die obersteder lldb-Struktur erstellen können. Siehe help command regex für die Syntax und ein Beispiel.

+0

Hm. Ich bin mir nicht sicher, warum 'l -' für mich früher nicht funktioniert hat. Es tut jetzt. –

+3

Ich spielte mit einer Spielzeug-Quelldatei herum und bemerkte, dass ich, wenn ich 'l' immer wieder an das Ende der Quelldatei setzte,' l -' nicht wieder rückwärts zu gehen schien. Sie haben das vielleicht gesehen, wenn Sie sich am Ende einer Quelldatei befanden. –

+0

Ich verstehe. Das ist sicherlich ein nervender Bug, aber ich bin froh, dass es die meiste Zeit funktioniert. –