Jag vet att jag kan mata ut värdet på en variabel med
(gdb) p var_name $1 = "varvalue"
Is finns det ett sätt att ställa in värdet på en variabel vid felsökning med gdb? Dokumentet som jag använder verkar inte ha det här kommandot.
Redigera
Jag har sedan dess lärt mig att jag kan ändra tillstånd av objekt i minnet genom att helt enkelt anropa deras funktioner! För att ändra ett objekt av typen std::string
, ring bara assign
-funktionen enligt följande:
(gdb) call str.assign("New Value")
Tack.
Svar
Google är din vän:
Om ditt program till exempel har en variabel bredd får du ett fel om du försöker ställa in ett nytt värde med bara `ställ in bredd = 13 ”, eftersom GDB har kommandosättbredden:
(gdb) whatis width type = double (gdb) p width $4 = 13 (gdb) set width=47 Invalid syntax in expression.
Det ogiltiga uttrycket är naturligtvis `= 47″. För att faktiskt ställa in programmets variabla bredd, använd
(gdb) set var width=47
Du hittar informationen som behövs i följande dokument :
Kommentarer
- Tack för det här svaret! Jag försökte bara detta med en dubbel variabel och det fungerade, men det fungerade dock inte ' med std :: strängobjekt. Är en liknande teknik för att ändra std :: strängobjekt också?
- kolla in dem: sepwww.stanford.edu/public/sep/claudio/Research / Prst_ExpRefl / …
- och den här: rsquared.sdf.org/gdb/ iacv.html
Svar
Lite senare men för att ställa in en strängvariabel bör du prova detta>
gdb set var string_variable = ”new_string_variable”
Teckennummer måste vara desamma för de två variabeldefinitionerna för att tillämpa ändringen på lämpligt sätt. Citat måste tillämpas på den nya variabeln.