Procédure pas à pas : débogage d'une application SharePoint avec IntelliTraceWalkthrough: Debugging a SharePoint Application by Using IntelliTrace

Grâce à IntelliTrace, vous pouvez déboguer plus facilement des solutions SharePoint.By using IntelliTrace, you can more easily debug SharePoint solutions. Les débogueurs classiques vous permettent uniquement d’un instantané d’une solution au moment actuel.Traditional debuggers give you only a snapshot of a solution at the current moment. Toutefois, vous pouvez utiliser IntelliTrace pour examiner les événements passés qui s’est produite dans votre solution et le contexte dans lequel ils s’est produite et accéder au code.However, you can use IntelliTrace to review past events that occurred in your solution and the context in which they occurred and navigate to the code.

Cette procédure pas à pas montre comment déboguer un projet SharePoint 2010 ou SharePoint 2013 dans Visual Studio à l’aide de Microsoft Monitoring Agent pour collecter des données IntelliTrace à partir des applications déployées.This walkthrough demonstrates how to debug a SharePoint 2010 or SharePoint 2013 project in Visual Studio by using Microsoft Monitoring Agent to collect IntelliTrace data from deployed applications. Pour analyser ces données, vous devez utiliser Visual Studio Enterprise.To analyze that data, you must use Visual Studio Enterprise. Ce projet comprend un récepteur de fonctionnalité qui, lorsque la fonctionnalité est activée, ajoute une tâche à la liste des tâches et une annonce à la liste d’annonces.This project incorporates a feature receiver that, when the feature is activated, adds a task to the Task list and an announcement to the Announcements list. Lorsque la fonctionnalité est désactivée, la tâche est marquée comme terminée, et une deuxième annonce est ajoutée à la liste d’annonces.When the feature is deactivated, the task is marked as completed, and a second announcement is added to the Announcements list. Toutefois, la procédure contient une erreur de logique qui empêche le projet de s’exécuter correctement.However, the procedure contains a logical error that prevents the project from running correctly. Grâce à IntelliTrace, vous devez localiser et corriger l’erreur.By using IntelliTrace, you'll locate and correct the error.

S’applique à : les informations contenues dans cette rubrique s’applique aux solutions SharePoint 2010 et SharePoint 2013 qui ont été créées dans Visual Studio.Applies to: The information in this topic applies to SharePoint 2010 and SharePoint 2013 solutions that were created in Visual Studio.

Cette procédure pas à pas décrit les tâches suivantes :This walkthrough illustrates the following tasks:

PrérequisPrerequisites

Pour exécuter cette procédure pas à pas, vous devez disposer des composants suivants :You need the following components to complete this walkthrough:

Créer un récepteur de fonctionnalitéCreate a Feature Receiver

Tout d’abord, vous créez un projet SharePoint vide qui possède un récepteur de fonctionnalité.First, you create an empty SharePoint project that has a feature receiver.

  1. Créez un projet de solution SharePoint 2010 ou SharePoint 2013 et nommez-le IntelliTraceTest.Create a SharePoint 2010 or SharePoint 2013 solution project, and name it IntelliTraceTest.

    Le Assistant Personnalisation de SharePoint s’affiche, dans laquelle vous pouvez spécifier à la fois le site SharePoint pour votre projet et le niveau de confiance de la solution.The SharePoint Customization Wizard appears, in which you can specify both the SharePoint site for your project and the trust level of the solution.

  2. Choisissez le déployer une solution de batterie de serveurs case d’option, puis choisissez le Terminer bouton.Choose the Deploy as a farm solution option button, and then choose the Finish button.

    IntelliTrace fonctionne uniquement sur les solutions de batterie de serveurs.IntelliTrace operates only on farm solutions.

  3. Dans l’Explorateur de solutions, ouvrez le menu contextuel pour le fonctionnalités nœud, puis choisissez ajouter une fonctionnalité.In Solution Explorer, open the shortcut menu for the Features node, and then choose Add Feature.

    Feature1.Feature s’affiche.Feature1.feature appears.

  4. Ouvrez le menu contextuel pour Feature1.feature, puis choisissez ajouter un récepteur d’événements pour ajouter un module de code à la fonctionnalité.Open the shortcut menu for Feature1.feature, and then choose Add Event Receiver to add a code module to the feature.

