So di poter generare il valore di una variabile utilizzando
(gdb) p var_name $1 = "varvalue"
È cè un modo per impostare il valore di una variabile durante il debug con gdb? Il documento che sto usando non sembra avere questo comando.
Modifica
Da allora ho imparato che posso cambiare lo stato di oggetti in memoria semplicemente chiamando le loro funzioni! Quindi, per modificare un oggetto di tipo std::string
, chiama la funzione assign
come segue:
(gdb) call str.assign("New Value")
Grazie.
Risposta
Google è il tuo amico:
Ad esempio, se il tuo programma ha una larghezza variabile, ottieni un errore se provi a impostare un nuovo valore con solo `set width = 13 “, perché GDB ha la larghezza del set di comandi:
(gdb) whatis width type = double (gdb) p width $4 = 13 (gdb) set width=47 Invalid syntax in expression.
Lespressione non valida, ovviamente, è “= 47”. Per impostare effettivamente la larghezza della variabile del programma, usa
(gdb) set var width=47
Puoi trovare le informazioni necessarie nel seguente documento :
Commenti
- Grazie per questa risposta! Lho appena provato con una doppia variabile e ha funzionato, tuttavia ' non ha funzionato con gli oggetti std :: string. Esiste una tecnica simile per modificare anche gli oggetti std :: string?
- dai unocchiata a quelli: sepwww.stanford.edu/public/sep/claudio/Research / Prst_ExpRefl / …
- e questo: rsquared.sdf.org/gdb/ iacv.html
Risposta
Un po più tardi, ma per impostare una variabile stringa dovresti prova questo>
gdb set var string_variable = “new_string_variable”
I numeri dei caratteri devono essere gli stessi per le due definizioni delle variabili, al fine di applicare la modifica in modo appropriato. Le virgolette devono essere applicate alla nuova variabile.