2008-11-03 5 views
2

Je construis un projet qui utilise le système de plugin JVCL, qui repose sur des paquets Delphi, et depuis que je l'ai ajouté à mon projet, le débogage est devenu un cauchemar parce que je ne suis plus capable de tracer dans la source de toutes les unités VCL ou RTL. Ils sont tous marqués comme des points gris dans le débogueur (quand les fonctions correspondantes apparaissent dans la pile des appels, parfois je reçois des résultats très étranges) et ça me rend fou. Est-ce que quelqu'un sait comment récupérer la fonctionnalité DCU de débogage? (Mis à part l'évidence: déchirer tout le code lié au plugin.Ce serait travail, mais il ne serait pas vraiment aider.)Delphi: Pourquoi "utiliser les DCU de débogage" devient-il inefficace si j'utilise des paquets dans mon projet?

Edit: Pour être clair, je peux tracer toute autre chose dans mon projet. Code JVCL. Autres bibliothèques tierces Mon propre code. Tout cela se montre très bien dans le débogueur. Juste pas le code Delphi RTL et VCL - le truc que l'option du compilateur "utilise les debug DCU" est censé vous accorder l'accès.

Répondre

7

Cela fonctionne comme prévu. Lorsque vous construisez avec des paquets, vous exécutez le code du paquet, et n'utilisez pas de DCU. Par conséquent, les DCU sont compilés, et vous n'avez pas accès aux DCU Debug.

Vous pouvez désactiver complètement les packages ou ne pas compiler avec les packages spécifiques que vous souhaitez déboguer. Vous pouvez choisir quels paquets doivent être utilisés ou non, et ceux qui ne sont pas utilisés seront "débuggables" avec les DCU Debug.

+2

C'est dommage quand même. Parce que parfois les applications dépendent de l'utilisation de paquets d'exécution (structures de plugin). –

+0

J'ai essayé de supprimer "VCL" "VCLX" et "RTL" de la liste "build with packages". Ça n'a pas marché. La désactivation de "construire avec des paquets" ne se fait pas non plus entièrement. –

+0

Désactiver "construire avec des paquets" devrait fonctionner. Assurez-vous que vous effectuez une reconstruction complète et activez Utiliser les DCU de débogage. Cela ne fonctionne bien sûr pas si vous utilisez toujours des paquets d'exécution d'une autre manière (en chargeant dynamiquement les packeges). –

-1

Il se peut que les unités DCU soient obsolètes, ce qui empêche le débogueur d'entrer dans le code.

La suppression de toutes les unités DCU, puis la création de tous les éléments permet de résoudre ce problème.

Il se peut que vous deviez également supprimer des unités DCU dans le chemin de recherche, juste pour être sûr. Faites d'abord une sauvegarde ...

+0

Ce ne sont pas mes propres DCU qui me posent problème. Ils fonctionnent très bien. Ce sont seulement les composants du système - les composants RTL et VCL - qui me posent problème, et je ne peux que supposer que piquer ces suppressions causerait encore plus de problèmes. –

2

Les paquets ne sont que des DLL. Vous devez inclure les informations de débogage dans ceux pour pouvoir les déboguer, ce que vous voulez faire. Vous aurez donc besoin de paquets DEBUG pour la VCL et RTL, pas de débogage de DCU. Les dcus de débogage ne sont même plus nécessaires lorsque vous utilisez des paquets précompilés.

+0

Très bien. Est-ce que ces paquets de débogage existent? Où les trouve-t-on? –

+0

Vous ne pouvez pas les trouver. Théoriquement, vous pourriez les construire vous-même pendant que vous avez tous (ou presque tous?) Du code source. –

Questions connexes