Déboguer des applications Expression Blend
Si votre application Microsoft Expression Blend ne fonctionne pas comme prévu ou si des erreurs se produisent lorsque vous tentez de la générer, c’est qu’elle comporte un bogue. Il est parfois difficile de trouver l’origine d’un bogue ou son emplacement dans l’application, mais cela permet de comprendre à quels types de bogues vous pouvez avoir affaire.
Erreurs de syntaxe
Lorsque vous générez votre application, toute erreur de syntaxe apparaît dans l’onglet Erreurs du panneau Résultats d’Expression Blend, ou dans le panneau Liste d’erreurs de Microsoft Visual Studio 2008.
Des erreurs de syntaxe se produisent si votre code XAML (Extensible Application Markup Language) ne suit pas les règles de mise en forme du langage. La description de l’erreur peut vous aider à la résoudre. Elle spécifie le nom du fichier et le numéro de ligne où l’erreur se produit. Certaines causes courantes d’erreurs de syntaxe se présentent comme suit :
Un mot clé n’a pas été correctement orthographié ou la casse est erronée.
Des guillemets sont manquants autour de chaînes de texte.
Il manque une balise de fermeture à un élément XAML.
Il existe un élément XAML à un emplacement non autorisé. Vous pouvez éviter ces erreurs en modifiant vos documents dans le mode Création d’Expression Blend, ou dans Visual Studio 2008.
Dans un fichier de code, un appel de fonction ou de méthode ne contient pas les paramètres requis. Par exemple, la méthode MessageBox.Show() doit posséder au moins un paramètre, tel qu’une chaîne, MessageBox.Show("Hello").
Dans un fichier de code, une variable d’un type est affectée à un type différent. Par exemple, la méthode MessageBox.Show() peut posséder un argument de type string, mais pas de type integer.
Dans C#, une méthode qui ne nécessite pas d’arguments ne doit pas posséder d’accolades à la fin. Par exemple, this.InitializeComponent; entraîne une erreur de syntaxe, car la ligne correcte est this.InitializeComponent();.
Pour plus d’informations sur la syntaxe XAML, voir les rubriques d’aperçu général des contrôles individuels, listés dans la rubrique Bibliothèque de contrôles de la section Windows Presentation Foundation sur MSDN. Pour plus d’informations sur la syntaxe de programmation, vous pouvez rechercher des mots clés dans votre code sur MSDN.
Haut de la page
Erreurs de compilation
Lorsque vous générez votre application, toute erreur de compilation apparaît dans l’onglet Erreurs du panneau Résultats d’Expression Blend, ou dans le panneau Liste d’erreurs de Visual Studio 2008.
Les erreurs de compilation se produisent lorsque le système de compilation d’Expression Blend ou de Visual Studio 2008 ne peut pas trouver quelque chose dont votre projet a besoin. Par exemple, s’il manque une référence à votre projet WPF pour les assemblys WPF (Windows Presentation Foundation), vous risquez d’obtenir le message d’erreur suivant : Le nom « Window » n’existe pas dans l’espace de noms « https://schemas.microsoft.com/winfx/2006/xaml/presentation » (en anglais). Si cette erreur se produit, vous pouvez cliquer sur Ajouter une référence dans le menu Projet afin d’ajouter des références aux assemblys WPF suivants dans le dossier C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5 :
PresentationCore.dll
PresentationFramework.dll
WindowsBase.dll
Si vous continuez de recevoir des messages d’erreurs tels que « Le nom « <membre> » n’existe pas dans le contexte actuel. », il manque certainement une autre référence à un assembly, ou vous devez peut-être ajouter une instruction using (C#) ou Imports (Visual Basic .NET) à votre code pour l’espace de noms manquant. Pour connaître l’assembly ou l’espace de noms requis, voir la rubrique de référence MSDN pour le membre à l’origine de l’erreur.
Certaines autres causes courantes d’erreurs de compilation se présentent comme suit :
Un mot clé n’a pas été correctement orthographié ou la casse est erronée.
Une classe est incorrectement référencée dans votre application. Par exemple, si votre application utilise une classe personnalisée implémentée dans un fichier de code .cs ou .vb séparé avec son propre espace de noms (ou dans le cas d’un projet Microsoft Silverlight 1.0, dans un fichier de code .js), tout document de votre application qui utilise cette classe personnalisée doit inclure une ligne telle que celle ci-dessous, où FullyQualifiedNamespace est l’espace de noms dans le fichier de code :
xmlns:SampleNamespace="clr-namespace:FullyQualifiedNamespace"
Les options du compilateur ne sont pas correctement définies ou votre système n’est pas capable de générer des applications basées sur Microsoft .NET Framework. Si Microsoft .NET Framework 3.5 est installé et que vous générez votre application à l’aide d’Expression Blend ou de Visual Studio 2008, cela ne constitue pas un problème.
Un fichier n’a pas été enregistré avant la tentative de génération du projet. Si, par exemple, vous utilisez le panneau Événements d’Expression Blend afin de générer une nouvelle méthode de gestionnaire d’événements dans le fichier code-behind (en ouvrant donc le fichier code-behind dans Visual Studio), et si vous tentez de générer le projet dans Expression Blend sans enregistrer préalablement le fichier code-behind, une erreur vous indique qu’il manque à votre projet une définition pour le gestionnaire d’événements.
Haut de la page
Erreurs d’exécution
Une erreur d’exécution se produit si votre application est générée mais fonctionne de manière inattendue lorsque vous l’exécutez (en appuyant sur la touche F5 dans Expression Blend). Les erreurs d’exécution sont les plus difficiles à identifier car elles impliquent des erreurs de logique. Parfois, vous pouvez parvenir à corriger des erreurs d’exécution en tentant d’apporter diverses modifications à votre langage XAML ou votre code, jusqu’à trouver où se situe le problème. Cependant, il est plus rapide d’observer ce qui se passe en coulisses en analysant votre code ligne par ligne pendant l’exécution de l’application. Pour plus d’informations, voir Debugging in Visual Studio 2008, plus loin dans cette rubrique.
Certaines causes courantes d’erreurs d’exécution se présentent comme suit :
Des éléments XAML ne sont pas correctement disposés ou un élément de panneau incorrect est utilisé pour contenir d’autres éléments. Pour en savoir plus sur la disposition, voir Le système de disposition dans ce Guide de l’utilisateur, ou Le système de disposition et Vue d’ensemble de l’alignement, des marges et de la marge intérieure dans la section WPF sur MSDN.
Un élément XAML n’est pas rattaché au gestionnaire d’événements correct. Cela peut se produire si vous créez de nombreuses méthodes de gestionnaire d’événements et en affectez une erronée à l’élément XAML. Pour connaître les gestionnaires d’événements affectés à un élément XAML dans un projet WPF ouvert dans Expression Blend, sélectionnez l’élément sous Objets et chronologie dans le panneau Interaction, puis, dans le panneau Propriétés, cliquez sur le bouton Événements. Pour plus d’informations, voir Gestion des événements et interactivité utilisateur dans ce Guide de l’utilisateur. Dans une application Silverlight 1.0, cela peut se produire si vous connectez un gestionnaire d’événements à un élément racine à l’aide du code suivant :
rootElement.addEventListener(…);
au lieu de connecter le gestionnaire d’événements à un élément enfant dans le document, en utilisant par exemple le code suivant :
this.control.content.findName("WebLink").addEventListener(…);
Pour plus d’informations, voir Créer un bouton qui contrôle une table de montage séquentiel dans une application Silverlight.
Un déclencheur d’animation n’est pas correctement défini dans Expression Blend. Les tables de montage séquentiel d’animation, par exemple, doivent être démarrées dans n’importe quel déclencheur si vous voulez être en mesure de les arrêter ou de les mettre en pause une fois l’application chargée. (Toutes les tables de montage séquentiel sont démarrées dans le déclencheur Window.Loaded par défaut, mais vous pouvez changer cela.) Pour plus d’informations, voir Animation dans ce Guide de l’utilisateur. Pour un exemple de déclencheur d’animation, voir Créer une animation simple ou les rubriques de la section Essayez ! dans Styles simples.
Dans un fichier de code, une variable fait référence à un objet qui n’existe pas encore. Par exemple, dans un fichier code-behind d’un projet WPF, vous ne pouvez pas référencer un objet XAML avant la ligne this.InitializeComponent(), sinon vous obtenez une erreur XamlParseException.
Dans un fichier de code, des hypothèses sont effectuées qui font progresser votre application vers un chemin de code inattendu. Dans cette situation, l’analyse de votre code lors du débogage de votre application dans Visual Studio 2008 constitue la meilleure approche. Pour plus d’informations, voir Débogage d’applications Expression Blend dans Visual Studio 2008 dans ce Guide de l’utilisateur.
Dans un fichier code-behind, les mises à jour de l’interface utilisateur sont exécutées sur le même thread qu’une autre logique de programmation qui devrait être exécutée sur un thread distinct. Par exemple, si vous créez une méthode de gestionnaire d’événements qui met à jour le texte affiché dans une Étiquette, effectue d’autres calculs, puis met à jour le texte dans la même Étiquette à nouveau avant la fin de la méthode du gestionnaire d’événements, vous n’apercevez alors que la dernière mise à jour. En effet, l’affichage de votre interface utilisateur se produit à la fin de votre méthode de gestionnaire d’événements et l’ensemble du traitement s’effectue sur le même thread. Par conséquent, votre application ne trouve pas le temps de mettre à jour l’interface utilisateur pendant l’exécution de votre méthode. Pour plus d’informations sur l’écriture d’applications WPF contenant plusieurs mises à jour et calculs de l’interface utilisateur, voir Modèle de thread dans la section WPF sur MSDN.
Dans une méthode de gestionnaire d’événements au sein d’un fichier code-behind, des éléments d’interface utilisateur ou leurs propriétés sont référencés avant d’être disponibles. Par exemple, dans une méthode constructeur Window1() d’un projet WPF, vous n’êtes pas encore en mesure d’accéder à des éléments d’interface utilisateur. Dans une méthode de gestionnaire d’événements OnInitialized(), vous pouvez accéder à des éléments d’interface utilisateur, mais vous ne pouvez pas analyser des propriétés telles que ActualWidth, car les éléments d’interface utilisateur n’ont pas encore été placés. Dans une méthode de gestionnaire d’événements OnLoaded(), vous pouvez effectuer n’importe quelle opération avec des éléments d’interface utilisateur qui existent dans votre document XAML. Pour plus d’informations, voir Événements de durée de vie d’objet dans la section WPF sur MSDN. Pour obtenir une liste d’événements et savoir quand ils se produisent, voir Référence rapide des événements WPF dans ce Guide de l’utilisateur.
Haut de la page
-
Débogage dans Visual Studio 2008
Expression Blend est un outil de conception destiné à créer des interfaces utilisateur riches pour des applications basées sur WPF et des applications Silverlight 1.0. Vous pouvez utiliser Visual Studio 2008 pour ouvrir, générer et déboguer des projets Expression Blend. Si vous rencontrez des problèmes de débogage de votre application à l’aide de la fonction Tester (F5) d’Expression Blend, vous pouvez utiliser Visual Studio 2008 pour obtenir des messages d’erreurs détaillés sur les erreurs d’exécution. Pour plus d’informations, voir Débogage d’applications Expression Blend dans Visual Studio 2008 dans ce Guide de l’utilisateur.
Haut de la page
Débogage des problèmes de performances
WPF fournit une suite d’outils d’évaluation des performances qui vous permet d’analyser le comportement de l’exécution de votre application et de déterminer comment améliorer ces performances. Pour plus d’informations, voir Outils de profilage de performances pour WPF et Optimisation des performances des applications WPF dans la section WPF sur MSDN.
Haut de la page
Suivi d’événements
Des programmeurs .NET expérimentés peuvent ajouter du code à leurs applications WPF pour déclencher des événements de débogage personnalisés qui les aident à résoudre des bogues plus complexes. Cette fonction s’appelle le suivi d’événements pour Windows (ETW - Event Tracing for Windows). L’outil de profilage de suivi d’événements WPF utilise ETW pour l’enregistrement des événements. Pour plus d’informations, voir « Suivi d’événements » et « Classe PresentationTraceSources » dans Outils de profilage de performances pour WPF sur MSDN.
Haut de la page
Débogage d’applications hybrides
Si vous disposez d’une application qui utilise à la fois WPF et une autre technologie telle que la programmation Windows Forms, vous risquez d’être confronté à des problèmes de superposition, de mise à l’échelle, de focus de contrôle, etc. Pour plus d’informations sur le débogage des applications hybrides, voir Dépannage d’applications hybrides dans la section WPF sur MSDN.
Haut de la page
Sécurité
Pendant son débogage, votre application dispose des mêmes autorisations de sécurité que lorsqu’une autre personne l’utilise. Pour plus d’informations, voir Déployer et publier des applications Expression Blend dans ce Guide de l’utilisateur. Pour plus d’informations sur la sécurité des applications WPF, voir Sécurité dans la section WPF sur MSDN.
Haut de la page
Obtenir de l’aide
Si vous avez besoin d’aide supplémentaire sur le débogage de votre application Expression Blend, vous pouvez rechercher les publications relatives à votre problème sur le Forum de Windows Presentation Foundation (Windows Presentation Foundation Forum) (site en anglais) ou publier vous-même une question.
Haut de la page