Pourquoi est-ce que mon plantage de l'application en mode release, mais pas en mode debug?
Quelle est la différence entre mode release et debug mode?
Et comment puis-je débogage en mode release, pour voir ce qui est en train d'échouer?
class Program
{
[STAThread]
static void Main()
{
try
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainWindow());
}
catch (Exception ex)
{
Logger.Error("Main : "+ex.Message, typeof(Program));
MessageBox.Show(ex.Message + ex.StackTrace);
Environment.Exit(1);
}
}
}
OriginalL'auteur armin | 2012-08-25
Vous devez vous connecter pour publier un commentaire.
La clause catch dans votre extrait de code ne sera jamais attraper quelque chose dans la livraison de la version de votre application. Il ne de travail lorsque vous l'exécutez avec un débogueur.
Ce qui vous manque est le chemin de l'Application.ThreadException se comporte. Cet événement se déclenche lorsqu'une exception non gérée est détecté. Cette fonctionnalité est cependant pas activé lorsque vous déboguez votre code. Aucun gestionnaire d'exception est installé pour déclencher l'événement. Cela a été fait de sorte que vous avez une bonne façon de déboguer les exceptions non gérées. Votre code de changements de comportement, maintenant, il y a est un bloc try active, votre gestionnaire catch devient l'exception.
Pour obtenir le code à se comporter de la même manière, vous aurez besoin de changer l'exception non gérée manipulation de la stratégie. Comme ceci:
Maintenant votre clause catch sera toujours attraper l'exception. Tant qu'il est soulevé sur le thread principal, il ne sera pas attraper les exceptions soulevées dans les threads de travail. Considérer ce code à la place pour le traitement unifié:
Est-ce de travailler en WPF ou tout simplement des Formes de Windows?
OriginalL'auteur Hans Passant
Mon expérience me dit que vous devriez être à la recherche pour le code où vous gérer les paramètres d'aucune sorte.
Vous pourriez commencer par le débogage de l'application sans paramètres de registre et pas les paramètres dans l'application.config.
Si votre application utilise une base de données, vous devriez essayer avec une base de données vide.
Deuxième étape serait de déboguer votre application sur un ordinateur de vous de vos collègues.
Espère que cela va aider votre quête.
OriginalL'auteur Casperah
Il y a de nombreux raisons pour lesquelles cela pourrait se produire, et de nombreux professionnels pourraient confirmer que c'est un classique bug de l'application, qui s'affiche lorsque vous êtes sûr que tout wrks bien, mais sur la machine du client ne fonctionne pas rien.
Il est très difficile de dire pourquoi cela sans aucune exception détail fourni dans la question.
Par la façon dont vous pouvez déboguer votre application en l'attachant à partir de Visual Studio.
Comment: s'Attacher à un Processus en cours d'Exécution
ce n'EventViewer dire?
Eh bien, il ya des types d'exceptions qui ne peuvent pas être prennent par
try/catch
, commeStackOverflow
par exemple. Regarde sur leEventViewer
, comme L. B suggère, ou Activer les Exceptions de Première Chance pour voir où et ce qui se passe.Application: Mindry.exe Cadre Version: v4.0.30319 Description: Le processus a été interrompu en raison d'une exception non gérée. Exception Info: Système D'.BadImageFormatException
ne vous lancez dans libération mode sur une autre machine ou sur la même machine où vous développer?
OriginalL'auteur Tigran
Debug et release modes sont deux façons de construire votre code. Depuis les moyens spécifiques diffère de presque tous les environnement de développement que vous utilisez, il est impossible de le dire tout de suite. Les modes pourraient ainsi être appelé Mode1 & Mode 2.
Cependant, votre mode de débogage probablement compile les informations de débogage (tables de symboles, la numérotation des lignes, etc.) dans votre binaire où la mainlevée n'a pas. Mais il peut y avoir des milliers de différences.
Essayez de trouver où Debug/Release modes sont spécifiés et à vous de trouver les différences!
OriginalL'auteur Qiau
Le meilleur moyen de trouver un environnement option est pour vous ce qui se passe dans la production. Commencez par attraper et la journalisation des exceptions, puis utiliser ce que vous apprenez pour plus spécifiques à l'exploitation forestière.
Voir cet article de base de connaissances Microsoft pour les instructions.
Que les idées derrière Release et Debug modes:
Mode Release et Debug mode existent pour permettre différentes configurations, une conception pour aider le développeur de trouver des bugs, l'autre pour optimiser les performances, et à configurer pour l'environnement de production.
La meilleure façon d'apprendre la différence est tout simplement apporter votre projet de construction de propriétés (clic droit sur votre projet, sélectionnez Propriétés, puis cliquez sur l'onglet Construire sur la Gauche). Regarder les différentes options qui peuvent changer en fonction de la Configuration.
Un autre problème commun avec debug contre la libération n'est pas le réglage de l' Action de Construire sur un de vos articles, comme un fichier de configuration ou une ressource incorporée.
OriginalL'auteur Tony Basile