7
votes

Delphi: Comment exclure les unités du débogueur?

Parfois, car je débogage pas à pas, juste avant un événement de formesCreate ou juste après le débogueur de Fromdestroy, le débogueur commence à ouvrir des unités de DevExpress (CXContainer.Pas, ...) et donc avant de faire de la forme de forme-maque que mon "F8" me conduit à CXContainer au lieu d'entrer dans la ligne suivante de mon code.

(Ce n'est qu'un exemple, cela peut arriver, bien sûr avec n'importe quelle bibliothèque 3ème partie)

Comment savoir au débogueur "déboguer uniquement mes unités" (uniquement les fichiers PAS répertoriés dans le fichier DPR?)

Bien sûr, il est parfois utile de déboguer des bibliothèques, mais dans la plupart des cas, ce n'est pas le cas.


4 Réponses :


1
votes

Éteignez les informations de débogage dans les unités que vous ne voulez pas que le débogueur soit dans.


1 commentaires

Ajouté pour sauver les autres de regarder cela comme je l'ai juste fait: cela peut être fait avec {$ D-} compilateur directive dans les unités que vous ne voulez pas déboguer.



2
votes

Il n'y a qu'un seul moyen de dire au compilateur de ne pas déboguer une unité: compilez-la sans informations de débogage.

Si vous avez la source de vos bibliothèques, vous pouvez reconstruire leur colis après avoir désactivé l'option de compilateur "Inclure les informations de débogage" pour chaque package de la bibliothèque. Si vous avez de la chance, vos bibliothèques comprendront un fichier .Inc qui spécifie les options du compilateur dont elles ont besoin et qu'ils incluent dans chaque unité. Dans ce cas, tout ce que vous avez à faire est de modifier ce fichier Inc et de reconstruire tous les forfaits.

Si vous n'avez pas la source de vos bibliothèques, les fabricants de bibliothèques ont peut-être fourni deux séries de DCU: une compilée avec, l'autre sans informations de débogage. Dans ce cas, pointez simplement votre chemin de bibliothèque sur celui dont vous avez besoin.


0 commentaires

28
votes

Vous feriez mieux de suivre la Convention VCL pour vos composants tiers:

  • Modifiez le chemin de sortie DCU dans tous les paquets tiers dans un dossier différent du dossier que vous stockez les fichiers PAS.
  • Compilez chaque paquet une fois en mode de débogage et enregistrez les fichiers DCU générés dans un dossier (par exemple, Débug DCUS).
  • compilez à nouveau chaque paquet, mais cette fois en mode de libération et enregistrez les fichiers DCU générés dans un dossier (par exemple, DCUS).
  • Allez à Delphi Options et ajoutez un chemin de publication DCUS à "Path de bibliothèque".
  • dans les options DELPHI, ajoutez le chemin des fichiers source à "Path de navigation".
  • dans les options DELPHI, ajoutez un chemin de débogage DCUS à "PATH DEBUG DCU".

    De cette façon, Delphi ne verra que libérer DCU de ce composant tiers lorsque vous compilez votre projet, le débogueur ne peut donc pas entrer dans le code source. D'autre part, étant donné que le chemin source est inclus dans "Path de navigation", vous pouvez toujours naviguer vers le code source à l'intérieur de l'IDE par CTRL + cliquer sur le nom de l'unité ou quelque chose de défini dans ces unités.

    Si vous souhaitez déboguer des composants, vous pouvez aller à "Project | Options | Compiler de Delphi | Compiler" et activez "Utiliser le débogage .dcus". Cela obligera Compilateur à utiliser "Path de débogage DCU" au lieu de "Path de bibliothèque".

    VCL fonctionne de la même manière, généralement, vous n'entrez pas dans le code source VCL lorsque vous déboguez votre projet, mais si vous activez «Utiliser le débogage .dcus», vous pouvez également déboguer le code source VCL.

    JVCL organise également ses paquets et son code source de la même manière.

    EDIT : Si vous prenez cette approche et que vous souhaitez que la navigation de code (CTRL + click) fonctionne; Veuillez noter que lorsque vous compilez la version de version des packages, vous devez définir les informations de référence des symboles dans "Projet | Options | Compiler de Delphi | Compilation" à "Info de référence"; Sinon, ctrl + clic ne fonctionne pas pour ces unités. Par défaut, déverrouillage Build Configuration définit les informations de référence du symbole sur Aucun.


2 commentaires

+1 réponse très complète. Et j'ai appris un tour de connaissement. Avait vu le piste de débogage DCU, mais cela n'avait pas "cliqué" WRT comment le mettre à bon usage. Merci pour ça. Juste un inconvénient que je vois à cela: "Utilisez Debug DCU's" signifie maintenant que vous utiliserez Débog DCU pour toutes vos bibliothèques lorsque vous n'en avez souvent que celui que vous souhaitez déboguer. Dans ce cas, il est souvent plus faveur de changer le chemin de la bibliothèque pour pointer vers le dossier Débug DCU de cette bibliothèque ...


Vous pouvez vous attendre à un développeur à l'aide de Delphi depuis 10 ans pour le savoir, mais je ne l'ai pas fait.



3
votes

Une solution simple et rapide est la désactivation du commutateur de débogage ({$ D-}) pour toutes les bibliothèques utilisées. De nombreuses bibliothèques (y compris DevExpress) utilisent un fichier global incluent, généralement en haut de chaque fichier source ou juste au-dessus ou au-dessous de l'instruction "Unité" (par exemple, l'unité CXContainer; {$ i cxver.inc} interface). Ouvrez ce fichier incluant (cliquez dessus et appuyez sur Ctrl-Entrée) et ajoutez {$ D-} en haut et commencez tout autre {$ d +}.


0 commentaires