2009-12-11 4 views
0

J'utilise VS.NET pour attacher à un processus, le processus a beaucoup de DLL chargé, j'ai construit l'un de la DLL et essayer de définir un point d'arrêt dans ma DLL. Je clique sur "New Breakpoint" et tapez mon nom de fonction Func_A et coché la case "Utiliser Intellisense pour vérifier". Ensuite, je clique sur OK mais le VS.net se plaint qu'il ne peut pas trouver la fonction. Lorsque le processus est attaché, j'ai vérifié la sortie de VS.NET, il n'avait pas un message "ne peut pas charger le symbole" derrière ma ligne DLL, donc je pense qu'il a localisé avec succès mon fichier PDB. Je ne sais pas pourquoi je ne peux pas définir le point de rupture.utiliser VS.NET pour déboguer l'application

Mon projet est un projet géré par C#. Notez que pour toutes les DLL, certaines ont des informations de débogage, d'autres non, mais je crois que VS.Net a identifié mes informations de débogage.

S'il vous plaît suggérer d'autres façons d'essayer ...

Une autre question est est-il un outil pour voir les fonctions qui peuvent définir un point d'arrêt dans le fichier DLL d'assemblage?

Répondre

1

Si vous voyez beaucoup de DLL chargées alors il est probable que vous exécutez le débogueur en mode natif. C'est une option dans la boîte de dialogue Outils + Attacher au processus, assurez-vous de sélectionner Géré. De loin, le moyen le plus simple d'éviter ce type de problème est de charger le fichier de code source et de définir le point d'arrêt en cliquant dans la barre de gauche de la fenêtre de l'éditeur. En outre, n'utilisez pas Attach to Process. Utilisez Projet + Propriétés, onglet Déboguer, sélectionnez "Démarrer le programme externe" et sélectionnez le fichier .exe qui charge votre assembly. Vous pouvez maintenant commencer le débogage en appuyant simplement sur F5. Attention, cette option n'est pas disponible dans l'édition Express.

1

pourrait faire avec quelques détails vraiment, mais voilà ...

Avez-vous la source de la DLL? Si c'est le cas, il suffit d'ouvrir le code et d'ajouter le point d'arrêt où vous voulez. Si vous ne le faites pas, vous dépendez plutôt d'Intellisense, ce qui n'est pas toujours fiable, surtout si des assemblys C++ gérés sont impliqués. Pour vous aider, vous pouvez regarder les DLL en utilisant Reflector pour obtenir le nom complet de la fonction namespaced et l'essayer, en ignorant Intellisense. L'utilisation d'un réflecteur vous permettra également de voir si la DLL est obfusquée (si elle est tierce)

J'espère que cela vous donnera de nouvelles idées sur la façon de l'aborder.

K

Questions connexes