Ajoutez le Code au récepteur de fonctionnalitéAdd Code to the Feature Receiver

Ensuite, ajoutez le code à deux méthodes dans le récepteur de fonctionnalité : FeatureActivated et FeatureDeactivating.Next, add code to two methods in the feature receiver: FeatureActivated and FeatureDeactivating. Ces méthodes déclenchent chaque fois qu’une fonctionnalité est activée ou désactivée dans SharePoint, respectivement.These methods trigger whenever a feature is activated or deactivated in SharePoint, respectively.

  1. En haut de la Feature1EventReceiver de classe, ajoutez le code suivant, qui déclare les variables qui spécifient le site SharePoint et le sous-site :At the top of the Feature1EventReceiver class, add the following code, which declares variables that specify the SharePoint site and subsite:

    ' SharePoint site and subsite.
    Private siteUrl As String = "http://localhost"
    Private webUrl As String = "/"
    
    // SharePoint site and subsite.
    private string siteUrl = "http://localhost";
    private string webUrl = "/";
    
  2. Remplacez la méthode FeatureActivated par le code suivant :Replace the FeatureActivated method with the following code:

    Public Overrides Sub FeatureActivated(ByVal properties As SPFeatureReceiverProperties)
        Try
            Using site As New SPSite(siteUrl)
                Using web As SPWeb = site.OpenWeb(webUrl)
                    ' Reference the lists.
                    Dim announcementsList As SPList = web.Lists("Announcements")
                    Dim taskList As SPList = web.Lists("Tasks")
    
                    ' Add an announcement to the Announcements list.
                    Dim listItem As SPListItem = announcementsList.Items.Add()
                    listItem("Title") = "Activated Feature: " & Convert.ToString(properties.Definition.DisplayName)
                    listItem("Body") = Convert.ToString(properties.Definition.DisplayName) & " was activated on: " & DateTime.Now.ToString()
                    listItem.Update()
    
                    ' Add a task to the Task list.
                    Dim newTask As SPListItem = taskList.Items.Add()
                    newTask("Title") = "Deactivate feature: " & Convert.ToString(properties.Definition.DisplayName)
                    newTask.Update()
                End Using
            End Using
    
        Catch e As Exception
            Console.WriteLine("Error: " & e.ToString())
        End Try
    
    End Sub
    
    public override void FeatureActivated(SPFeatureReceiverProperties properties)
    {
        try
        {
            using (SPSite site = new SPSite(siteUrl))
            {
                using (SPWeb web = site.OpenWeb(webUrl))
                {
                    // Reference the lists.
                    SPList announcementsList = web.Lists["Announcements"];
                    SPList taskList = web.Lists["Tasks"];
    
                    // Add an announcement to the Announcements list.
                    SPListItem listItem = announcementsList.Items.Add();
                    listItem["Title"] = "Activated Feature: " + properties.Definition.DisplayName;
                    listItem["Body"] = properties.Definition.DisplayName + " was activated on: " + DateTime.Now.ToString();
                    listItem.Update();
    
                    // Add a task to the Task list.
                    SPListItem newTask = taskList.Items.Add();
                    newTask["Title"] = "Deactivate feature: " + properties.Definition.DisplayName;
                    newTask.Update();
                }
            }
        }
    
        catch (Exception e)
        {
            Console.WriteLine("Error: " + e.ToString());
        }
    
    }
    
  3. Remplacez la méthode FeatureDeactivating par le code suivant :Replace the FeatureDeactivating method with the following code:

    Public Overrides Sub FeatureDeactivating(ByVal properties As SPFeatureReceiverProperties)
        ' The following line induces an error to demonstrate debugging.
        ' Remove this line later for proper operation.
        Throw New System.InvalidOperationException("Serious error occurred!")
        Try
            Using site As New SPSite(siteUrl)
                Using web As SPWeb = site.OpenWeb(webUrl)
                    ' Reference the lists.
                    Dim taskList As SPList = web.Lists("Tasks")
                    Dim announcementsList As SPList = web.Lists("Announcements")
    
                    ' Add an announcement that the feature was deactivated.
                    Dim listItem As SPListItem = announcementsList.Items.Add()
                    listItem("Title") = "Deactivated Feature: " & Convert.ToString(properties.Definition.DisplayName)
                    listItem("Body") = Convert.ToString(properties.Definition.DisplayName) & " was deactivated on: " & DateTime.Now.ToString()
                    listItem.Update()
    
                    ' Find the task that the feature receiver added to the Task list when the
                    ' feature was activated.
                    Dim qry As New SPQuery()
                    qry.Query = "<Where><Contains><FieldRef Name='Title' /><Value Type='Text'>Deactivate</Value></Contains></Where>"
                    Dim taskItems As SPListItemCollection = taskList.GetItems(qry)
    
                    For Each taskItem As SPListItem In taskItems
                        ' Mark the task as complete.
                        taskItem("PercentComplete") = 1
                        taskItem("Status") = "Completed"
                        taskItem.Update()
                    Next
                End Using
    
            End Using
    
        Catch e As Exception
            Console.WriteLine("Error: " & e.ToString())
        End Try
    
    End Sub
    
    public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
    {
        // The following line induces an error to demonstrate debugging.
        // Remove this line later for proper operation.
        throw new System.InvalidOperationException("A serious error occurred!"); 
        try
        {
            using (SPSite site = new SPSite(siteUrl))
            {
                using (SPWeb web = site.OpenWeb(webUrl))
                {
                    // Reference the lists.
                    SPList taskList = web.Lists["Tasks"];
                    SPList announcementsList = web.Lists["Announcements"];
    
                    // Add an announcement that the feature was deactivated.
                    SPListItem listItem = announcementsList.Items.Add();
                    listItem["Title"] = "Deactivated Feature: " + properties.Definition.DisplayName;
                    listItem["Body"] = properties.Definition.DisplayName + " was deactivated on: " + DateTime.Now.ToString();
                    listItem.Update();
    
                    // Find the task that the feature receiver added to the Task list when the
                    // feature was activated.
                    SPQuery qry = new SPQuery();
                    qry.Query = "<Where><Contains><FieldRef Name='Title' /><Value Type='Text'>Deactivate</Value></Contains></Where>";
                    SPListItemCollection taskItems = taskList.GetItems(qry);
    
                    foreach (SPListItem taskItem in taskItems)
                    {
                        // Mark the task as complete.
                        taskItem["PercentComplete"] = 1;
                        taskItem["Status"] = "Completed";
                        taskItem.Update();
                    }
                }
            }
    
        }
    
        catch (Exception e)
        {
            Console.WriteLine("Error: " + e.ToString());
        }
    }
    

