Je sais que je peux afficher la valeur dune variable en utilisant
(gdb) p var_name $1 = "varvalue"
Est existe-t-il un moyen de définir la valeur dune variable lors du débogage avec gdb? Le document que jutilise ne semble pas avoir cette commande.
Modifier
Jai appris depuis que je peux changer létat dobjets en mémoire en appelant simplement leurs fonctions! Donc pour modifier un objet de type std::string
, il suffit dappeler la fonction assign
comme suit:
(gdb) call str.assign("New Value")
Merci.
Réponse
Google est votre ami:
Par exemple, si votre programme a une largeur variable, vous obtenez une erreur si vous essayez de définir une nouvelle valeur avec juste `set width = 13 « , car GDB a la largeur de jeu de commandes:
(gdb) whatis width type = double (gdb) p width $4 = 13 (gdb) set width=47 Invalid syntax in expression.
Lexpression invalide, bien sûr, est `= 47″. Pour définir réellement la largeur de la variable du programme, utilisez
(gdb) set var width=47
Vous pouvez trouver les informations nécessaires dans le document suivant :
Commentaires
- Merci pour cette réponse! Jai juste essayé ceci avec une double variable et cela a fonctionné, mais cela na pas fonctionné ' avec les objets std :: string. Existe-t-il une technique similaire pour modifier également les objets std :: string?
- Vérifiez-les: sepwww.stanford.edu/public/sep/claudio/Research / Prst_ExpRefl / …
- et celui-ci: rsquared.sdf.org/gdb/ iacv.html
Réponse
Un peu plus tard, mais pour définir une variable de chaîne, vous devriez essayez ceci>
gdb set var string_variable = « new_string_variable »
Les numéros de caractères doivent être les mêmes pour les deux définitions de variables, afin dappliquer le changement comme il convient. Les devis doivent être appliqués à la nouvelle variable.