Wiem, że mogę wyprowadzić wartość zmiennej za pomocą
(gdb) p var_name $1 = "varvalue"
Czy istnieje sposób na ustawienie wartości zmiennej podczas debugowania za pomocą gdb? Wydaje się, że dokument, którego używam, nie zawiera tego polecenia.
Edytuj
Od tego czasu dowiedziałem się, że mogę zmienić stan obiektów w pamięci, po prostu wywołując ich funkcje! Aby zmodyfikować obiekt typu std::string
, po prostu wywołaj funkcję assign
w następujący sposób:
(gdb) call str.assign("New Value")
Dziękuję.
Odpowiedź
Google jest twój przyjaciel:
Na przykład, jeśli twój program ma zmienną szerokość, otrzymasz błąd, jeśli spróbujesz ustawić nową wartość za pomocą tylko `ustaw szerokość = 13 „, ponieważ GDB ma polecenie ustawione na szerokość:
(gdb) whatis width type = double (gdb) p width $4 = 13 (gdb) set width=47 Invalid syntax in expression.
Oczywiście niepoprawne wyrażenie to „= 47”. Aby faktycznie ustawić szerokość zmiennej programu, użyj
(gdb) set var width=47
Możesz znaleźć potrzebne informacje w następującym dokumencie :
Komentarze
- Dziękuję za tę odpowiedź! Właśnie wypróbowałem to z podwójną zmienną i zadziałało, jednak ' nie działało z obiektami std :: string. Czy istnieje podobna technika modyfikowania obiektów std :: string?
- sprawdź te: sepwww.stanford.edu/public/sep/claudio/Research / Prst_ExpRefl / …
- i ten: rsquared.sdf.org/gdb/ iacv.html
Odpowiedź
Nieco później, ale aby ustawić zmienną typu string, należy spróbuj tego>
gdb set var string_variable = „new_string_variable”
Numery znaków muszą być takie same dla dwóch definicji zmiennych, aby można było odpowiednio zastosować zmianę. Cytaty należy zastosować do nowej zmiennej.