Delphi: Pourquoi «utiliser les DCU de débogage» devient-il inefficace si j'utilise des packages dans mon projet?

StackOverflow https://stackoverflow.com/questions/257711

  •  06-07-2019
  •  | 
  •  

Question

Je construis un projet qui utilise le système de plug-in JVCL, qui repose sur les packages Delphi, et depuis que je l'ai ajouté à mon projet, le débogage est devenu un cauchemar, car je ne suis plus en mesure de tracer source de toutes les unités VCL ou RTL. Ils sont tous marqués comme des points gris dans le débogueur (lorsque les fonctions correspondantes apparaissent dans la pile d'appels; parfois, j'obtiens des résultats très étranges) et cela me rend fou. Est-ce que quelqu'un sait comment récupérer les fonctionnalités de mon DCU de débogage? (Mis à part l'évidence: extraire tout le code lié au plugin. Cela fonctionnerait , mais cela ne serait pas vraiment utile.)

Edit: Pour que tout soit bien clair, je peux retracer n'importe quoi d'autre dans mon projet. Code JVCL. Autres bibliothèques tierces. Mon propre code. Tout cela se passe bien dans le débogueur. Ce n’est pas le code Delphi RTL ni le code VCL, ce que l’option du compilateur "utilise les DCU de débogage". est censé vous donner accès à.

Était-ce utile?

La solution

Cela fonctionne comme prévu.

Lorsque vous compilez avec des packages, vous exécutez le code de package et n'utilisez aucune DCU. Par conséquent, les DCU sont compilées et vous n’avez pas accès aux Debug DCU.

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

Autres conseils

Les packages ne sont que des DLL. Vous devez inclure les informations de débogage dans celles-ci pour pouvoir les déboguer, ce que vous voulez faire. Il vous faut donc des packages DEBUG pour la VCL et la RTL, et non un débogage de DCU. Les fichiers de débogage ne sont même plus nécessaires lorsque vous utilisez des packages pré-construits.

Il se peut que les unités DCU dont vous disposez soient obsolètes, de sorte que le débogueur n'interfère pas dans le code.

Généralement, la suppression de tous les DCU, puis la création de tous les correctifs résoudra ce problème.

Vous devrez peut-être aussi supprimer les DCU dans le chemin de recherche, juste pour être sûr. Faites une sauvegarde d'abord bien sûr ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top