Tudom, hogy a
(gdb) p var_name $1 = "varvalue"
használatával ki tudom adni egy változó értékét van-e mód egy változó értékének beállítására a gdb-vel való hibakeresés közben? Úgy tűnik, hogy a dokumentum, amelyet nem használok, rendelkezik ezzel a paranccsal.
Szerkesztés
Azóta megtudtam, hogy megváltoztathatom az állapotot objektumokat a memóriában a funkcióik egyszerű meghívásával! Tehát egy std::string
típusú objektum módosításához egyszerűen hívja meg a assign
függvényt az alábbiak szerint:
(gdb) call str.assign("New Value")
Köszönöm.
Válasz
A Google a barátod:
Például, ha a programod változó szélességű, akkor hibaüzenetet kapsz, ha új értéket próbálsz beállítani csak a `beállított szélességgel = 13 “, mert a GDB rendelkezik a következő parancssori szélességgel:
(gdb) whatis width type = double (gdb) p width $4 = 13 (gdb) set width=47 Invalid syntax in expression.
Az érvénytelen kifejezés természetesen `= 47″. A program változó szélességének tényleges beállításához használja a következőt:
(gdb) set var width=47
A szükséges információkat a következő dokumentumban találhatja meg:
Megjegyzések
- Köszönöm ezt a választ! Csak egy dupla változóval próbáltam ki, és működött, de nem működött ' std :: string objektumokkal. Hasonló technika van-e az std :: string objektumok módosítására is?
- ezeket ellenőrizze: sepwww.stanford.edu/public/sep/claudio/Research / Prst_ExpRefl / …
- és ez: rsquared.sdf.org/gdb/ iacv.html
Válasz
Kicsit később, de egy string változó beállításához meg kell próbáld ki ezt:
gdb set var string_variable = “new_string_variable”
A karakterek számának meg kell egyeznie a két változó definíciónál, hogy a változást megfelelően alkalmazni lehessen. Idézeteket kell alkalmazni az új változóra.