2009-09-10 13 views
5

Habituellement, Visual Studio se casse s'il rencontre une exception non gérée et affiche une fenêtre d'assistant d'exception.Visual Studio ne rompt pas avec l'assistant d'exception, mais arrête simplement le processus

Toutefois, dans certains cas, Visual Studio arrête simplement le programme en cours d'exécution et ne casse pas ou n'affiche pas l'assistant d'exception.

Les options d'exception (Ctrl + Alt + E) sont configurées correctement: "user-unhandled" est coché sur tous les éléments, "thrown" n'est pas coché. Dans les options de débogage, j'ai activé l'assistant d'exception. Comme il n'arrive que dans certaines occasions, j'ai essayé de comprendre quand Visual Studio entre dans son "état d'assistant d'exception défectueux".

EDIT:

Il semble que le mauvais fonctionnement fantôme assistant d'exception montre que dans les applications WinForms, et seulement après qu'il y ait eu une certaine action extérieure comme appeler un service Web ou l'ouverture d'une connexion de base de données.

FIN EDIT

Il se trouve l'assistant d'exception fonctionne très bien jusqu'à ce qu'une connexion ADODB est ouverte:

var conn = new ADODB.Connection(); 
conn.Open("Provider=SQLOLEDB;Server=localhost;Database=db;UID=user;PWD=pw;", "", "", -1); 
throw new InvalidOperationException(); 

Après excecuting la déclaration conn.Open, l'assistant d'exception ne sera jamais botter.

Est-ce que cela semble familier à tout le monde, et, plus important encore: quelqu'un a-t-il une solution à ce problème? Comme vous pouvez l'imaginer, le débogage d'une application devient très difficile si l'application se ferme toujours sur les exceptions.

+0

Pas de réponses jusqu'à présent, donc je me demandais: est-ce un problème sur ma machine seulement, ou sont d'autres ppl capable de reproduire ce comportement avec le code fourni ci-dessus? J'apprécierais que quelqu'un puisse tester cela. Créez un nouveau projet avec une référence à adodb et copiez l'exemple de code dans celui-ci. Le débogage devrait s'arrêter sur l'instruction throw (au lieu de casser). –

+0

J'espère que vous aurez une réponse. J'ai rencontré quelque chose qui ressemble à votre situation pour faire fonctionner une macro Visual Studio. J'essaie d'ajouter des bannières aux fichiers de code source de la façon dont c'est fait dans cette question: http://stackoverflow.com/questions/415101/need-visual-studio-macro-to-add-banner-to-all-c -files –

Répondre

0

Je reçois quelque chose de similaire (le même comportement), mais je pense que This Microsoft Help Page décrit aussi ma situation: « exceptions non gérées dans des événements Windows Form ne sont pas propagées jusqu'à la pile d'appels »

+0

Nous passons progressivement des projets à VS2010, donc le problème n'est plus très urgent. Mais merci quand même. –

2

Je ne suis pas tout à fait sûr de savoir ce qui cause ce comportement - mais je viens de faire exactement la même chose m'arrive.

La version courte de cette réponse:

Réinstaller Visual Studio 2008 sp1. Si vous ne l'avez pas installé alors je suppose que vous pouvez réparer votre installation VS, ou simplement appliquer sp1 maintenant et il devrait le réparer.

La version longue:

J'ai eu une exception dans mon code et visual studio ne montrait pas l'assistant de mise au point au point où l'exception a eu lieu - au lieu que je recevrais l'erreur de Windows boîte de dialogue de rapport , et une invite me demandant si je voulais déboguer le processus! Si je disais à VS de casser quand toutes les exceptions étaient levées, cela fonctionnerait (mais ce n'est pas un moyen de déboguer une application). Curieusement, sur la même machine, j'ai été capable de déboguer un service WCF fonctionnant sous IIS7.5 - donc je ne pouvais pas le comprendre.

Après de nombreux essais et tentatives répétées, j'ai désactivé le rapport d'erreurs Windows. Cependant, la boîte de dialogue s'affiche et VS ne casse pas l'exception.J'ai donc désactivé le Service de rapport d'erreurs Windows (il a démarré à la demande) - cette fois, l'application quitterait simplement sans afficher la boîte de dialogue - mais toujours VS ne romprait pas l'exception. En fin de compte, j'ai pensé qu'il y avait peut-être un problème de configuration avec VS - donc j'ai réappliqué Visual Studio 2008 SP1 et maintenant tout fonctionne correctement à nouveau.

+0

J'ai déjà essayé de réinstaller vs2008, mais cela n'a pas aidé. Mais après que je l'ai réinstallé, j'avais toujours mes propres paramètres. Qu'avez-vous fait pour effacer les paramètres? –

+0

Aujourd'hui, j'ai découvert que je n'avais pas encore installé SP1.Je l'ai installé maintenant, mais toujours l'application se termine juste à une exception au lieu de VS affichant l'assistant de débogage –

+1

désolé pour le retard - vraiment besoin de basculer les notifications par email! Le comportement s'arrête-t-il si vous vérifiez toutes les exceptions .Net dans la colonne 'Thrown' du menu Debug -> Exceptions? Si oui, alors il pourrait y avoir quelque chose de vicieux avec un filtre d'exception quelque part. Vous pouvez réinitialiser tous les paramètres d'environnement en ouvrant Outils -> Options -> Paramètres d'importation et d'exportation. l'option du bas est de réinitialiser tous les paramètres. Vous devriez exporter votre configuration actuelle afin que vous puissiez importer de manière sélective des choses comme des polices et des couleurs, des emplacements de dossiers, etc. avant de faire cela. –

1

Je ne sais pas si je comprendre comment cela pourrait se produire, mais j'ai un problème très similaire. L'assistant ne semble pas se montrer pour moi non plus. LA GRANDE DIFFERENCE c'est que ça revient à ma forme, pas de crash, pas d'exception windows, je ne termine pas le sub, comme j'ai appelé un sous-marin à ce moment-là ou quelque chose comme ça. C'est comme ça: je passe par le code et j'atteins un peu de mauvais code, je tape step/over pour exécuter le code en surbrillance, puis tout d'un coup mon formulaire se montre à nouveau, je peux alors interagir avec la forme et continuez comme si rien ne se passait .... Particulièrement gênant quand je n'arrive pas à voir quelque chose de mal dans le code et j'ai besoin de l'exception pour me dire ce qui s'est mal passé (mauvaise forme de formatage? types incorrects?)

Exécution de VS 2010 Premium sous Windows 7 x64 ... d'après ce que je sais, j'ai les paramètres du débogueur par défaut (pour une application de formulaires Windows déboguée). En utilisant VB.Net, pas de connexions de données (sauf si vous comptez un fichier XML - mais cela ne semble pas le provoquer ...) rien de vraiment spécial sur le code, je pense qu'un simple débordement de pile le [...] provoquerait se passer. Quelqu'un a la même expérience? BTW, quand ce n'est pas une erreur évidente, j'ai mis un bloc try catch autour de l'endroit qui "a une exception" pour attraper l'exception réelle, puis regardez l'exception interceptée dans le code - ennuyeux, mais ça marche!
:: Editer à nouveau ::
Eh bien, je semble avoir découvert comment obtenir l'aide d'exception - Je pense que quelqu'un ici a mentionné qu'ils avaient déjà épuisé cette option, mais il a résolu mon problème: [Debug -> Exceptions -> " Pause quand une exception est: "-> Common Language Runtime Exceptions: Thrown] devrait être vérifiée - ne semble pas logique pourquoi il continuerait à fonctionner si ... oh bien
:: End Edit ::

+0

Bienvenue dans StackOverflow. Ce n'est pas une réponse à la question initiale, et c'est en fait une question distincte. Vous devriez vraiment poster des questions séparées comme votre propre question, et un lien vers des questions connexes pour référence. Pour plus d'informations, lisez la FAQ: http://stackoverflow.com/faq En plus, j'ai exactement le même problème que vous et j'ai déjà posté une question ici: http://stackoverflow.com/questions/4552416/why -doesnt-visual-studio-2010-break-on-an-unhandled-exception Si vous avez quelque chose à ajouter à la question, je vous recommande de la poster ici comme un commentaire. – Brad

0

J'ai couru dans les circonstances exactes comme Jan Willem, avec un ADODB.Connection.Open qui m'a sorti du programme en studio visuel au lieu d'aller dans l'assistant de débogage. Le problème était que le fournisseur demandé utilisait une 32 bits dll et je compilais pour 64 bits. La modification du projet en 32 bits a rendu l'exception visible dans Visual Studio.

Questions connexes