Eu sei que posso produzir o valor de uma variável usando
(gdb) p var_name $1 = "varvalue"
É existe uma maneira de definir o valor de uma variável durante a depuração com gdb? O documento que estou usando não parece ter esse comando.
Edite
Desde então aprendi que posso mudar o estado de objetos na memória simplesmente chamando suas funções! Portanto, para modificar um objeto do tipo std::string
, basta chamar a função assign
da seguinte maneira:
(gdb) call str.assign("New Value")
Obrigado.
Resposta
O Google é seu amigo:
Por exemplo, se o seu programa tiver uma largura variável, você receberá um erro se tentar definir um novo valor com apenas `definir a largura = 13 “, porque o GDB tem a largura do conjunto de comandos:
(gdb) whatis width type = double (gdb) p width $4 = 13 (gdb) set width=47 Invalid syntax in expression.
A expressão inválida, é claro, é `= 47″. Para definir realmente a largura da variável do programa, use
(gdb) set var width=47
Você pode encontrar as informações necessárias no seguinte documento :
Comentários
- Obrigado por esta resposta! Eu apenas tentei fazer isso com uma variável dupla e funcionou, no entanto, não ' funcionou com objetos std :: string. É uma técnica semelhante para modificar objetos std :: string também?
- verifique: sepwww.stanford.edu/public/sep/claudio/Research / Prst_ExpRefl / …
- e este: rsquared.sdf.org/gdb/ iacv.html
Resposta
Um pouco mais tarde, mas para definir uma variável de string, você deve tente isto>
gdb set var string_variable = “new_string_variable”
Os números dos caracteres devem ser iguais para as duas definições de variáveis, a fim de aplicar a mudança conforme apropriado. As aspas precisam ser aplicadas à nova variável.