Zugriff auf Vektorelemente in GDB
Beim Debuggen von C-Code ist es wichtig, den Inhalt von Datenstrukturen zu untersuchen. Für einen std::vector kann dies in GDB eine besondere Herausforderung darstellen.
Adressierung von Vektorelementen
In GCC 4.1.2 ist das interne Array eines std:: Auf den Vektor kann über den Zeiger zugegriffen werden:
myVector._M_impl._M_start
wobei myVector der Name des Vektors ist.
Drucken von Vektorelementen
Um den gesamten std::vector
print *(myVector._M_impl._M_start)@myVector.size()
Dieser Befehl druckt alle Elemente im Vektor. Um nur die ersten N Elemente zu drucken, verwenden Sie:
print *(myVector._M_impl._M_start)@N
Erläuterung
Das Sternchen (*) wird verwendet, um den _M_start-Zeiger zu dereferenzieren, der auf den Anfang zeigt des internen Arrays. Das @-Symbol gibt die Anzahl der zu druckenden Elemente an.
Diese Methode ist versionabhängig und kann je nach Compilerversion variieren.
Das obige ist der detaillierte Inhalt vonWie kann ich auf Elemente eines std::vector in GDB zugreifen und diese drucken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!