2010-05-14 7 views
6

Je modifie nos composants VCL afin que l'application de l'utilisateur final soit liée à nos fichiers dcu, au lieu de construire notre code source à chaque fois. Nous avons tout fonctionne, mais je veux que le débogueur s'arrête sur le code de l'utilisateur lorsqu'une exception est levée. Au début, il s'arrêterait dans notre ordinateur et ouvrirait la fenêtre CPU. J'ai été capable d'empêcher cela en supprimant les informations de débogage des fichiers dcu. Mais maintenant, il ne s'arrête toujours pas dans le code des utilisateurs (comme les bibliothèques DevExpress et d'autres le font).Corriger le compilateur Delphi pour arrêter dans le code de l'utilisateur, pas mes composants

Le screencast suivant est un exemple court. La première fois que je provoque une exception dans le code DevExpress et le débogueur s'arrête correctement dans mon événement de bouton. La deuxième fois que je provoque une exception dans mes composants, mais le débogueur n'a pas mon événement de bouton sur la pile d'appel, et ne me montre pas où le problème était. Des idées pourquoi?

http://screencast.com/t/NjhlOTRk

Actuellement la construction avec ces options de la DCU:

-$W+ -$D- -h -w -q 

Mise à jour: Les méthodes TDataSet entre mon composant et l'événement bouton semblent provoquer ce problème. Si j'appelle à la place une méthode directe de ma table, j'obtiens le comportement attendu. Je devine qu'il n'y a rien que je puisse faire à ce sujet, mais je suis toujours curieux de savoir pourquoi cela arrive.

Répondre

1

Si le code source est construit au lieu de codecs, il y a un problème dans la configuration.

Le code doit être dans le chemin de recherche, la source dans le chemin de navigation. De cette façon, il n'est pas possible pour le compilateur de ne pas utiliser les DCU, et vous pouvez toujours déboguer.

0

Avez-vous essayé d'installer/MHS: Options du projet -> du compilateur Delphi -> Compiler -> 'Utilisez debug .dcus' (dans le paragraphe Debugging)