Sé que puedo generar el valor de una variable usando
(gdb) p var_name $1 = "varvalue"
Is ¿Hay alguna manera de establecer el valor de una variable mientras se depura con gdb? El documento que estoy usando no parece tener este comando.
Editar
Desde entonces he aprendido que puedo cambiar el estado de objetos en la memoria simplemente llamando a sus funciones. Entonces, para modificar un objeto de tipo std::string
, simplemente llame a la función assign
de la siguiente manera:
(gdb) call str.assign("New Value")
Gracias.
Respuesta
Google es su amigo:
Por ejemplo, si su programa tiene un ancho variable, obtendrá un error si intenta establecer un nuevo valor con solo `set width = 13 «, porque GDB tiene el ancho de conjunto de comandos:
(gdb) whatis width type = double (gdb) p width $4 = 13 (gdb) set width=47 Invalid syntax in expression.
La expresión no válida, por supuesto, es `= 47″. Para establecer realmente el ancho de la variable del programa, use
(gdb) set var width=47
Puede encontrar la información necesaria en el siguiente documento :
Comentarios
- ¡Gracias por esta respuesta! Intenté esto con una variable doble y funcionó, sin embargo, ' no funcionó con objetos std :: string. ¿Existe una técnica similar para modificar std :: string objetos también?
- revisa esos: sepwww.stanford.edu/public/sep/claudio/Research / Prst_ExpRefl / …
- y este: rsquared.sdf.org/gdb/ iacv.html
Responder
Un poco más tarde, pero para establecer una variable de cadena debe pruebe esto>
gdb set var string_variable = «new_string_variable»
Los números de caracteres deben ser los mismos para las dos definiciones de variables, para poder aplicar el cambio según corresponda. Las cotizaciones deben aplicarse a la nueva variable.