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

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.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *