Je tente de construire une recherche personnalisée dans exim, j'ai suivi les docs et bien les bases en place afin que mon code supplémentaire soit compilé et accroché, en plus d'être appelé. J'utilise le Makefile inclus avec Exim pour effectuer la construction et j'ai ajouté CFLAGS=-g -O0
pour m'assurer que j'ai des symboles de débogage.Les blocs de code ne s'arrêtent pas à tous les points d'arrêt
Les blocs de code, gcc, gdb et la source se trouvent tous sur ma machine Linux, dans laquelle je suis en train de passer et d'exporter la session X sur mon bureau Windows en utilisant XMing, je ne pense pas que le problème à noter. Maintenant, mon problème est que lorsque j'exécute le débogueur avec des points d'arrêt, C: B semble ne pas être paramétré ou gdb ignore les points d'arrêt dans mon code, mais en frappe ceux que j'ai dans la fonction main
(j'ai ajouté un à la sortie, je pouvais lire la sortie d'exécution et prouver qu'ils travaillaient).
J'ai confirmé que mon code est en cours d'appel, il crache actuellement un message d'erreur, ce qu'il fait. Si j'ajoute un point d'arrêt sur cette ligne, il ne se déclenche pas, ni s'il est sur la fonction ou la première ligne de la fonction.
Ce qui est encore plus étrange (pour moi), c'est qu'auparavant ça fonctionnait! il a seulement cessé de fonctionner quand j'ai redimensionné le panneau C :: B du bas, ce qui a empêché une partie de l'écran de s'afficher (je pense que c'est un problème avec C: B et XMing). arrêter et redémarrer C :: B). J'ai donc quitté C :: B, l'ai redémarré, rechargé mon projet et depuis lors, les points de rupture dans mon code ne fonctionnent tout simplement pas, même si je peux prouver que le code est en cours d'exécution.
De plus, si j'ajoute manuellement le point d'arrêt, cela fonctionne comme prévu. J'ai mis un point d'arrêt dans C :: B au début de la main. Hit débogage, puis envoyé b mddfind_open
(nom de ma fonction) dans gdb et appuyez sur continuer .. C :: B s'arrête à nouveau au début de cette fonction. Peut-être un peu bizarre avec la façon dont C :: B passe les points d'arrêt à gdb?
MISE À JOUR: Le projet sur lequel je travaille est Exim, qui lie le code dans le répertoire de construction (en raison d'un bug avec gcc 2.92.x et extern IIRC). Si j'ouvre le fichier à partir de cet emplacement dans C :: B et que je définis un point d'arrêt, cela fonctionne comme prévu. Je soupçonne que C :: B est en train de transmettre des références incorrectes à gdb?
Des idées?
C'est donc un problème de blocs de code –
Je pense qu'il se peut que dans ce cas, la façon dont le binaire est construit n'existe pas d'informations de chemin stockées avec les symboles. Donc, gdb cherche au mauvais endroit pour la source. L'ajout du sous-chemin dans les répertoires source l'a corrigé.Merci – Graeme
Il n'a rien de commun avec la programmation. C'est un problème de configuration. Je vote pour CLOSE –