Ich versuche, eine Bibliothek zu debuggen, deren Quelle ich nicht habe, also benutze ich LLDB Disassembly viel. Ich habe mich gefragt, ob es eine Möglichkeit gibt, Disassembly automatisch nach jedem Aufruf von "Thread-In" zu starten. Momentan führt LLDB den Befehl aus und kehrt dann mit einer leeren Eingabeaufforderung zurück. Um zu sehen, wohin der EIP verschoben wurde, muss ich nach jedem Thread-Step disassemblieren, was extrem störend und ärgerlich ist (auch scheint LLDB Ausdrücke nicht mit ';' zu beenden, also mehrere Befehle auf eine Zeile zu setzen) Ich habe mich gefragt, ob es eine Möglichkeit gibt, einen Alias für mehrere LLDB-Befehle hintereinander zu erstellen: Zum Beispiel einen einzelnen Alias, der den Inhalt von% rdi ausgeben könnte, und dann 10 Zeilen zerlegen EIP. (Ja, ich könnte Python-Skript dafür schreiben, aber ich habe nicht so viel Zeit auf meiner Hand :-(LLDB Alias für mehrere Befehle als ein
Antwort
Ja, der richtige Weg, dies zu tun ist über die Python-Skript-Schnittstelle. Es gab eine bewusste Entscheidung zu vermeiden, dass gdb in der Befehlssprache des Debuggers genügend Flow-Control- und Execution-Logik einbringt, um dies möglich zu machen (oder vielmehr - um es möglich zu machen ... schlecht). Statt dieser Vorgehensweise gibt es eine niedrige Barriere, wo Sie brauchen Python zur Erledigung einer Aufgabe verwenden - aber die volle Leistungsfähigkeit des Debuggers ist über einige einfach zu bedienende Oberflächen in Python verfügbar.lldb überlässt die Skriptsprache Python und konzentriert sich auf die Bereitstellung einer sauberen und leistungsfähigen API, die einfach zu bedienen ist Verwenden Sie aus Python
Aber um Ihr Ziel hier anzusprechen, warum nicht die stop-disassembly-count
Einstellung tun, was Sie brauchen? In der Tat sollte es bereits tun, was Sie wollen, es sei denn, Sie haben Disassemblierungsanzeige in Ihrer ~/.lldbinit
Datei durch Ändern der Standardeinstellung stop-disassembly-display
deaktiviert.
(lldb) settings show stop-disassembly-count
stop-disassembly-count (int) = 4
(lldb) settings show stop-disassembly-display
stop-disassembly-display (enum) = no-source
(lldb)
LLDB Standardverhalten ist einig Art von Kontext zu zeigen, wenn Sie durch ein Programm verstärken. Wenn Quellcode verfügbar ist, wird die Quelle angezeigt, durch die Sie gehen. Wenn keine Quelle vorhanden ist, werden die Baugruppenanweisungen angezeigt, die ausgeführt werden sollen. Es gibt einen kleinen Fehler, wenn Sie Debug-Informationen haben (also der Debugger kennt Datei- und Zeilennummern), aber der Quellcode ist nicht verfügbar (oder auf einem anderen Pfad) - gerade wird lldb Ihnen die Disassemblierung zeigen, aber das ist nicht das richtige Verhalten dieser Fall. Benutzer arbeiten immer noch auf einer Quellenebene (unter Verwendung von s
und n
anstelle von si
und ni
für stepping auf Anweisungsebene) und lldb sollte in dieser Instanz keinen Kontext anzeigen, sondern nur den Namen der Quelldatei und die Zeilennummer anzeigen.
- 1. mehrere Befehle in einem Alias für bash
- 2. Oh My Zsh mehrere Befehle mit einem Alias
- 3. Knoten child_process.spawn mehrere Befehle
- 4. Mehrere Alias-Namen für eine Tabelle
- 5. Emacs Key-Bindung für mehrere Befehle
- 6. Mehrere Befehle mit ImageMagick
- 7. Mehrere Befehle mit JSch
- 8. Mehrere Powershell-Befehle ausführen
- 9. LLDB Registerkarte Vervollständigung für Symbolnamen
- 10. Bash Exec Wrapper-Skript - mehrere Befehle als Argumente übergeben
- 11. Alias eine Methode mehrere Male
- 12. mehrere Befehle in cmake execute_process
- 13. Was ist $? ein Alias für in Powershell?
- 14. Mehrere Shell-Befehle in Windows
- 15. Rails Unlimited Self Joins als Alias
- 16. Vorlagen-Alias für einen anderen Alias
- 17. Bash-Skript mehrere Befehle Problem
- 18. LLDB: ein Haltepunkt für malloc_error_break über die Konsole einstellen
- 19. LLDB zeigt keinen Quellcode
- 20. Wie mehrere Befehle in Go?
- 21. Mehrere Tabellen ohne AS (Alias) auswählen?
- 22. Mehrere Domains für eine Site: Alias oder Redirect?
- 23. Alias für Beziehung
- 24. Android Alias für Empfänger
- 25. Visual Studio: Mehrere Post-Build-Befehle?
- 26. Erhalten Sie ALIAS als concatned Spalte Namen
- 27. Mit Groovy, wie Pipe mehrere Shell-Befehle?
- 28. Tabulatorvervollständigung für aliased Unter Befehle in zsh: alias GCO = 'git checkout'
- 29. Mehrere Befehle innerhalb Betreuer - Python/Linux
- 30. Erste mehrere SQL-Befehle in C# betrieben
Okay, das Problem war mit der lldbinit-Datei auf der Maschine wurde debuggen. Wirklich lieben LLDB. Danke für die Hilfe. – MachPortMassenger