Le projet de testTest the Project

Maintenant que le code est ajouté au récepteur de fonctionnalité et le collecteur de données est en cours d’exécution, déployer et exécuter la solution SharePoint pour vérifier si elle fonctionne correctement.Now that the code is added to the feature receiver and the data collector is running, deploy and run the SharePoint solution to test whether it works correctly.

Important

Pour cet exemple, une erreur est générée dans le Gestionnaire d’événements FeatureDeactivating.For this example, an error is thrown in the FeatureDeactivating event handler. Plus loin dans cette procédure pas à pas, vous localisez cette erreur en utilisant le fichier .iTrace créés par le collecteur de données.Later in this walkthrough, you locate this error by using the .iTrace file that the data collector created.

  1. Déployer la solution sur SharePoint, puis ouvrez le site SharePoint dans un navigateur.Deploy the solution to SharePoint, and then open the SharePoint site in a browser.

    La fonctionnalité active automatiquement, à l’origine de son récepteur de fonctionnalité Ajouter une annonce et une tâche.The feature automatically activates, causing its feature receiver to add an announcement and a task.

  2. Afficher le contenu des listes de tâches et des annonces.Display the contents of the Announcements and Tasks lists.

    La liste d’annonces doit avoir une nouvelle annonce nommée Activated feature : IntelliTraceTest_Feature1, et la liste des tâches doit avoir une nouvelle tâche qui est nommée Deactivate feature : IntelliTraceTest_ Feature1.The Announcements list should have a new announcement that's named Activated feature: IntelliTraceTest_Feature1, and the Tasks list should have a new task that's named Deactivate feature: IntelliTraceTest_Feature1. Si un de ces éléments est manquant, vérifiez si la fonctionnalité est activée.If either of these items is missing, verify whether the feature is activated. S’il n’est pas activé, activez-le.If it isn't activated, activate it.

  3. Désactiver la fonctionnalité en procédant comme suit :Deactivate the feature by performing the following steps:

    1. Sur le Actions du Site menu dans SharePoint, choisissez paramètres du Site.On the Site Actions menu in SharePoint, choose Site Settings.

    2. Sous Actions du Site, choisissez le gérer les fonctionnalités du site lien.Under Site Actions, choose the Manage site features link.

    3. Regard IntelliTraceTest Feature1, choisissez le Deactivate bouton.Next to IntelliTraceTest Feature1, choose the Deactivate button.

    4. Dans la page d’avertissement, choisissez la désactiver cette fonctionnalité lien.On the Warning page, choose the Deactivate this feature link.

      Le Gestionnaire d’événements FeatureDeactivating() génère une erreur.The FeatureDeactivating() event handler throws an error.

