LLDB Python-scripting in Xcode
Ich habe gerade entdeckt, diese praktisches feature von LLDB, das es mir erlaubt zu schreiben Python-Skripte, die den Zugriff auf Variablen, die im frame, wenn ich auf einen Haltepunkt in LLDB. Aber ich habe da ein paar Probleme, wenn es in Xcode (v4.5.2). Erstens kann ich nirgendwo finden kann, die sagt, wo ich, sollte diese Python-Skripte, so dass ich können Sie importieren Sie Sie von der Befehlszeile in LLDB. Zweitens, nachdem ich die Art script
in LLDB die Tastatur Eingabe geht ein bisschen falsch: backspace nicht löschen Sie die Zeichen auf dem Bildschirm angezeigt, aber effektiv löscht es von der Kommandozeile. So Tippen primt<bsp><bsp><bsp>int
effektiv bedeutet print
, aber es kommt immer noch als primtint
auf dem terminal. Das ist nur ästhetik, aber es ist ziemlich ärgerlich!
Kann jemand mir einige Xcode-spezifischen Ressourcen für die Verwendung von Python mit LLDB?
EDIT: Hier ist ein weiterer interessanter link, der sagt, man kann die Verwendung von Python zum erstellen von benutzerdefinierten Zusammenfassungen für Variablen mit Python, aber ich kann nicht finden, alles, was damit in Zusammenhang.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zwischen Xcode, lldb, und der Python-interpreter gibt es einige Probleme mit der interaktiven Konsole, leider. Bitte einen bug-report an http://bugreport.apple.com/ - ich weiß nicht, ob es ist ein bug-report zu diesem Problem bereits, obwohl die Probleme in der Regel hier bekannt sind. Möglicherweise möchten Sie die Befehlszeile verwenden, lldb-tool, wenn Sie die Erkundung der interaktiven python-scripting-Schnittstelle;, die besser funktioniert.
Ich habe alle meine python Skripte für lldb in
~/lldb
. In meinem~/.lldbinit
- source-Datei, die ich Ihnen in. Zum Beispiel habe ich~/lldb/stopifcaller.py
dieIch würde die
command script import
in meinem~/.lldbinit
- Datei zu laden, es automatisch, wenn es das ist, was ich wollte. Dieses Beispiel fügt einen python-Befehl breakpoint #1-wenn lldb Stoppt am breakpoint, wird an die aufrufende Funktion. Wenn die aufrufende Funktion nichtfoo
es wird automatisch die Ausführung fortsetzen. Im wesentlichen, Haltepunkt 1 wird nur aufhören, wenn foo() ruft bar () auf. Beachten Sie, dass es möglicherweise ein problem mit Xcode 4.5 lldb dabeicommand script import ~/...
-- Sie müssen möglicherweise geben Sie den vollständigen Pfad zu Ihrem home-Verzeichnis (/Users/benwad/
oder was auch immer). Ich kann mich nicht erinnern, sicher, es waren ein paar tilde-expansion Probleme mit Xcode 4.5, die behoben wurden, für eine Weile.Hinzuzufügen, können Sie einfach geben Sie Zusammenfassungen Ihrer
~/.lldbinit
direkt. Zum Beispiel, wenn ich Debuggen lldb selbstConstString
Objekte haben nur ein Feld von großem Interesse für mich normalerweise, das m_string ivar. Also ich habeWird, oder wenn es die Art
addr_t
, ich will immer, dass als hex formatiert, so habe ichWenn Sie möchten, um einen neuen Befehl hinzufügen lldb, würden Sie haben eine python-Datei, wie
~/lldb/sayhello.py
,und Sie laden würde es in lldb wie
Meisten der Zeit, wenn Sie hinzufügen einen Befehl in python geschrieben, Sie nutzen die
shlex
undoptparse
Bibliotheken, so kann der Befehl tun option parsing und fügen Sie eine__doc__
string - ich weggelassen, diese Dinge um das Beispiel einfach.lldb
python
snippets tun Sie? (Ich sah und wollte nicht sehen... Lust einen zu beginnen?) Ich denke, es ist sehr interessant.