2009-04-18 7 views
3

L'idée est que donné une entrée spécifique au programme, d'une manière ou d'une autre, je veux automatiquement entrer dans le programme complet et vider son flux de contrôle avec toutes les données utilisées comme classes et leurs variables. Est-ce leur moyen simple de faire cela? Ou cela peut-il être fait par un script sur gdb ou nécessite-t-il une modification dans gdb?Imprimer flux de contrôle complet à travers gdb y compris les valeurs des variables

Ok la raison de cette question est due à une idée concernant un outil de débogage. Qu'est-ce qu'il fait est-ce. Étant donné deux entrées différentes dans un programme, l'une provoquant une sortie incorrecte et l'autre une sortie correcte, elle indiquera quelle partie du flux de contrôle diffère pour elles.

Donc, ce que je pense sera nécessaire est une décharge complète de ces 2 flux de contrôle entrant dans un moteur de diff. Et si les deux entrées suivent des flux de contrôle similaires, leur diff (dans de nombreux cas) donnera une bonne idée de la raison pour laquelle le bug existe.

Ceci peut être transformé en un outil très attrayant avec de nombreuses fonctionnalités qui s'ajoutent à cela. Parlez-nous un peu plus de l'environnement.

+1

Pourquoi voulez-vous faire cela? Les outils d'analyse statique tels que valgrind/Coverity peuvent être mieux adaptés à vos besoins. –

+0

Lignes source uniquement: http://stackoverflow.com/questions/764382/automate-tracing-in-gdb, appels de fonctions: http://stackoverflow.com/questions/311948/make-gdb-print-control-flow- de-fonctions-comme-elles-sont-appelées? lq = 1 –

Répondre

2

dtrace, par exemple, fera un travail merveilleux dans Solaris ou Leopard. gprof est une autre possibilité.

Une version Bumpo de ce qui pourrait être fait avec oui (1) ou attendre (1).

Si vous voulez avoir envie, GDB can be scripted with Python dans certaines versions.

1

Ce que vous décrivez ressemble un peu à "la mise au point de point de trace" de GDB. Voir l'aide interne de gdb "help tracepoint". Vous pouvez aussi voir un livre blanc ici: http://sourceware.org/gdb/talks/esc-west-1999/

Malheureusement, cette fonctionnalité est actuellement mis en œuvre pour ne pas le débogage natif, mais je crois que CodeSourcery fait un travail là-dessus.

Questions connexes