Lorsqu'une application se bloque sous Windows et qu'un débogueur tel que Visual Studio est installé, la boîte de dialogue modale suivante s'affiche:
[Titre: Microsoft Windows]
X a cessé de fonctionner
Un problème a empêché le programme de fonctionner correctement. Windows fermera le programme et vous avertira si une solution est disponible.
[Déboguer] [Fermer l'application]
Existe-t-il un moyen de désactiver cette boîte de dialogue? Autrement dit, le programme se bloque-t-il et brûle-t-il en silence?
Mon scénario est que je voudrais exécuter plusieurs tests automatisés, dont certains planteront en raison de bogues dans l'application testée. Je ne veux pas que ces boîtes de dialogue bloquent l'exécution de l'automatisation.
En cherchant autour de moi, je pense avoir trouvé la solution pour désactiver cela sur Windows XP, qui détruit cette clé de registre:
HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AeDebug \ Debugger
Cependant, cela ne fonctionnait pas sous Windows Vista.
Réponses:
Pour forcer Windows Error Reporting (WER) à effectuer un vidage sur incident et à fermer l'application, au lieu de vous demander de déboguer le programme, vous pouvez définir ces entrées de registre:
Une fois que cela est défini, lorsque vos applications se bloquent, vous devriez voir les fichiers * .hdmp et * .mdmp dans:
la source
Vois ici:
http://msdn.microsoft.com/en-us/library/bb513638.aspx
regedit
DWORD HKLM ou HKCU \ Software \ Microsoft \ Windows \ Windows Error Reporting \ DontShowUI = "1"
fera rapport silencieusement WER. Ensuite, vous pouvez définir
DWORD HKLM ou HKCU \ Software \ Microsoft \ Windows \ Windows Error Reporting \ Disabled = "1"
pour l'empêcher de parler à MS.
la source
Je ne sais pas si cela fait exactement référence au même dialogue, mais voici une approche alternative de Raymond Chen :
la source
J'ai dû désactiver cela pour le travail d'automatisation des versions sur Windows 64 bits pour Firefox et j'ai fait ce qui suit:
C'est similaire à ce qui a été accompli pour les rapports d'expérience client dans: http://www.blogsdna.com/2137/fix-windows-installer-explorer-update-has-stopped-working-in-windows-7.htm
la source
Dans mon contexte, je souhaite uniquement supprimer le popup pour mes tests unitaires et non pour l'ensemble du système. J'ai trouvé qu'une combinaison de fonctions est nécessaire pour supprimer ces erreurs, telles que la capture d'exceptions non gérées, la suppression des vérifications d'exécution (telles que la validité du pointeur de pile) et les indicateurs de mode d'erreur. C'est ce que j'ai utilisé avec un certain succès:
la source
Dans l'application WPF
la source
Vous devez implémenter un filtre d'exception non géré qui ferme simplement votre application, puis définissez cette fonction de filtre avec SetUnhandledExceptionFilter () .
Si vous utilisez le CRT sécurisé, vous devez également fournir votre propre gestionnaire de paramètres non valides et le définir avec _set_invalid_parameter_handler ().
Ce billet de blog contient également des informations: http://blog.kalmbachnet.de/?postid=75
la source
Pendant le test, vous pouvez exécuter avec un `` débogueur '' comme ADPlus attaché qui peut être configuré de nombreuses manières utiles pour collecter des données (minidumps) sur les erreurs et éviter les problèmes de dialogue modal que vous indiquez ci-dessus.
Si vous souhaitez obtenir des informations utiles lorsque votre application plante en production, vous pouvez configurer le rapport d'erreurs Microsoft pour obtenir quelque chose de similaire aux données ADPlus.
la source
Ce n'est pas une réponse directe à la question car il s'agit d'une solution de contournement et la question est de savoir comment désactiver cette fonctionnalité, mais dans mon cas, je suis un utilisateur sur un serveur avec des autorisations limitées et je ne peux pas désactiver la fonctionnalité en utilisant l'un des les autres réponses. Donc, j'avais besoin d'une solution de contournement. Cela fonctionnera probablement pour au moins quelques autres qui se retrouveront sur cette question.
J'ai utilisé autohotkey portable et créé une macro qui vérifie une fois par minute si la boîte de dialogue existe et, si c'est le cas, clique sur le bouton pour fermer le programme. Dans mon cas, cela suffit et laisse la fonctionnalité activée pour les autres utilisateurs. Cela nécessite que je lance le script lorsque j'exécute le programme à risque, mais cela fonctionne pour mes besoins.
Le script est le suivant:
edit: Un indicateur rapide. Lorsque d'autres choses se passent, cela semble tenter d'activer les contrôles dans la fenêtre de premier plan - il est censé les envoyer au programme en arrière-plan. Si je trouve un correctif, je modifierai cette réponse pour la refléter, mais pour l'instant, soyez prudent lorsque vous utilisez ceci et essayez de faire d'autres travaux sur une machine en même temps.
la source
Après avoir essayé tout le reste sur Internet pour me débarrasser du débogueur juste à temps, j'ai trouvé un moyen simple qui fonctionnait réellement et j'espère aider quelqu'un d'autre.
Allez dans le panneau de configuration Allez dans les outils d'administration Allez dans les services Regardez la liste pour Machine Debug Manager Cliquez avec le bouton droit dessus et cliquez sur Propriétés Sous l'onglet Général, recherchez le type de démarrage Cliquez sur Désactiver. Cliquez sur Appliquer et OK.
Je n'ai pas vu le message du débogueur depuis, et mon ordinateur fonctionne parfaitement.
la source
Au lieu de modifier les valeurs dans le registre, vous pouvez désactiver complètement le rapport d'erreurs sur Windows Server 2008 R2, Windows Server 2012 et Windows 8 avec:
serverWerOptin /disable
https://technet.microsoft.com/en-us/library/hh875648(v=ws.11).aspx
la source