Collecter des données IntelliTrace à l’aide de Microsoft Monitoring AgentCollect IntelliTrace Data by using Microsoft Monitoring Agent

Si vous installez Microsoft Monitoring Agent sur le système qui exécute SharePoint, vous pouvez déboguer des solutions SharePoint à l’aide de données qui sont plus précies que les informations génériques qui retourne par IntelliTrace.If you install Microsoft Monitoring Agent on the system that's running SharePoint, you can debug SharePoint solutions by using data that's more specific than the generic information that IntelliTrace returns. L’agent fonctionne en dehors de Visual Studio à l’aide des applets de commande PowerShell pour capturer les informations de débogage lors de l’exécution de votre solution SharePoint.The agent works outside of Visual Studio by using PowerShell cmdlets to capture debug information while your SharePoint solution runs.

Note

Les informations de configuration de cette section sont spécifiques à cet exemple.The configuration information in this section is specific to this example. Pour plus d’informations sur les autres options de configuration, consultez à l’aide du collecteur autonome IntelliTrace.For more information about other configuration options, see Using the IntelliTrace stand-alone collector.

  1. Sur l’ordinateur qui exécute SharePoint, configurer Microsoft Monitoring Agent et commencer à surveiller votre solution.On the computer that's running SharePoint, set up Microsoft Monitoring Agent and start to monitor your solution.

  2. Désactiver la fonctionnalité :Deactivate the feature:

    1. Sur le Actions du Site menu dans SharePoint, choisissez paramètres du Site.On the Site Actions menu in SharePoint, choose Site Settings.

    2. Sous Actions du Site, choisissez le gérer les fonctionnalités du site lien.Under Site Actions, choose the Manage site features link.

    3. Regard IntelliTraceTest Feature1, choisissez le Deactivate bouton.Next to IntelliTraceTest Feature1, choose the Deactivate button.

    4. Dans la page d’avertissement, choisissez la désactiver cette fonctionnalité lien.On the Warning page, choose the Deactivate this feature link.

      Une erreur se produit (dans ce cas, en raison de l’erreur levée dans le Gestionnaire d’événements FeatureDeactivating()).An error occurs (in this case, because of the error thrown in the FeatureDeactivating() event handler).

  3. Dans la fenêtre PowerShell, exécutez le Stop-WebApplicationMonitoring commande pour créer le fichier .iTrace, arrêter l’analyse et redémarrez votre solution SharePoint.In the PowerShell window, run the Stop-WebApplicationMonitoring command to create the .iTrace file, stop monitoring, and restart your SharePoint solution.

    Stop-WebApplicationMonitoring "<SharePointSite>\<SharePointAppName>"Stop-WebApplicationMonitoring "<SharePointSite>\<SharePointAppName>"

