Vektorelemente in C über GDB drucken
Beim Debuggen von C-Code in GDB kann die Untersuchung des Inhalts eines std::vector eine Herausforderung sein . Betrachten Sie beispielsweise einen std::vector
In GCC 4.1.2 besteht die Lösung darin, auf den internen Zeiger des Vektors, myVector._M_impl._M_start, zuzugreifen, der auf das Array zeigt, das die Elemente des Vektors enthält.
Um den gesamten Vektor zu drucken, verwenden Sie:
print *(myVector._M_impl._M_start)@myVector.size()
Um nur die ersten N Elemente zu drucken, ändern Sie es wie folgt:
print *(myVector._M_impl._M_start)@N
Begründung
Dieser Ansatz nutzt den GDB-Befehl, um N Elemente eines Arrays beginnend bei einem bestimmten Zeiger zu drucken. In diesem Fall ist der Zeiger myVector._M_impl._M_start, und wir geben die Anzahl der zu druckenden Elemente mit myVector.size() oder der gewünschten Anzahl N an.
Während dieser Ansatz auf GCC 4.1.2 anwendbar ist , es kann je nach Compiler-Version variieren. Für andere Versionen wird daher empfohlen, die entsprechende Dokumentation zu konsultieren.
Das obige ist der detaillierte Inhalt vonWie drucke ich Vektorelemente in C mit GDB?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!