2017-02-13 1 views
3

J'ai développé une application UWP qui fonctionne globalement bien, mais je rencontre quelques problèmes avec l'App Store , ou avec le de presse construction, alors que tout fonctionne bien dans Debug build ...Comment déboguer une application UWP en mode sortie + « .Net chaîne d'outils native »

L'application semble très basique: ts permet aux utilisateurs de créer et de formes de synchronisation par webservices. Au lancement de l'application, un test est effectué pour voir si un utilisateur est déjà connecté: si ce n'est pas le cas, l'application accède à la page "Login", sinon elle accède à la page "Home" , qui contient la liste des formulaires. Ensuite, l'utilisateur peut modifier chaque formulaire via une page "Détails".

mode "Debug":

Lorsque je construis l'application en mode "Debug", je ne rencontre pas une exception qui est pas attrappe et tout fonctionne très bien.

L'application de magasin:

La dernière version de l'application de magasin a été généré et validé sans aucun problème. Mais l'un de mes derniers changements soulève un crash de l'application, lorsque l'utilisateur revenant de la page "Details" à la page "Home".

je soupçonne en particulier ce changement pour augmenter l'erreur: J'ai ajouté un code sur la « Détails » afin de nettoyer les ressources par « OnNavigatedFrom() »:

protected override void OnNavigatedFrom(NavigationEventArgs e) 
{ 
    ViewModel = this.DataContext as DetailsViewModel; 
    if (!ViewModel.ToChildNavigate) 
    { 
     // Dispose resources 
     this.Resources.Clear(); 
     this.Loaded -= DetailsPage_Loaded; 
     ViewModel = null; 
    } 
    base.OnNavigatedFrom(e);    
} 

Pour fixer Je voudrais construire l'application en mode "Release" avec ".Net Native tool chain".

mode "de sortie":

Dans "de presse" le mode, j'ai vérifié bien les options "Compile avec la chaîne d'outil natif .NET" et "optimiser le code". enter image description here

L'application se lance correctement et navigue la page amende "Connectez-vous". Mais après la connexion de l'utilisateur, l'application essaie de naviguer vers la page "Accueil": Je reçois 2 exceptions, et je ne peux rien faire d'autre ...

La première exception se produit une fois, et je peux « continuer »: enter image description here

La deuxième exception se produit chaque fois que même si j'essaie de continuer: enter image description here

J'ai essayé d'ajouter un peu MessageDialog pour voir où l'erreur se produit, mais le message ne figure pas dans les consctructors: donc je ne peux pas identifier l'origine du problème ...

« D Mode « avec « ebug chaîne d'outils native »

Enfin, je l'ai essayé de construire l'application dans « Debug mode » à nouveau, mais avec les options « compilez avec la chaîne d'outil natif .NET » et » Optimize code ".

Mais comme ça, ça fonctionne très bien, et je ne peux pas reproduire l'erreur rencontrée en mode « Release » ...

Je n'ai pas encore des idées, et je ne peux pas anwser à ces questions :

  • Pourquoi existe-t-il des différences entre la version Store et le mode Release?
  • Comment puis-je faire pour utiliser l'application en mode édition? est-il possible de "déboguer"?
  • Je dois lancer l'application en mode de sortie pour Fixé le bug rencontré de la version de magasin ...

Cordialement,

Répondre

3

presse configurations par défaut optimiser le code qui perd artefacts utilisés pour le débogage. Par conséquent, essayer de déboguer une configuration Release peut entraîner des problèmes.

It is important to note that the Release configuration is by default fully optimized code (e.g. code inlining will be applied in many places). These optimizations will have a significant impact on the debugging experience including unpredictable stepping and breakpoint behavior (due to code inlining) and the inability to inspect most variables due to memory optimizations.

Donc, pour déboguer une application UWP en mode « Release », nous pouvons créer une configuration personnalisée et permettre à la chaîne d'outils .NET natif pour cette configuration. Assurez-vous de ne pas optimiser le code. Pour plus de détails, veuillez consulter le Debugging .NET Native Windows Universal Apps.

+0

Merci @Jay Zut: cela n'a pas fonctionné pour moi. J'ai ajouté une nouvelle configuration comme dans votre lien: 'Release' avec' Compiler avec .NET Native toolchain' cochée et 'Optimiser le code' désélectionné. Mais les points de rupture sont toujours inévitables: "Le point d'arrêt ne sera pas touché actuellement, aucun symbole n'a été chargé pour ce document". Vous pouvez voir mes autres tests [ici] (http: // stackoverflow.com/questions/42256423/visual-studio-2015-i-cant-debug-et-use-breakpoints-in-release-mode) –

1

J'ai eu le même problème il y a un moment. Après une longue période d'essai et d'erreur, j'ai pu déboguer en mode release avec la chaîne d'outils native .net avec le débogage à distance sur un autre pc (dans mon cas c'était une surface).

I utilisé Visual Studio 2017 et sur la machine à distance les outils de débogage à distance pour 2017.

Hope this helps.

Salutations.