Déboguer et corriger la Solution SharePointDebug and Fix the SharePoint Solution

Maintenant, vous pouvez afficher le fichier journal IntelliTrace dans Visual Studio pour rechercher et corriger l’erreur dans la solution SharePoint.Now you can view the IntelliTrace log file in Visual Studio to find and fix the error in the SharePoint solution.

  1. Dans le dossier \IntelliTraceLogs, ouvrez le fichier .iTrace dans Visual Studio.In the \IntelliTraceLogs folder, open the .iTrace file in Visual Studio.

    Le résumé IntelliTrace page s’affiche.The IntelliTrace Summary page appears. Étant donné que l’erreur n’a pas été gérée, un ID de corrélation SharePoint (GUID) apparaît dans la zone de l’exception non gérée de le analyse section.Because the error wasn't handled, a SharePoint correlation ID (a GUID) appears in the unhandled exception area of the Analysis section. Choisissez le pile des appels bouton si vous souhaitez afficher la pile des appels où l’erreur s’est produite.Choose the Call Stack button if you want to view the call stack where the error occurred.

  2. Choisissez le Exception de débogage bouton.Choose the Debug Exception button.

    Si vous y êtes invité, charger des fichiers de symboles.If prompted, load symbol files. Dans le IntelliTrace fenêtre, l’exception est mise en surbrillance en tant que « levé : une erreur grave s’est produite ! ».In the IntelliTrace window, the exception is highlighted as "Thrown: Serious error occurred!".

    Dans la fenêtre IntelliTrace, choisir l’exception pour afficher le code qui a échoué.In the IntelliTrace window, choose the exception to display the code that failed.

  3. Corrigez l’erreur en ouvrant la solution SharePoint et soit mise en commentaire ou en supprimant la lever instruction au début de la procédure FeatureDeactivating().Fix the error by opening the SharePoint solution and then either commenting out or removing the throw statement at the top of the FeatureDeactivating() procedure.

  4. Régénérez la solution dans Visual Studio, puis le redéployer sur SharePoint.Rebuild the solution in Visual Studio, and then redeploy it to SharePoint.

  5. Désactiver la fonctionnalité en procédant comme suit :Deactivate the feature by performing the following steps:

    1. Sur le Actions du Site menu dans SharePoint, choisissez paramètres du Site.On the Site Actions menu in SharePoint, choose Site Settings.

    2. Sous Actions du Site, choisissez le gérer les fonctionnalités du site lien.Under Site Actions, choose the Manage site features link.

    3. Regard IntelliTraceTest Feature1, choisissez le Deactivate bouton.Next to IntelliTraceTest Feature1, choose the Deactivate button.

    4. Dans la page d’avertissement, choisissez la désactiver cette fonctionnalité lien.On the Warning page, choose the Deactivate this feature link.

  6. Ouvrez la liste des tâches et vérifiez que le état valeur de la tâche Deactivate est « Completed » et ses % achevé valeur est de 100 %.Open the Task list, and verify that the Status value of the Deactivate task is "Completed" and its % Complete value is 100%.

    Le code s’exécute désormais correctement.The code now runs properly.

Voir aussiSee also

Vérification et débogage du code SharePointVerifying and Debugging SharePoint Code
IntelliTraceIntelliTrace
Procédure pas à pas : Vérifier le Code SharePoint à l’aide de Tests unitairesWalkthrough: Verify SharePoint Code by Using Unit Tests