Drucken von Vektorelementen in C über GDB
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 umfasst die Lösung den Zugriff auf den internen Zeiger des Vektors, myVector._M_impl._M_start, 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
Reasoning
Dieser Ansatz nutzt den GDB-Befehl, um N Elemente eines Arrays beginnend bei a zu drucken gegebener Zeiger. 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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3