Comment modifier le contenu de la mémoire à l'aide de GDB?
Je sais que nous pouvons utiliser plusieurs commandes d'accès et de lecture de la mémoire: par exemple, impression, p, x...
Mais comment puis-je modifier le contenu de la mémoire à un endroit spécifique (pendant le débogage dans GDB)?
- écrire une chaîne dans la mémoire: stackoverflow.com/questions/19503057/...
Vous devez vous connecter pour publier un commentaire.
Le plus simple est de définir une variable de programme (voir GDB: affectation):
Ou vous pouvez simplement mettre à jour l'arbitraire (écriture) emplacement à l'adresse:
Il y a plus. Lire le manuel.
Que Nikolai a dit, vous pouvez utiliser le gdb " set " de commande pour modifier la valeur d'une variable.
Vous pouvez également utiliser le " set " de commande pour modifier les emplacements de la mémoire.
par exemple. L'expansion sur Nikolai exemple:
Cela devrait fonctionner pour tout pointeur valide, et peut être lancé à tout type de données approprié.
Expansion sur les réponses fournies ici.
Il vous suffit de faire
set idx = 1
pour définir une variable, mais que la syntaxe n'est pas recommandé parce que le nom de la variable peut être en contradiction avec un ensemble de sous-commande. Comme un exempleset w=1
ne serait pas valide.Cela signifie que vous devriez préférer la syntaxe:
set variable idx = 1
ouset var idx = 1
.Dernier mais non le moindre, vous pouvez simplement utiliser votre bon vieux de la commande d'impression, puisqu'il évalue une expression. La seule différence étant qu'il imprime également le résultat de l'expression.
Vous pouvez en lire plus à propos de gdb ici.