2012-02-01 1 views
3

Je souhaite placer un point d'arrêt sur toutes les fonctions d'un fichier. Je suis tombé sur ce lien: http://sourceware.org/gdb/download/onlinedocs/gdb/Set-Breaks.html#Set-Breaksmettre le point d'arrêt dans un fichier en utilisant "rbreak filename.c :." ne fonctionne pas

Il suggère l'utilisation de la commande rbreak à cet effet. Quand j'utilise "rbreak". , ça marche bien comme prévu et met le breakpoint dans toutes les fonctions d'un prog. Mais quand est-il

rbreak filename.c :.

Cela ne fonctionne pas du tout et aucun point d'arrêt n'est placé n'importe où. J'ai même essayé une variation de cet espace autour de:, mais même cela ne fonctionne pas.

Une idée sur la façon dont cela peut être fait? Est-ce possible? Toute aide sera grandement appréciée.

grâce, Vikas

+1

double possible de [Utiliser gdb arrêter le programme quand il utilise une fonction de fichier X] (http://stackoverflow.com/questions/475283/using-gdb-stop-the-program-when-it-is-using-any-function-from-file-x) –

+1

assurez-vous que votre version 'gdb' est à jour. La commande 'rbreak filename.c: .' fonctionne pour moi dans * gdb 7.6 * – Sebastian

Répondre

-1

RBREAK filename.c :.

Cela n'est pas supposé fonctionner. A partir du document lié à:

rbreak regex 
Set breakpoints on all *functions* matching the regular expression regex. 

Ceci est différent de endroits, où filename.c:... est destiné à être utilisé.

Je souhaite placer un point d'arrêt sur toutes les fonctions d'un fichier.

Ceci est une demande inhabituelle. Dans mes nombreuses années de débogage, je n'ai jamais eu besoin de faire ça.

Vous devrez préparer une liste et définir les points d'arrêt individuellement. Une recette pour ce faire peut être trouvée here.

+1

' rbreak filename.c: .' fonctionne pour moi sur un gdb 7.6 * récent. Cela ne fonctionne pas dans * gdb 7.2 *. Votre recette liée fonctionne également. Merci. – Sebastian

+2

Merci pour la réponse - juste pour noter la "demande inhabituelle"; peut-être vouloir OP veut est le graphe d'appel pendant l'exécution, qui (je suppose) serait mieux servi avec des points de trace (qui, cependant, nécessitent 'gdbserver'); Cependant, j'ai moi-même souvent oublié le nom des «points de trace», et puis je commence à chercher «définir le point d'arrêt à chaque fonction», et finir à des pages comme celle-ci ':)' Cheers! – sdaau

0

rbreak filename.cpp:.* fonctionne très bien pour moi.

Notez que pour mettre point d'arrêt dans un fichier que vous devez compiler le programme avec les informations de débogage, par exemple

g++ -g filename.cpp 
Questions connexes