web-dev-qa-db-fra.com

Aucun fichier source nommé main.c. paramètre de point d'arrêt gdb

J'utilise gdb pour déboguer le code source du projet C. Je compile comme indiqué:

./configure --enable-debug CFLAGS="-g -o0" 
make --debug=a

Je veux que le débogage s'arrête sur un fichier spécifique. Donc, quand je fixe le point d'arrêt en utilisant

(gdb) break main.c:672

Ça dit:

No source file named main.c.

Même lorsque je passe un nom de fonction spécifique (dans le fichier main.c) à casser. il dit: une telle fonction n'est pas définie.

Mon répertoire actuel contient ce fichier main.c. J'utilise Cygwin sur Windows. Quand je fixe un point d'arrêt en utilisant

(gdb) break main

Il a défini le point d'arrêt à une fonction principale du fichier Cygwin, pas dans mon code source.

  1. comment puis-je résoudre mon premier problème?

  2. juste curieux, comment éviter le deuxième problème, s'il y a le même nom de fonction dans les fichiers Cygwin et mon code source?

16
arslan

Si vous compilez avec -g Et que vous ne parvenez toujours pas à définir un point d'arrêt, essayez d'ajouter raise(SIGTRAP) dans votre main(), exécutez le processus dans gdb, puis définissez le point d'arrêt vous voulez à nouveau après avoir frappé le SIGTRAP.

2
wilywampa

Lorsque vous compilez votre .c fichier, assurez-vous d'utiliser:

gcc filename.c -g 

gdb <binary name>

Recherche de symboles de débogage de charge effectuée ou non?

Si non:

gdb) symbol-file <path-of-symbol-file>

vous pouvez trouver le fichier de symboles dans le répertoire obj

8
Sohil Omer

J'ai également rencontré un problème similaire plus tôt. Je viens de supprimer le dossier . Metadata et j'ai à nouveau importé le projet particulier et cela fonctionne bien.

3
Kulwant Bhambra

Crucial est le paramètre gcc -g pendant la compilation.

Tout le reste est secondaire.

Voir points d'arrêt dans GDB

3
dyomas

Chaque fois que vous devez utiliser GDB, tapez ce qui suit en ligne de commande

gcc -g -o outputfile sourcefile.c

Tapez maintenant

gdb -tui outputfile

puis entrez la commande de pause

1
user2430771