dans le code de débogage de gdb Code C ++: J'ai 15 points d'arrêt définis stratégiquement, mais je ne veux pas qu'aucun d'entre eux s'active jusqu'à ce que j'ai frappé le point d'arrêt n ° 2. Y a-t-il une commande de point de rupture-gun-jusqu'à la commande n em> dans gdb? P>
Je me trouve faire l'une des deux choses à la place: p>
Supprimez tous les autres points d'arrêt afin que le n ° 2 soit tout ce qui existe, exécutez, ajoutez tous les points d'arrêt; ou p> li>
exécuté et à plusieurs reprises Je veux quelque chose comme
Continuer code> Passé toutes les pauses jusqu'à ce que je vois la première pause à # 2. p> li>
ol>
exécuté jusqu'à 2 code> qui ignorera tous les autres points d'arrêt sauf # 2, mais ne les supprimera pas. Est-ce qu'il existe? Est-ce que quelqu'un d'autre a une meilleure façon de traiter cela? P>
4 Réponses :
Un peu moins douloureux que la suppression de tous les autres points d'arrêt serait de désactiver code>. De cette façon, vous n'avez pas à retentir toutes les choses associées au point d'arrêt pour le ramener, juste
activer code> à nouveau par numéro. P>
avec gdb code> Les points d'arrêt peuvent être désactivés au lieu de supprimer. Ensuite, tout ce que vous avez à faire est de les réynobilier en cas de besoin. P>
Vous pouvez Je suppose que lorsque vous mentionnez un breakpoint # 2 em> Vous parlez de la numérotation de la GDB des points d'arrêt. Voici un exemple simple Session GDB: P> activer code> et
désactiver code> points d'arrêt, et ces commandes accepteront une gamme em>. Utilisez ces commandes, avec une gamme, à des points stratégiques lors de l'exécution du programme.
(gdb) disable 1 4 6-7
(gdb) info breakpoints
Num Type Disp Enb Address What
1 breakpoint keep n 0x00001ddb in main at example.c:34
2 breakpoint keep y 0x00001e00 in main at example.c:39
3 breakpoint keep y 0x00001e15 in main at example.c:40
4 breakpoint keep n 0x00001e4f in main at example.c:43
5 breakpoint keep y 0x00001e4f in main at example.c:44
6 breakpoint keep n 0x00001e5e in main at example.c:45
7 breakpoint keep n 0x00001e5e in main at example.c:46
Merci PB2Q, je ne savais pas sur l'activation et la désactivation.
à partir de la version 7.0 GDB prend en charge les scripts Python. J'ai écrit un script simple qui désactivera temporairement tous les points d'arrêt activés, à l'exception de celui avec un numéro spécifié et exécutez la commande gdb Ajoutez le code suivant au fichier exécuter code>.
.gdbinit code>. : p>
Génial, c'est très utile (et piratable). Merci Alex!
C'est bien. Un Continuer - jusqu'à ce que la version code> serait probablement plus utile.