11
votes

GDB: courir jusqu'à ce que le point d'arrêt spécifique

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 dans gdb?

Je me trouve faire l'une des deux choses à la place:

  1. 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

  2. exécuté et à plusieurs reprises Continuer Passé toutes les pauses jusqu'à ce que je vois la première pause à # 2.

    Je veux quelque chose comme exécuté jusqu'à 2 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?


0 commentaires

4 Réponses :


3
votes

Un peu moins douloureux que la suppression de tous les autres points d'arrêt serait de désactiver . De cette façon, vous n'avez pas à retentir toutes les choses associées au point d'arrêt pour le ramener, juste activer à nouveau par numéro.


0 commentaires

2
votes

avec gdb 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.


0 commentaires

11
votes

Vous pouvez 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.

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>

(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


1 commentaires

Merci PB2Q, je ne savais pas sur l'activation et la désactivation.



11
votes

à 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 exécuter .

Ajoutez le code suivant au fichier .gdbinit . : xxx


2 commentaires

Génial, c'est très utile (et piratable). Merci Alex!


C'est bien. Un Continuer - jusqu'à ce que la version serait probablement plus utile.