Heim > Backend-Entwicklung > C++ > Hauptteil

Wie drucke ich den Inhalt eines C „std::vector' in GDB?

Mary-Kate Olsen
Freigeben: 2024-10-30 03:55:28
Original
674 Leute haben es durchsucht

How to Print the Contents of a C   `std::vector` in GDB?

GDB-Debugging für C-Vektoren

Das Debuggen von C-Code kann häufig die Untersuchung des Inhalts von Datenstrukturen umfassen. Dies wird besonders schwierig, wenn es um komplexe Strukturen wie C-Vektoren geht. Um dieses Problem zu beheben, wird in diesem Artikel untersucht, wie die Elemente eines std::vector in GDB.

Identifizieren Sie zunächst den Zeiger auf das interne Array, das die Vektorelemente speichert. In GCC 4.1.2 ist dieser Zeiger über den Ausdruck myVector._M_impl._M_start zugänglich.

Um den gesamten Vektor zu drucken, verwenden Sie den folgenden GDB-Befehl:

print *(myVector._M_impl._M_start)@myVector.size()
Nach dem Login kopieren

Dieser Befehl druckt den Elemente des Vektors, beginnend bei der Adresse myVector._M_impl._M_start und weiter für myVector.size()-Elemente.

Um nur die ersten N Elemente des Vektors zu drucken, ändern Sie den Befehl wie folgt:

print *(myVector._M_impl._M_start)@N
Nach dem Login kopieren

Dieser Befehl druckt die ersten N Elemente des Vektors.

Erklärung:

Diese Befehle funktionieren, weil sie die Art und Weise nutzen, wie Vektoren implementiert werden in GCC 4.1.2. Das interne Array wird im Feld _M_impl._M_start des Vektors gespeichert, und mit dem GDB-Befehl „print P@N“ können Sie N Elemente eines Arrays beginnend beim Zeiger P drucken.

Verknüpfungen:

Sie können auch eine Verknüpfung in Ihrer GDB-Initialisierungsdatei (.gdbinit) erstellen, um den Debugging-Prozess zu vereinfachen. Fügen Sie die folgende Zeile zu Ihrer .gdbinit-Datei hinzu:

define p P@N
Nach dem Login kopieren

Dadurch wird ein Alias ​​für den Befehl „print P@N“ erstellt, sodass Sie p verwenden können, um Array-Elemente bequemer zu drucken.

Das obige ist der detaillierte Inhalt vonWie drucke ich den Inhalt eines C „std::vector' in GDB?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!