Question

J'ai eu une application Windows en production pour un certain temps maintenant, et l'ont mis à nous envoyer des rapports d'erreur quand il lève des exceptions.La plupart de ces sont assez descriptif et m'aider à trouver le problème très rapidement (j'utilise le MS Exception de l'Application de Bloc).

A plusieurs reprises, j'ai des rapports qui sont des questions que je ne peux pas reproduire, et semblent se produire seulement sur quelques machines client.

Je n'ai pas d'accès physique à ces machines client, quelles sont les stratégies que je peux utiliser pour le débogage?Serait-il préférable de construire un suivi dans le code, ou y a t'il d'autres alternatives?

Je vous remercie.

Edit:J'aurais dû être plus clair:Les rapports d'erreur que je reçois ne sont la trace de la pile, mais puisque c'est le code de production, il n'indique pas la ligne exacte qui a provoqué l'exception, juste la méthode dans laquelle elle a été levée.

Était-ce utile?

La solution

Une option est de générer une (mini-)fichier de vidage comme proche de l'endroit où l'exception est levée que possible.Cette l'article parle de la façon de le faire à partir de code managé.

Vous pouvez ensuite charger le fichier dans Visual Studio ou WinDbg et de l'examiner à l'aide de SOS

Autres conseils

Vous êtes sur la bonne voie.Vous devez créer un module de suivi qui enregistre les actions/exceptions à l'échelle locale.

Vous pouvez alors avoir un bouton ou une option de menu que l'utilisateur peut cliquer pour soit automatiquement un e-mail vous cette information, le moment où le problème se produit, ou ils peuvent avoir la possibilité d'obtenir le fichier de sorte qu'ils peuvent transférer de quelque autre manière.

Vous pouvez même construire-dans un code de diagnostic pour exécuter une vérification de l'intégrité du système et vous envoie un rapport (peut-être qu'il exécute tous vos tests unitaires pour voir si elles fonctionnent sur ce système).

Je l'utilise toujours module de Jeff pour les exceptions non gérées, envoi moi un mail avec stacktrace etc.

Smart Inspecter de Gurock Logiciel a venir dans maniable beaucoup de temps pour moi.Il est très facile à mettre en une .NET application et vous donne extrêmement puissant de contrôle lors de l'analyse des fichiers journaux.Il a de niveaux de journal qui vous permettent de désactiver certaines fonctionnalités à l'exception, dans certains cas, afin de ne pas perdre de performance.

Ils ont même un logiciel de serveur que votre logiciel peut se connecter à enregistrer des journaux lorsque vous ne disposez pas d'un accès complet à la machine.Par exemple, vous pourriez avoir un serveur qui exécute à www.yourdomain.com.Votre logiciel aurait une option de configuration pour activer le débogage.Smart Inspecter serait configuré pour envoyer les données de connexion à votre serveur (Et, éventuellement, à un fichier local), de sorte que vous pourriez obtenir en direct de journalisation n'importe où le logiciel est en cours d'exécution.

Smart inspection est très facile à configurer et possède de nombreuses fonctionnalités que vous pouvez utiliser pour vous aider.Je l'ai utiliser pour déboguer fort impact multi-thread serveur d'applications à la volée sans arrêter la machine.Il dispose de tous les crochets pour garder la trace des différents processus, les threads et les machines.

J'aimerais utiliser le journal des événements.Jetez un oeil ici:

http://support.microsoft.com/kb/307024

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top