Maison >développement back-end >C++ >Comment puis-je surveiller l'accès aux variables et les lectures/écritures de mémoire dans GDB à l'aide de points d'arrêt ?

Comment puis-je surveiller l'accès aux variables et les lectures/écritures de mémoire dans GDB à l'aide de points d'arrêt ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-09 22:36:121038parcourir

How Can I Monitor Variable Access and Memory Reads/Writes in GDB Using Breakpoints?

Surveillance de l'accès aux variables dans GDB : points d'arrêt sur « l'accès à la mémoire »

Dans GDB, vous pouvez définir des points d'arrêt pour surveiller des variables spécifiques et identifier quand elles sont consultées ou modifiées. Voici un aperçu des commandes et techniques GDB à cet effet :

Commandes Watchpoint :

  • watch : interruptions sur les écritures de variables
  • rwatch : Pauses sur variable reads
  • awatch : interruptions des lectures/écritures de variables

Définition de points de surveillance sur des emplacements mémoire :

Vous pouvez définir des points de surveillance sur des emplacements de mémoire à l'aide de la commande rwatch :

gdb$ rwatch *0xfeedface

Cela déclenchera un point d'arrêt chaque fois que l'adresse mémoire 0xfeedface est lue.

Limitations des points de surveillance sur les expressions :

Notez que les points de surveillance GDB ne peuvent pas être définis sur des expressions impliquant des variables :

gdb$ rwatch $ebx+0xec1a04f
Expression cannot be implemented with read/access watchpoint.

Pour contourner ce problème, développez manuellement le expression :

gdb$ print $ebx
 = 0x135700
gdb$ rwatch *0x135700+0xec1a04f

Support matériel ou logiciel :

Les points de surveillance matériels offrent des performances plus rapides que les points de surveillance logiciels. Pour vérifier si votre système d'exploitation prend en charge les points de surveillance matériels, exécutez la commande suivante :

gdb$ show can-use-hw-watchpoints

Si la sortie est 1, les points de surveillance matériels sont disponibles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn