140 votes

Obtenir le gdb pour enregistrer une liste de points d’arrêt ?

OK, info pause énumère les points d'arrêt, mais pas dans un format qui fonctionne bien avec les réutiliser à l'aide de l' --commande comme dans cette question. Ne gdb avoir une méthode pour les déverser dans un fichier acceptable pour l'entrée à nouveau? Parfois, dans une session de débogage, il est nécessaire de redémarrer gdb après la construction d'un ensemble de points d'arrêt pour les tests.

Edit: le .gdbinit fichier a le même problème que --commande. L'info commande break ne fait pas de liste des commandes, mais plutôt d'une table pour la consommation humaine.

D'élaborer, en voici un échantillon, de l'info:pause

(gdb) info pause
Num Type Disp Enb L'Adresse De Ce
1 point d'arrêt garder y 0x08048517 <foo::bar(void)+7>

222voto

aculich Points 4563

À partir de gdb 7.2 vous pouvez maintenant utiliser la sauvegarde commande des points d’arrêt.

27voto

Cette réponse est obsolète, gdb prend désormais en charge l'enregistrement direct. Voir cette réponse.

Vous pouvez utiliser la journalisation:

(gdb) b main
Breakpoint 1 at 0x8049329
(gdb) info break
Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0x08049329 <main+16>
(gdb) set logging file breaks.txt
(gdb) set logging on
Copying output to breaks.txt.
(gdb) info break
Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0x08049329 <main+16>
(gdb) q

Le fichier breaks.txt contient maintenant:

Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0x08049329 <main+16>

L'écriture d'un script awk qui transforme le tout dans un format utile pour l' .gdbinit ou --command le fichier est facile. Ou vous pouvez même faire le script émettent séparé --eval-commands'à la commande gdb ligne...

L'ajout de cette petite macro .gdbinit vous aidera à le faire:

# call with dump_breaks file.txt
define dump_breaks
    set logging file $arg0
    set logging redirect on
    set logging on
    info breakpoints
    set logging off
    set logging redirect off
end

11voto

Paul Beckingham Points 7460

Placez vos commandes de gdb et points d’arrêt dans un fichier de .gdbinit, tout comme vous pouvez les taper à la BDG > invite et gdb automatiquement charger et exécuter au démarrage. Il s’agit d’un fichier par répertoire, donc vous pouvez avoir des fichiers différents pour différents projets.

9voto

Dan Berindei Points 2326

Une extension est anon extension à la réponse de Johannes :

Avec vous pouvez ensuite restaurer les points d’arrêt enregistrés avec .

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