114 votes

Comment modifier le contenu de la mémoire à l’aide de GDB?

Je sais que nous pouvons utiliser plusieurs commandes pour accéder et lire la mémoire : par exemple, imprimer, p, x...

Mais comment puis-je modifier le contenu de la mémoire à n’importe quel emplacement spécifique (lors du débogage dans GDB)?

153voto

Nikolai N Fetissov Points 52093

Le plus simple est de définir une variable de programme (voir GDB : affectation) :

Ou vous pouvez simplement mettre à jour l’emplacement arbitraire (inscriptible) par adresse:

Ce n’est pas tout. Lisez le manuel.

36voto

Andrew Edgecombe Points 13183

Comme Nikolai l’a dit, vous pouvez utiliser la commande gdb 'set' pour changer la valeur d’une variable.

Vous pouvez également utiliser la commande 'set' pour modifier les emplacements de mémoire. Eg. Développant l’exemple de Nikolai:

Cela devrait fonctionner pour n’importe quel pointeur valide et peut être converti en n’importe quel type de données approprié.

5voto

BoRRis Points 643

L’une des choses les plus utiles est de changer directement la valeur des registres.

Pour modifier la valeur du registre rdi :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X