Heim > Backend-Entwicklung > C++ > OKMX-C GDB-Remote-Debugging-Fähigkeiten

OKMX-C GDB-Remote-Debugging-Fähigkeiten

DDD
Freigeben: 2024-12-01 22:18:10
Original
280 Leute haben es durchsucht

OKMX-C GDB Remote Debugging Skills

Im Bereich der Embedded-Entwicklung ist das Debuggen ein entscheidender Schritt, um den stabilen Betrieb eines Programms sicherzustellen. Für Entwickler, die das OKMX8MP-C-Entwicklungsboard verwenden, kann die Beherrschung der GDB-Remote-Debugging-Techniken die Entwicklungseffizienz erheblich steigern. GDB, kurz für The GNU Project Debugger, ist ein umfassendes Debugging-Tool unter Linux. GDB unterstützt eine Vielzahl von Debugging-Methoden, darunter das Setzen von Haltepunkten, die Einzelschrittausführung, das Drucken von Variablen, das Beobachten von Variablen, das Untersuchen von Registern und das Anzeigen des Aufrufstapels.

In der Softwareentwicklung für Linux-Umgebungen ist GDB das primäre Debugging-Tool zum Debuggen von C- und C-Programmen. Die Version 5.4.70 von OKMX8MP-C bietet standardmäßig Unterstützung für gdbserver, und unsere bereitgestellte Entwicklungsumgebung unterstützt standardmäßig auch gdb. Als Nächstes erfahren Sie, wie Sie das GDB-Remote-Debugging auf dem OKMX8MP-C durchführen.

  1. Vorbereitung vor der Zusammenstellung Bevor Sie das GDB-Debugging durchführen, müssen Sie unbedingt sicherstellen, dass die Anwendung korrekt kompiliert wurde und Debugging-Informationen enthält. Dies kann durch Hinzufügen der Option -g während der Kompilierung erreicht werden. Zum Beispiel:

forlinx@ubuntu:~$ $CC -g test_bug.c -o test_bug

Dieser Befehl kompiliert die Quelldatei test_bug.c und generiert eine ausführbare Datei test_bug mit enthaltenen Debugging-Informationen. Auf diese Weise kann GDB bei nachfolgenden Debugging-Prozessen die entsprechenden Positionen im Quellcode genau lokalisieren.

Nach der Kompilierung muss die generierte ausführbare Datei auf das Entwicklungsboard kopiert werden. Dies wird normalerweise über eine serielle Schnittstelle, ein Netzwerk oder andere Dateiübertragungsmethoden erreicht. In diesem Beispiel gehen wir davon aus, dass die test_bug-Datei in das /-Verzeichnis auf dem Entwicklungsboard kopiert wurde.

  1. IP des Entwicklungsboards und Start der gdbserver-Einstellungen Als nächstes müssen Sie die IP-Adresse auf dem Entwicklungsboard festlegen und den gdbserver-Dienst starten. Die spezifischen Schritte sind wie folgt:

Stellen Sie die IP-Adresse ein:

Verwenden Sie den Befehl ifconfig, um die IP-Adresse für das Entwicklungsboard festzulegen. Zum Beispiel:

ifconfig eth0 172.16.0.109

Hier ist die IP-Adresse des Entwicklungsboards auf 172.16.0.109 eingestellt

Starten Sie gdbserver auf der Entwicklungsplatine und geben Sie die Nummer des Überwachungsports und das zu debuggende Programm an. Zum Beispiel:

gdbserver 172.16.0.109:2345 /test_bug

Dieser Befehl startet gdbserver und überwacht Port 2345 auf Verbindungsanfragen vom GDB-Client.

root@OK8MP:~# ifconfig eth0 172.16.0.109
root@OK8MP:~# gdbserver 172.16.0.109:2345 test_bug
Prozess /home/root/test_bug erstellt; pid = 1356
Abhören von Port 2345
Legen Sie auf der virtuellen Maschine oder dem Host eine IP-Adresse innerhalb desselben Netzwerksegments wie das Entwicklungsboard fest und verwenden Sie den Ping-Befehl, um die Konnektivität mit dem Entwicklungsboard zu testen.

Stellen Sie sicher, dass die IP-Adresse des Entwicklungsboards erfolgreich angepingt wird, was eine Voraussetzung für das Remote-Debugging ist.

  1. Starten des GDB-Clients und Herstellen einer Verbindung zum Entwicklungsboard Starten Sie den GDB-Client:

Verwenden Sie auf der virtuellen Maschine oder dem Host den Befehl aarch64-poky-linux-gdb, um den GDB-Client zu starten und das zu debuggende Programm anzugeben. Zum Beispiel:

