Vím, že hodnotu proměnné mohu načíst pomocí
(gdb) p var_name $1 = "varvalue"
Je existuje způsob, jak nastavit hodnotu proměnné při ladění pomocí gdb? Dokument, který „nepoužívám“, zřejmě nemá tento příkaz.
Upravit
Od té doby jsem se dozvěděl, že mohu změnit stav objektů v paměti jednoduchým voláním jejich funkcí! Chcete-li tedy upravit objekt typu std::string
, stačí zavolat funkci assign
takto:
(gdb) call str.assign("New Value")
Děkuji.
Odpověď
Google is váš přítel:
Pokud má váš program například proměnnou šířku, zobrazí se chyba, pokud se pokusíte nastavit novou hodnotu pouze s `nastavenou šířkou = 13 „, protože GDB má šířku sady příkazů:
(gdb) whatis width type = double (gdb) p width $4 = 13 (gdb) set width=47 Invalid syntax in expression.
Neplatný výraz je samozřejmě `= 47″. Chcete-li skutečně nastavit proměnnou šířku programu, použijte
(gdb) set var width=47
Potřebné informace najdete v následujícím dokumentu :
Komentáře
- Děkujeme za odpověď! Zkusil jsem to s dvojitou proměnnou a fungovalo to, ale ' t nepracoval s objekty std :: string. Je podobnou technikou možné upravit i objekty std :: string?
- zkontrolujte je: sepwww.stanford.edu/public/sep/claudio/Research / Prst_ExpRefl / …
- a tento: rsquared.sdf.org/gdb/ iacv.html
Odpověď
O něco později, ale pro nastavení řetězcové proměnné byste měli zkuste to>
gdb set var string_variable = „new_string_variable“
Aby bylo možné změnu použít, musí být čísla znaků pro obě definice proměnných stejná. Na novou proměnnou je třeba použít uvozovky.