Jeg vet at jeg kan levere verdien til en variabel ved hjelp av
(gdb) p var_name $1 = "varvalue"
Is finnes det en måte å sette verdien på en variabel under feilsøking med gdb? Dokumentet jeg bruker ikke ser ut til å ha denne kommandoen.
Rediger
Jeg har siden lært at jeg kan endre tilstanden av objekter i minnet ved å bare ringe funksjonene deres! For å endre et objekt av typen std::string
, er det bare å ringe assign
-funksjonen som følger:
(gdb) call str.assign("New Value")
Takk.
Svar
Google er vennen din:
Hvis for eksempel programmet ditt har en variabel bredde, får du en feil hvis du prøver å sette en ny verdi med bare `sett bredde = 13 «, fordi GDB har kommandosettbredden:
(gdb) whatis width type = double (gdb) p width $4 = 13 (gdb) set width=47 Invalid syntax in expression.
Det ugyldige uttrykket er selvfølgelig `= 47″. For å faktisk stille inn programmets variable bredde, bruk
(gdb) set var width=47
Du finner informasjonen du trenger i følgende dokument :
Kommentarer
- Takk for dette svaret! Jeg prøvde nettopp dette med en dobbel variabel, og det fungerte, men det fungerte ikke ' t med std :: strengobjekter. Er en lignende teknikk for å endre std :: strengobjekter også?
- sjekk ut disse: sepwww.stanford.edu/public/sep/claudio/Research / Prst_ExpRefl / …
- og denne: rsquared.sdf.org/gdb/ iacv.html
Svar
Litt senere, men for å angi en strengvariabel bør du prøv dette>
gdb set var string_variable = «new_string_variable»
Tegn tall må være de samme for de to variabeldefinisjonene, for å kunne bruke endringen etter behov. Tilbud må brukes på den nye variabelen.