10
votes

Prendre la méthode sans symboles - comment entrer?

Utilisation de Visual Studio 2008 SP1 et d'un projet VB.NET; J'ai du code que je ne peux pas entrer dans. La fenêtre immédiate indique le message "Prendre la méthode sans symboles" Certains espèces. "

Comment puis-je m'assurer que la méthode a toujours des symboles ?! Je dois entrer dans chaque ligne de code. Je suis pressant F8 (qui est "pas dans" dans VS2008, de la mémoire, je pense que la F11 dans VS2005).

Ce truc de débogueur m'a toujours confondu: Dans les pages de propriétés de niveau de la solution, je vois une liste déroulante de configuration avec 4 valeurs: active (débogage), débogage, version, toutes les configurations. - actuellement défini sur "actif (débogage)" Au niveau du projet, je vois une liste déroulante de configuration avec 2 valeurs: Déboguer, libération. - Actuellement réglé sur "débogage"


0 commentaires

3 Réponses :


0
votes

Si l'espace de noms en question est une DLL tiers qui n'était pas venue avec les symboles (fichier PDB), cela se produira. Afin de "entrer" le fichier de symboles est nécessaire.

Si c'est votre propre code, vous devez simplement vérifier que vos fichiers de symbole existent. L'avoir défini pour déboguer au niveau du projet devrait le faire.


1 commentaires

Oui, c'est mon propre code et je l'ai mis à "actif (débogage)" au niveau du projet (ainsi que le niveau de la solution, comme décrit dans ma question initiale). Je peux voir les fichiers .pdb, en fait, je les ai supprimés manuellement et recompanté à nouveau afin qu'ils soient produits à nouveau. Je m'attends à la méthode FRM.Show () et FRM.FOCUS () pour entrer dans l'événement FRM_ACTIVÉE, car j'appuie F8, mais cela ne se produit pas. Je dois mettre un point de rupture manuellement dans cet événement.



22
votes

Je sais que c'est une vieille question, mais utilisez-vous peut-être une fonctionnalité de rendement dans une méthode qui renvoie un iNeumable?

Par exemple (artifulisé): xxx

Je rencontre souvent dans cela dans mes tests de mon unité, mais en raison de l'évaluation paresseuse, les déclarations de rendement ne traitent que nécessaire . Une façon de forcer l'énumération consiste à mener à bien un .tolist () à la déclaration d'appel, par exemple, bien que vous ne voudriez pas le faire de manière permanente à moins que l'appel soit peut-être un test pour certaines fonctionnalités où l'énumération elle-même n'est pas importante. < / p>

que ce qui suit devrait entraîner une énumération: xxx

en bref, si vous appelez une méthode nécessitant une énumération, mais jamais énumérer le résultat , vous obtiendrez cette erreur dans la sortie. Cela pourrait également se produire avec des déclarations Linq, comme. Sélectionnez.

Edit: N'a pas remarqué qu'il s'agissait d'un projet VB.NET, mais je suis sûr que le principe est toujours debout.


0 commentaires

4
votes

J'ai couru dans le même problème exact dans Visual Studio 2010. Je tenterais d'entrer dans la source de Framework .NET, Visual Studio passerait dessus, la fenêtre de sortie dirait qu'elle ne pouvait pas entrer car le fichier de symboles n'a pas été 't chargé mais quand j'ai examiné la fenêtre des modules, je verrais que le fichier de symboles pertinent était en fait chargé.

Le problème était que le fichier de symbole .NET a été chargé mais ce n'était pas le fichier de symbole .NET avec les informations source incluses. Serveur de symboles publics de Microsoft à http://referencesource.microsoft.com/symbols contient des symboles avec des informations source incluses. Serveur de symboles publics de Microsoft à http://msdl.microsoft.com/download/symbols contient des symboles sans informations source.

Une solution consiste à vous définir correctement _nt_symbol_path correctement afin qu'il attrape .NET Framework symboles de http://referencesource.microsoft .com / symboles s'ils existent et de http://msdl.microsoft.com/download/ symboles sinon. Quelque chose comme ça fonctionnerait:

_nt_symbol_path = srv * d: \ symbolcache * http: //referencesource.microsoft.com/symbols; srv * d: \ symbolcache * http: //msdl.microsoft.com/download/symbols

Ce _nt_symbol_path obtiendra le débogueur pour chercher d'abord des symboles avec des informations source, puis s'il n'y en a pas, il n'aurai aucun symbole sans cela. Lorsque Visual Studio a un fichier de symbole avec les informations source, il est capable d'entrer dans ce code.


0 commentaires