2009-05-07 6 views
0

Mon appliaction .Net se ferme brusquement sur certaines machines (il s'agit d'une application de bureau). J'ai essayé d'attraper l'exception, mais la déclaration catch que je mets tout simplement ne peut pas attraper l'exception qui se produisait.. Exit de l'application .Net brusquement

Des idées pour résoudre ou diagnostiquer ce problème?

Remarque: Cette exception se produit uniquement sur l'ordinateur client, mode de publication, sur lequel nous n'avons aucun outil de débogage à utiliser.

Remarque 2: Le journal des événements de l'application ne contient aucune erreur.

Répondre

0

Dans le menu déroulant de débogage dans Visual Studio, choisissez des exceptions et cochez toutes les cases sous throw. Cela devrait arrêter l'application à toutes les exceptions non gérées. Examinez-le et donnez-nous les résultats.

+0

Je ne suis pas sûr que cela soit applicable. Parce que cela ne se produit qu'en mode release, dans la machine du client. Nous ne pouvons pas le reproduire ici, bien que – Graviton

0

Pouvez-vous vérifier les journaux d'événements d'applications sur le PC du client en cas de .NET runtime enregistre quelque chose?

+0

J'ai vérifié les journaux des événements .. Malheureusement, aucune erreur n'a été enregistrée. – Graviton

0

Cela est presque toujours causé par un problème COM/PInvoke où le code natif que vous avez utilisé déclenche une exception Win32. Dans certaines circonstances, Windows choisira simplement d'abandonner le processus plutôt que de le supprimer normalement lorsqu'il s'agit d'une corruption d'état majeure, telle qu'un pointeur de pile invalide.

Si vous pouvez déterminer quels comportements spécifiques précèdent l'arrêt, vous pouvez affiner votre recherche des contrôles/PInvokes qui pourraient causer le problème.

+0

Si votre application est PInvoke-ing, est compilée en tant que AnyCPU et que vos machines de développement exécutent des fenêtres 32 bits, vous pouvez rencontrer des plantages lorsque vous exécutez votre application sur Windows 64 bits. Une solution simple pour cela consiste à compiler votre application en tant que x86. Scott Hanselman posté à ce sujet: http://www.hanselman.com/blog/BackToBasics32bitAnd64bitConfusionAroundX86AndX64AndTheNETFrameworkAndCLR.aspx – Austin