Wie kann ich die Rust-Anwendung Schritt für Schritt interaktiv debuggen, wie ich es mit "pry" in Ruby tun kann?
Ich möchte in der Lage sein, die Variablen in Echtzeit zu sehen und vorzugsweise zu ändern, wenn ich einen Haltepunkt erreiche. Gibt es ein produktionsfertiges Projekt?
Antworten:
Ich finde ein gutes Maß an Benutzerfreundlichkeit mit VS Code und der CodeLLDB- Erweiterung:
launch.json
Datei geöffnet. Wenn nicht, öffnen Sie sie im.vscode
OrdnerDu
launch.json
solltest so aussehen:{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "lldb", "request": "launch", "name": "Debug", "program": "${workspaceRoot}/target/debug/hello_world", "args": [], "cwd": "${workspaceRoot}/target/debug/", "sourceLanguages": ["rust"] } ] }
Wenn Sie die Dinge generisch halten und nur eine Binärdatei kompilieren möchten, die dem Namen des Frachtordners entspricht, können Sie den Schlüssel "program" durch die Variablensubstitution $ {workspaceRootFolderName} verwenden:
{ "version": "0.2.0", "configurations": [ { "type": "lldb", "request": "launch", "name": "Debug", "program": "${workspaceRoot}/target/debug/${workspaceRootFolderName}", "args": [], "cwd": "${workspaceRoot}/target/debug/", "sourceLanguages": ["rust"] } ] }
Hier sind einige Blog-Beiträge zu Rust und VS Code:
Arch Linux
Unter Windows
quelle
Der Rust-Compiler erstellt native Binärdateien mit nativen Debug-Informationen (Symbolinformationen), sodass jeder native Debugger dies tun kann. Das bedeutet
gdb
undlldb
, oder die Windows-Debugger (WinDBG oder nur Visual Studio), wenn Sie die MSVC ABI-Version von Rust verwenden. Wenn Sie eine integrierte Erfahrung wünschen, ist RustDT der richtige Weg (Setup unter Windows: Wie richte ich GDB für das Debuggen von Rust-Programmen in Windows ein? ). Bitte beachten Sie, dass Sie wahrscheinlich auf Folgendes stoßen: Wie kann ich beim Debuggen von MSVC ABI Rust-Programmen Variablenwerte überprüfen? unter Windows und https://github.com/rust-lang/rust/issues/33062 auf einem Mac.quelle
gdb 7.12
gibt es jetzt die richtige Unterstützung, nicht nur "funktioniert, weil es auf native kompiliert ist".Für einen grafischen Debugger gibt es gdbgui . Es ist für Linux, Windows und MacOS verfügbar. Es verwendet den Browser als Anzeige und zur Interaktion mit dem Debugger.
quelle
Ich habe gdb 7.11 und der Befehl rust-gdb scheint im Vergleich zum nativen gdb mehr rostrelevante Informationen zu liefern. Zum Beispiel zeigt rust-gdb Rostobjekte korrekt mit vollständigen Namen an, und gdb zeigt sie einfach nicht an.
Im folgenden Beispiel würde gdb nun alle fett gedruckten Teile anzeigen.
$ 1 = Args = {inner = ArgsOs = {inner = Args = {iter = IntoIter = {buf = NonNull = {pointer = NonZero <* const std :: ffi :: os_str :: OsString> = {0x7ffff6c20060}}, phantom = PhantomData , cap = 1, ptr = 0x7ffff6c20060, end = 0x7ffff6c20078}, _dont_send_or_sync_me = PhantomData <* mut ()> }}}
quelle