Évaluation:
Dans .NET «la fonction d'évaluation (funceval) » est la capacité du CLR à injecter un peu arbitraire appel alors que le debuggee est arrêté quelque part. Funceval prend en charge le thread choisi par le débogueur pour exécuter la méthode demandée. Une fois que funceval a fini, il déclenche un événement de débogage. Techniquement, CLR a défini des moyens pour que le débogueur émette un code funceval. CLR permet d'initier le funceval uniquement sur les threads qui sont au point GC safe (c'est-à-dire quand le thread ne bloque pas GC) et au point Funceval Safe (FESafe) (où CLR peut réellement faire le détournement du funceval). ensemble. Ainsi, les scénarios possibles pour CLR, un fil doit être:
arrêté en code managé (et à un point sûr GC): Cela implique que nous ne pouvons pas faire un funceval en code natif. Depuis, le code natif est hors du contrôle du CLR, il est incapable de configurer le funceval.
arrêté à une exception gérée de première chance ou non gérée (et à un point de sécurité GC): c'est-à-dire, au moment de l'exception, d'inspecter autant que possible pour déterminer pourquoi cette exception s'est produite. (Par exemple: débogueur peut essayer d'évaluer et de voir la propriété du message en cas d'exception soulevée.)
Dans l'ensemble, les moyens communs pour arrêter dans le code managé comprennent l'arrêt à un point d'arrêt, étape, appel Debugger.Break, intercepter une exception ou au début d'un thread. Cela aide à évaluer la méthode et les expressions. Selon l'évaluation, si le thread n'est pas à un point FESafe et GCSafe, CLR ne pourra pas détourner le thread pour déclencher le funceval.En général, à la suite permet de se assurer funceval se déclenche lorsque prévu:
Étape # 1:
Assurez-vous que vous n'êtes pas essayer de déboguer un « Release » build. Release est entièrement optimisé et conduira ainsi à l'erreur dans la discussion. En utilisant la barre d'outils Standard ou le Gestionnaire de configuration, vous pouvez basculer entre Déboguer & Release.
Étape # 2:
Si vous obtenez toujours l'erreur, l'option de débogage peut être définie pour l'optimisation. Vérifiez & décochez la case « Optimiser le code » propriété sous projet « Propriétés »:
clic droit sur le projet Sélectionnez l'option « Propriétés » Aller à l'onglet « Build » Décochez la case à cocher « Optimiser le code »
Étape # 3:
Si l'erreur persiste, le mode Info de débogage est peut-être incorrect. définir Vérifier & à « complet » sous « Avancé paramètres de construction »:
clic droit sur le projet Sélectionnez l'option « Propriétés » Allez à l'onglet « Build » Cliquez sur le bouton « Avancé » Set « Info Debug » comme « complète »
Étape # 4:
Si vous faites face à toujours le problème, essayez ce qui suit:
Faites un « Clean » & alors un « Reconstruire » de votre solution f ile Pendant le débogage: Allez dans la fenêtre des modules (VS Menu -> Déboguer -> Windows -> Modules) Trouvez votre assembly dans la liste des modules chargés. Vérifiez le chemin indiqué contre l'ensemble chargé est ce que vous attendez qu'il soit Vérifiez la Timestamp modification du fichier pour confirmer que l'assemblée a été effectivement reconstruit Vérifiez si oui ou non le module chargé est optimisé ou non
Conclusion:
Ce n'est pas une erreur, mais une information basée sur certains paramètres et conçue selon le fonctionnement de .NET Runtime.
Avez-vous trouvé une solution de contournement pour ce problème? –
Je ne crois pas que la réponse choisie soit utile. Lorsque vous avez une chance, vérifiez la réponse laissée quelques mois plus tard par "Personne". Cela aidera ceux qui cherchent à résoudre votre question initiale. – Catskul
Je déboguais en mode Release (rougir). La réponse de Lamar m'a fait vérifier. – mayu