Ich weiß, dass ich den Wert einer Variablen mit
(gdb) p var_name $1 = "varvalue"
Is ausgeben kann Gibt es eine Möglichkeit, den Wert einer Variablen beim Debuggen mit gdb festzulegen? Das Dokument, das ich verwende, scheint diesen Befehl nicht zu haben.
Bearbeiten
Ich habe seitdem erfahren, dass ich den Status ändern kann von Objekten im Speicher durch einfaches Aufrufen ihrer Funktionen! Um ein Objekt vom Typ std::string
zu ändern, rufen Sie einfach die Funktion assign
wie folgt auf:
(gdb) call str.assign("New Value")
Vielen Dank.
Antwort
Google ist Ihr Freund:
Wenn Ihr Programm beispielsweise eine variable Breite hat, wird eine Fehlermeldung angezeigt, wenn Sie versuchen, einen neuen Wert mit nur `set width festzulegen = 13 „, da GDB die Befehlssatzbreite hat:
(gdb) whatis width type = double (gdb) p width $4 = 13 (gdb) set width=47 Invalid syntax in expression.
Der ungültige Ausdruck ist natürlich `= 47″. Um die variable Breite des Programms tatsächlich festzulegen, verwenden Sie
(gdb) set var width=47
Die erforderlichen Informationen finden Sie im folgenden Dokument :
Kommentare
- Vielen Dank für diese Antwort! Ich habe es gerade mit einer Doppelvariablen versucht und es hat funktioniert, aber ' hat mit std :: string-Objekten nicht funktioniert. Ist eine ähnliche Technik auch zum Ändern von std :: string-Objekten geeignet?
- Überprüfen Sie diese: sepwww.stanford.edu/public/sep/claudio/Research / Prst_ExpRefl / …
- und dieses: rsquared.sdf.org/gdb/ iacv.html
Antwort
Etwas später, aber um eine Zeichenfolgenvariable festzulegen, sollten Sie Versuchen Sie dies>
gdb set var string_variable = „new_string_variable“
Die Zeichennummern müssen für die beiden Variablendefinitionen identisch sein, damit die Änderung entsprechend angewendet werden kann. Anführungszeichen müssen auf neue Variablen angewendet werden.