Tiedän, että voin tuottaa muuttujan arvon käyttämällä
(gdb) p var_name $1 = "varvalue"
On onko tapa asettaa muuttujan arvo virheenkorjauksessa gdb: llä? Asiakirjalla, jota en käytä, ei näytä olevan tätä komentoa.
Muokkaa
Olen siitä lähtien oppinut, että voin muuttaa tilaa muistissa olevista kohteista yksinkertaisesti kutsumalla niiden toimintoja! Joten muokata objektia, jonka tyyppi on std::string
, soita vain funktiolle assign
seuraavasti:
(gdb) call str.assign("New Value")
Kiitos.
Vastaa
Google on ystäväsi:
Esimerkiksi jos ohjelmallasi on vaihteleva leveys, saat virheilmoituksen, jos yrität asettaa uuden arvon vain `asetetulla leveydellä = 13 ”, koska GDB: llä on komentojoukon leveys:
(gdb) whatis width type = double (gdb) p width $4 = 13 (gdb) set width=47 Invalid syntax in expression.
Virheellinen lauseke on tietysti `= 47″. Määritäksesi ohjelman muuttujan leveyden, käytä
(gdb) set var width=47
Tarvittavat tiedot löydät seuraavasta asiakirjasta :
kommentit
- Kiitos vastauksesta! Yritin juuri tätä kaksinkertaisella muuttujalla ja se toimi, mutta se ei toiminut ' ei toiminut std :: string-objektien kanssa. Onko samanlainen tekniikka myös std :: string-objektien muokkaamiseen?
- tarkista ne: sepwww.stanford.edu/public/sep/claudio/Research / Prst_ExpRefl / …
- ja tämä: rsquared.sdf.org/gdb/ iacv.html
Vastaa
Hieman myöhemmin, mutta jos haluat asettaa merkkijonomuuttujan, kokeile tätä>
gdb set var string_variable = ”new_string_variable”
Merkkien numeroiden on oltava samat kahdelle muuttujan määritykselle, jotta muutos voidaan soveltaa tarvittaessa. Lainaukset on käytettävä uuteen muuttujaan.