Știu că pot reda valoarea unei variabile folosind
(gdb) p var_name $1 = "varvalue"
Este există o modalitate de a seta valoarea unei variabile în timp ce depanați cu gdb? Documentul pe care îl folosesc nu pare să aibă această comandă.
Editați
De atunci am aflat că pot schimba starea de obiecte din memorie prin simpla apelare a funcțiilor lor! Deci, pentru a modifica un obiect de tip std::string
, trebuie doar să apelați funcția assign
după cum urmează:
(gdb) call str.assign("New Value")
Vă mulțumim.
Răspundeți
Google este prietenul tău:
De exemplu, dacă programul tău are o lățime variabilă, primești o eroare dacă încerci să setezi o nouă valoare doar cu `set width = 13 „, deoarece GDB are lățimea setată de comandă:
(gdb) whatis width type = double (gdb) p width $4 = 13 (gdb) set width=47 Invalid syntax in expression.
Expresia nevalidă, desigur, este `= 47″. Pentru a seta efectiv lățimea variabilă a programului, utilizați
(gdb) set var width=47
Puteți găsi informațiile necesare în următorul document :
Comentarii
- Vă mulțumim pentru acest răspuns! Tocmai am încercat asta cu o variabilă dublă și a funcționat, totuși nu a funcționat cu ' t cu obiecte std :: string. Există o tehnică similară pentru a modifica și obiectele std :: string?
- verificați-le: sepwww.stanford.edu/public/sep/claudio/Research / Prst_ExpRefl / …
- și acesta: rsquared.sdf.org/gdb/ iacv.html
Răspuns
Puțin mai târziu, dar pentru a seta o variabilă șir ar trebui să încercați acest lucru>
gdb set var string_variable = „new_string_variable”
Numerele de caractere trebuie să fie aceleași pentru cele două definiții ale variabilelor, pentru a aplica modificarea după caz. Cotațiile trebuie aplicate noii variabile.