les points d'arrêt dans GDB
Je pense que cela a été posée tout à l'heure mais je ne peux pas en trouver un qui satisfait mes exigences.
Je suis de débogage(enfait essayer de comprendre) un grand projet en essayant d'analyser le flux de code dans différents des tests. Mais quand j'ai essayer de mettre des points d'arrêt à certains fichiers, j'obtiens le message d'erreur "pas de source fichier nommé filename trouvé".
Donc ma question est:
- Gdb peut seulement accepter des points d'arrêt pour les fichiers source où le flux de code entre.?
- Puis-je définir des points d'arrêt sur l'ensemble des lignes d'un fichier avec quelque chose comme
b filename:*
- Sera un point d'arrêt au fichier d'en-tête être accepté en tant que fichiers d'en-tête sont simplement ajoutés au moment de la compilation?
De toutes les suggestions sont plus que bienvenus.
Modifier
J'ai vérifié ces questions avec certains hello world code et trouvé les mêmes résultats comme le souligne l'un de ses réponses.mais ma question dans le projet de reste sur. J'obtiens toujours la même erreur, même quand je peux voir le fichier de sortie de la même ligne qui n'est pas acceptée comme un point d'arrêt.
Edit 2
Je l'ai eu à travailler, mais ne comprends pas comment et pourquoi il fonctionne..??
(gdb) b /home/neeraj/BTP/trunk/include/header.h:872
No source file named /home/neeraj/BTP/trunk/include/header.h:872
Make breakpoint pending on future shared library load? (y or [n]) n
(gdb) b /home/neeraj/BTP/trunk/src/driver.cpp:2
Breakpoint 1 at 0x806c61a: file ../../../trunk/src/driver.cpp, line 2.
(gdb) b /home/neeraj/BTP/trunk/include/header.h:872
Breakpoint 2 at 0x8052fa0: file ../../../trunk/include/header.h:872, line 872.
(gdb)
Toute une compréhension plus profonde..?
- Méfiez-vous des bibliothèques partagées. Vous pouvez essayer le réglage de vos points d'arrêt après toutes les bibliothèques partagées sont chargés. Pour le cas le plus fréquent: placer un point d'arrêt sur la main, exécuter le programme, puis (une fois en main) ensemble de vos points d'arrêt.
- merci de votre commentaire inspiré mon succès d'essai et d'erreur de l'effort.. 😛
Vous devez vous connecter pour publier un commentaire.
L'autre chose à garder de en plus de bibliothèques partagées est que
gdb
noms de fichier source sont relatifs au répertoire où le code a été compilé. Si vous n'avez pas compilé avec des chemins absolus, utilisez ledir
commande pour ajouter le répertoire de compilation de la liste des lieuxgdb
des recherches de code source.Et un indice: je trouve que je suis follement plus productif lorsque j'utilise le Data Display Debugger (DDD) interface graphique pour
gdb
.Assurez-vous de compiler avec g (debug) option. Assurez-vous que le sourcepaths sont correctement définies. Utilisation du répertoire, afficher les répertoires et les commandes dir pour voir/set.