forlinx@ubuntu:~/ aarch64-poky-linux-gdb test_bug
GNU gdb (GDB) 8.3.1
Copyright (C) 2019 Free Software Foundation, Inc.
Lizenz GPLv3: GNU GPL Version 3 oder höher http://gnu.org/licenses/gpl.html
Dies ist freie Software: Es steht Ihnen frei, sie zu ändern und weiterzuverbreiten.
Es besteht KEINE GEWÄHRLEISTUNG, soweit gesetzlich zulässig.
Geben Sie „Kopieren anzeigen“ und „Garantie anzeigen“ ein, um Einzelheiten anzuzeigen. Diese GDB wurde als „--host=x86_64-pokysdk-linux --target=aarch64-poky-linux“ konfiguriert.
Geben Sie „Konfiguration anzeigen“ ein, um Konfigurationsdetails anzuzeigen.
Anweisungen zur Fehlerberichterstattung finden Sie unter:
http://www.gnu.org/software/gdb/bugs/
Das GDB-Handbuch und andere Dokumentationsressourcen finden Sie online unter:
http://www.gnu.org/software/gdb/documentation/
Geben Sie für Hilfe „Hilfe“ ein.
Geben Sie „apropos Wort“ ein, um nach Befehlen zu suchen, die sich auf „Wort“ beziehen...
Symbole aus test_bug lesen...
(gdb)
Mit dem Board verbinden:

Verwenden Sie im GDB-Client den Ziel-Remote-Befehl, um eine Verbindung zum gdbserver auf der Platine herzustellen. Zum Beispiel:

(gdb) Zielfernbedienung 172.16.0.109:2345
Remote-Debugging mit 172.16.0.109:2345
Lesen von /lib/ld-linux-aarch64.so.1 vom Remote-Ziel...
Warnung: Dateiübertragungen von entfernten Zielen können langsam sein. Verwenden Sie stattdessen „set sysroot“, um lokal auf Dateien zuzugreifen.
Lesen von /lib/ld-linux-aarch64.so.1 vom Remote-Ziel...
Symbole aus dem Ziel lesen:/lib/ld-linux-aarch64.so.1...
/lib/ld-2.30.so vom Remote-Ziel lesen...
Lesen von /lib/.debug/ld-2.30.so vom Remote-Ziel...
Lesen von /lib/.debug/ld-2.30.so vom Remote-Ziel...
Symbole aus dem Ziel lesen:/lib/.debug/ld-2.30.so...
0x0000fffff7fcf080 in _start() von target:/lib/ld-linux-aarch64.so.1
(gdb)
An diesem Punkt stellt der GDB-Client eine Verbindung zum gdbserver auf der Platine her und ist bereit, mit dem Remote-Debugging zu beginnen.

  1. Remote-Debugging Nach erfolgreicher Verbindung können Sie verschiedene GDB-Debugging-Befehle für das Remote-Debugging verwenden. Nachfolgend finden Sie einige häufig verwendete Debugging-Befehle:

l (Liste): Listet den Quellcode auf.

b (break): Setzt einen Haltepunkt.

n (next): Geht Zeile für Zeile durch den Code.

s (Schritt): Schritte in Funktionen zur zeilenweisen Ausführung.

c (continue): Setzt die Programmausführung fort.

p (print): Druckt den Wert einer Variablen.

Verwenden Sie beispielsweise den Befehl l, um den Quellcode am aktuellen Speicherort anzuzeigen:

(gdb) l
12 }
13
14 void A(int *p)
15 {
16 B(p);
17 }
18
19 void A2(int *p)
20 {
21 C(p);
(gdb)

Dann können Sie den B-Befehl verwenden, um einen Haltepunkt in einer Zeile festzulegen, z. B. Zeile 16:

Bash-Kopiercode

(gdb) b 16

Haltepunkt 1 bei 0x...: Datei test_bug.c, Zeile 16.

Verwenden Sie den c-Befehl, um mit der Ausführung des Programms fortzufahren. Das Programm bleibt am Haltepunkt stehen und wartet auf weiteres Debuggen.

  1. Debugging-Techniken und Vorsichtsmaßnahmen Haltepunktverwaltung: Das richtige Festlegen von Haltepunkten kann die Debugging-Effizienz erheblich verbessern. Verwenden Sie den Befehl d, um Haltepunkte zu löschen. Verwenden Sie den Befehl info b, um alle aktuellen Haltepunkte anzuzeigen.

Variablenüberwachung: Verwenden Sie den Befehl watch, um Variablenänderungen zu überwachen. GDB unterbricht die Ausführung automatisch, wenn sich der Wert der Variablen ändert.

Multithread-Debugging: Wenn das Programm multithreaded ist, verwenden Sie den Thread-Befehl, um Threads für das Debuggen zu wechseln.

Sicherheitsüberlegungen: Die Gewährleistung der Sicherheit der Netzwerkumgebung ist beim Remote-Debugging von entscheidender Bedeutung. Verwenden Sie SSH-Tunnel oder andere Verschlüsselungsmethoden, um die Datenübertragung beim Debuggen zu schützen.

Das sind alle OKMX8MP-C GDB-Remote-Debugging-Fähigkeiten. Dieses leistungsstarke Tool ermöglicht eine effiziente Problemlösung und Entwicklungsverbesserung.

Das obige ist der detaillierte Inhalt vonOKMX-C GDB-Remote-Debugging-Fähigkeiten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage