Artikelverzeichnis
VSCode konfiguriert das GDB-Debugging
qemu-Basics – Aufbau einer Bare-Metal-Debugging-Umgebung
Im vorherigen Abschnitt haben wir die GDB-Befehlszeile direkt zum Debuggen verwendet. In diesem Abschnitt wird erläutert, wie Sie VSCode zum Debuggen verwenden.
Installieren Sie das VSCode-Plug-in
Erstellung der Debug-Datei
Wählen Sie Node.js aus. Im aktuellen Arbeitsbereich wird eine launch.json-Datei erstellt.
Debug-Konfiguration
Platzierungsskript
{
"version": "0.2.0",
"configurations": [
{
"name": "qemu_bare",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/qemu_code/bare/example/0020_mmu/bsp.elf",
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceFolder}/qemu_code/bare",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/home/tyustli/cross_tool/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gdb",
"miDebuggerServerAddress": "localhost:1234",
}
]
}
- Version: Gibt die Versionsnummer an und muss im Allgemeinen nicht geändert werden
- Konfigurationen: Enthält spezifische Konfigurationsinformationen für jede Debugging-Aufgabe.
- Name: Der Name der Debug-Aufgabe, der in den Dropdown-Feldern „Ausführen“ und „Debuggen“ angezeigt werden kann. Das ist der Ort im Bild unten.
- Typ: Gibt den Compilertyp an. Wenn arm-none-gcc verwendet wird, geben Sie cppdgb ein.
- Anfrage: Es gibt zwei Arten: Starten und Anhängen. Ersteres bedeutet, dass VSCode das Programm öffnet und dann das Debuggen startet. Letzteres bedeutet, dass Sie das Programm geöffnet und dann zum Debuggen eine Verbindung zum internen Debugging-Protokoll von Node.js hergestellt haben. Wählen Sie im Allgemeinen „Starten“.
- args: Befehlszeilenargumente, die an das Programm übergeben werden. Es kann beispielsweise das Eingabedokument für das Debuggen sein. Es wird empfohlen, absolute Pfade zu verwenden.
- stopAtEntry: optionaler Parameter. Bei „true“ sollte der Debugger am Einstiegspunkt des Zielprogramms anhalten. Bei „false“ stoppt er nicht am Einstiegspunkt des Zielprogramms, sondern wird direkt ausgeführt, bis ein Haltepunkt erreicht wird.
- cwd: cd zum obersten Verzeichnis des Projekts. Bezieht sich im Allgemeinen auf das Verzeichnis, in dem sich das zu debuggende Programm befindet.
- Umgebung: Umgebungsvariablen, die dem Programm hinzugefügt werden sollen {"name": "config", "value": "Debug"}.
- externalConsole: true: Konsole starten; false: Anzeige in der integrierten Konsole von vscode
- MIMode: Debugging-Modus, geben Sie als Debugger GDB oder LLDB usw. an.
- miDebuggerPath: Legen Sie den Debugger-Pfad fest
- miDebuggerServerAddress: Debugger-Server (Gerät), der für Remote-Debugging-Verbindungen verwendet wird
qemu-Startskript
qemu-system-arm -machine mcimx6ul-evk -kernel bsp.elf -serial stdio -S -s
qemu verfügt über mehr Startoptionen -s -S, was bedeutet, dass es nach dem Start anhält und auf die GDB-Verbindung wartet. Starten Sie zuerst qemu, bevor Sie mit dem Debuggen beginnen, und lassen Sie es auf die GDB-Verbindung warten.
Beginnen Sie mit dem Debuggen
Fehlerbericht eins
Wenn das Node.js-Modul nicht gefunden werden kann, verwenden Sie den folgenden Befehl, um es zu installieren
Node.js-Installation
sudo apt-get install nodejs
Fehlerbericht zwei
error while loading shared libraries: libncursesw.so.5: cannot open shared object file: No such file or directory
lösen
sudo apt install libncursesw5-dev
sudo apt install apt-file
sudo apt-file update
sudo apt-file find libncursesw.so.5
sudo apt install libncursesw5
Fehlerbericht drei
error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
lösen
sudo apt-get install libpython2.7
Debugging-Schnittstelle
Führen Sie den GDB-Befehl aus
Geben Sie beispielsweise -exec + GDB 命令
in die Debugging-Konsole ein
Demontage ansehen
Geben Sie die Debug-Konsole ein
-exec disassemble /m