12
votes

Système.diagnostiques.debugger.debug () a cessé de travailler

Je travaille sur un programme qui utilise la méthode système.diagnostics.debugger.break () pour permettre à l'utilisateur de définir un point d'arrêt de la ligne de commande. Cela a bien fonctionné pendant plusieurs semaines maintenant. Cependant, lorsque je travaillais à la réparation d'un test de l'unité aujourd'hui, j'ai essayé d'utiliser le commutateur de débogage de la ligne de commande, et cela n'a pas fonctionné.

Voici ce que j'ai essayé:

  • J'ai confirmé que la méthode de débogage () est vraiment appelée (en mettant un système.Console.writeline () après elle)
  • J'ai confirmé que la construction est toujours à débogage
  • J'ai fait une construction propre
  • J'ai redémarré Studio de produit

    Une recherche rapide Google n'a rien révélé et la documentation de l'API pour .NET ne mentionne rien à propos de cette fonction ne fonctionne pas correctement. Alors ... des idées?


0 commentaires

4 Réponses :



23
votes

J'ai finalement compris ce qui se passait. Pour une raison quelconque, quelque chose changea sur ma machine afin que juste appeler débogger.break code> n'était plus suffisant (je ne comprends toujours pas ce qui a changé). Dans tous les cas, je peux maintenant causer le débogueur à utiliser en utilisant:

if (Debugger.IsAttached == false) Debugger.Launch();


3 commentaires

J'ai rencontré ce même problème de migration de Visual Studio 2008 à Visual Studio 2010. Debugger.Break () Travaillé bien dans VS2008; Pour VS2010, j'utilise maintenant débogger.launch () .


Idem dans vs2015 - débogueur.break () n'a pas fonctionné - Debugger.Launch () a travaillé


Fwiw et pour d'autres idiots comme moi, dans mon cas, c'était parce que le code que je courais n'était pas le code que je cherchais (code similaire, dossier différent ...)



2
votes

J'utilisais débogger.launch () méthode et il a cessé de fonctionner soudainement. En utilisant xxx

comme suggéré dans Cette réponse n'a également pas présenté le débogueur.

J'ai essayé de réinitialiser mes paramètres Visual Studio et cela fonctionnait!


0 commentaires

2
votes

extrait d'ici ( MSDN ) Note suivante:

À partir de .NET Framework 4, l'exécution n'exerce plus le contrôle serré du lancement du débogueur de la méthode Break , mais signale une erreur au sous-système Windows Erreur Reporting (WER). WER fournit de nombreux paramètres pour personnaliser l'expérience de rapport de problème, de sorte que de nombreux facteurs influenceront la manière dont WER répond à une erreur telle que la version, le processus, la session, l'utilisateur, la machine et le domaine. Si vous avez des résultats inattendus lorsque vous appelez la méthode Break , vérifiez les paramètres WER sur votre machine. Pour plus d'informations sur la personnalisation de WER, voir WER Paramètres . Si vous souhaitez vous assurer que le débogueur est lancé, quels que soient les paramètres WER, assurez-vous d'appeler la méthode à la place.

Je pense que cela explique le comportement détecté.


0 commentaires