Étape différéent afficher des instantanés à l’aide d’IntelliTrace dans Visual StudioView snapshots using IntelliTrace step-back in Visual Studio

Événement d’étape, IntelliTrace différée étape prend automatiquement un instantané de votre application à chaque point d’arrêt et le débogueur.IntelliTrace step-back automatically takes a snapshot of your application at every breakpoint and debugger step event. Les captures instantanées enregistrées vous permettent de revenir à des étapes ou points d’arrêt précédents pour afficher un état antérieur de l’application.The recorded snapshots enable you to go back to previous breakpoints or steps and view the state of the application as it was in the past. Le retour en arrière IntelliTrace peut vous faire gagner du temps quand vous souhaitez afficher un état précédent de l’application sans avoir à redémarrer le débogage ou à recréer l’état de l’application souhaité.IntelliTrace step-back can save you time when you want to see the previous application state but don't want to restart debugging or recreate the desired app state.

Étape différée IntelliTrace est disponible à partir de Visual Studio de Enterprise 2017 15,5 et versions ultérieures, et nécessite le mise à jour anniversaire Windows 10 ou version ultérieure.IntelliTrace step-back is available starting in Visual Studio Enterprise 2017 version 15.5 and higher, and it requires Windows 10 Anniversary Update or above. La fonctionnalité est actuellement pris en charge pour le débogage ASP.NET, Windows Forms, WPF, les applications console gérés et bibliothèques de classes managées.The feature is currently supported for debugging ASP.NET, WinForms, WPF, managed console apps, and managed class libraries. À compter de Visual Studio 2017 Enterprise version 15,7 preview 1, la fonctionnalité est également prise en charge pour les principaux d’ASP.NET et .NET Core.Starting with Visual Studio 2017 Enterprise version 15.7 preview 1, the feature is also supported for ASP.NET Core and .NET Core. Déboguer les applications UWP n’est pas pris en charge actuellement.Debugging UWP applications is not currently supported.

Dans ce didacticiel, vous allez effectuer les actions suivantes :In this tutorial, you will:

  • Activer les événements Intellitrace et les instantanésEnable Intellitrace events and snapshots
  • Accédez à l’aide de commandes DOS de l’étape et avant de l’étape des événementsNavigate events using step-back and step-forward commands
  • Afficher des instantanés événementView event snapshots

Activer le mode d’événements et les instantanés IntelliTraceEnable IntelliTrace events and snapshots mode

  1. Ouvrez votre projet dans Visual Studio Enterprise.Open your project in Visual Studio Enterprise.

  2. Ouvrez outils > Options > IntelliTrace paramètres et sélectionnez l’option IntelliTrace événements et des captures instantanées .Open Tools > Options > IntelliTrace settings, and select the option IntelliTrace events and snapshots.

    Activer le mode d’événements IntelliTrace et les instantanésEnable IntelliTrace Events and Snapshots mode

  3. Dans votre projet, définissez un ou plusieurs points d’arrêt et démarrer le débogage (appuyez sur F5), ou démarrer le débogage en parcourant votre code (F10 ou F11).In your project, set one or more breakpoints and start debugging (press F5), or start debugging by stepping through your code (F10 or F11).

    IntelliTrace prend un instantané du processus de l’application de débogueur de chaque événement d’étape et le point d’arrêt.IntelliTrace takes a snapshot of the application's process on each debugger step and breakpoint event. Ces événements sont enregistrés dans le événements onglet dans le outils de Diagnostic fenêtre, ainsi que d’autres événements IntelliTrace.These events are recorded in the Events tab in the Diagnostic Tools window, along with other IntelliTrace events. Pour ouvrir cette fenêtre, choisissez déboguer > Windows > afficher les outils de Diagnostic.To open this window, choose Debug > Windows > Show Diagnostic Tools.

    Une icône de caméra s’affiche en regard des événements pour lesquels les instantanés sont disponibles.A camera icon appears next to the events for which snapshots are available.

    Onglet événements avec des instantanésEvents tab with snapshots

    Pour des raisons de performances, les instantanés ne sont pas prises lorsque vous parcourez très rapidement.For performance reasons, snapshots are not taken when you step very quickly. Si aucune icône de caméra s’affiche en regard de l’étape, essayez d’exécuter pas à pas plus lentement.If no camera icon appears next to the step, try stepping more slowly.

  1. Naviguer entre les événements à l’aide de la arrière (Alt + [) et avant (Alt +]) boutons dans la barre d’outils de débogage.Navigate between events by using the Step Backward (Alt + [) and Step Forward (Alt + ]) buttons in the Debug toolbar.

    Ces boutons Parcourir les événements qui s’affichent dans le événements onglet dans le fenêtre Outils de Diagnostic.These buttons navigate the events that appear in the Events tab in the Diagnostic Tools window. Pas à pas détaillé vers l’arrière ou vers l’avant à un événement automatiquement Active le débogage d’historique sur l’événement sélectionné.Stepping backward or forward to an event automatically activates historical debugging on the selected event.

    Revenir en arrière et transférer des boutonsStep Backward and Forward buttons

    Lorsque vous reculer ou avancez, Visual Studio entre en mode débogage historique.When you step back or step forward, Visual Studio enters historical debugging mode. Dans ce mode, le contexte du débogueur passe à l’heure où l’événement sélectionné a été enregistré.In this mode, the debugger's context switches to the time when the selected event was recorded. Visual Studio déplace également le pointeur vers la ligne de code dans la fenêtre source correspondante.Visual Studio also moves the pointer to the corresponding line of code in the source window.

    Dans cette vue, vous pouvez inspecter les valeurs dans le pile des appels, variables locales, automatique, et espion windows.From this view, you can inspect the values in the Call Stack, Locals, Autos, and Watch windows. Vous pouvez également pointer sur les variables pour afficher les DataTips et effectuer l’évaluation de l’expression dans le exécution fenêtre.You can also hover over variables to view DataTips and perform expression evaluation in the Immediate window. Les données que vous consultez provient de l’instantané du processus de l’application effectuée à ce stade dans le temps.The data you see is from the snapshot of the application's process taken at that point in time.

    Ainsi, par exemple, si vous avez atteint un point d’arrêt et de franchir une étape (F10), la arrière insère Visual Studio en mode historique à la ligne de code correspondant au point d’arrêt.So, for example, if you've hit a breakpoint and taken a Step (F10), the Step Backward button puts Visual Studio in historical mode at the line of code corresponding to the breakpoint.

    Mode historique d’activation sur un événement avec un instantanéActivating historical mode on an event with a snapshot

  2. Pour revenir à l’exécution en direct, choisissez continuer (F5) ou cliquez sur le revenir au débogage réel lien dans la barre d’informations.To return to live execution, choose Continue (F5) or click the Return to Live Debugging link in the infobar.

  3. Vous pouvez également afficher un instantané à partir de la événements onglet. Pour ce faire, sélectionnez un événement avec un instantané, puis cliquez sur activer le débogage d’historique.You can also view a snapshot from the Events tab. To do this, select an event with a snapshot and click Activate Historical Debugging.

    Activer le débogage d’historique d’un événementActivate Historical Debugging on an event

    Contrairement à la définir l’instruction suivante commande, affichage d’un instantané ne réexécutez votre code ; il vous donne une vue statique de l’état de l’application à un point dans le temps qui s’est produite dans le passé.Unlike the Set Next Statement command, viewing a snapshot doesn’t rerun your code; it gives you a static view of the state of the application at a point in time that has occurred in the past.

    Vue d’ensemble de l’étape IntelliTrace différéeOverview of IntelliTrace step-back

    Pour en savoir plus sur la façon d’inspecter des variables dans Visual Studio, consultez visite guidée des fonctionnalités du débogueurTo learn more about how to inspect variables in Visual Studio, see Debugger feature tour

Questions fréquemment poséesFrequently Asked Questions

Comment les IntelliTrace étape différée est différent du mode d’uniquement les événements IntelliTrace ?How is IntelliTrace step-back different from IntelliTrace events only mode?

IntelliTrace en mode uniquement des événements vous permet d’activer le débogage d’historique sur les points d’arrêt et les étapes du débogueur.IntelliTrace in events only mode does allow you to activate historical debugging on debugger steps and breakpoints. Toutefois, IntelliTrace capture uniquement les données dans le variables locales et automatique windows si les fenêtres sont ouvertes, et il capture uniquement les données qui sont développées et dans la vue.However, IntelliTrace only captures data in the Locals and Autos windows if the windows are open, and it only captures data that is expanded and in view. En mode uniquement d’événements, souvent inutile une vue complète des variables et les objets complexes.In events only mode, you often do not have a complete view of the variables and complex objects. En outre, expression d’évaluation et affichage des données dans le espion fenêtre n’est pas prise en charge.Additionally, expression evaluation and viewing data in the Watch window is not supported.

En mode d’événements et les instantanés, IntelliTrace capture l’intégralité de l’instantané du processus de l’application, y compris les objets complexes.In events and snapshots mode, IntelliTrace captures the entire snapshot of the application's process, including complex objects. Sur une ligne de code, vous pouvez voir les mêmes informations que si vous ont été arrêtées à un point d’arrêt (et il n’a pas d’importance si vous avez développé précédemment les informations).At a line of code, you can see the same information as if you were stopped at a breakpoint (and it does not matter whether you previously expanded the information). Évaluation de l’expression est également pris en charge lors de l’affichage d’un instantané.Expression evaluation is also supported when viewing a snapshot.

Quel est l’impact sur les performances de cette fonctionnalité ?What is the performance impact of this feature?

L’impact sur les performances globales de pas à pas dépend de votre application.The impact on overall stepping performance depends on your application. La surcharge d’une capture instantanée est environ 30 ms.The overhead of taking a snapshot is around 30 ms. Lorsqu’un instantané est activé, le processus d’application est dupliquée et la copie ramifiée est suspendue.When a snapshot is taken, the app’s process is forked and the forked copy is suspended. Lorsque vous affichez un instantané, Visual Studio s’attache à la copie ramifiée du processus.When you view a snapshot, Visual Studio is attaching to the forked copy of the process. Pour chaque instantané, Visual Studio copie uniquement la table de la page et définit les pages à la copie sur écriture.For each snapshot, Visual Studio copies only the page table and sets pages to copy-on-write. Si les objets sur le tas changent entre les étapes du débogueur avec des captures instantanées associées, la table des pages respectifs est ensuite copiée, aboutissant à un coût de la mémoire minimale.If objects on the heap change between debugger steps with associated snapshots, the respective page table is then copied, resulting in minimal memory cost. Si Visual Studio détecte qu’il n’existe pas d’assez de mémoire pour prendre un instantané, il ne prend pas un.If Visual Studio detects that there is not enough memory to take a snapshot, it does not take one.

Problèmes connusKnown Issues

  • Si vous utilisez le mode d’événements et les instantanés IntelliTrace sur les versions de Windows antérieure à la mise à jour Windows 10 automne créateurs (RS3), et si la cible de plateforme de débogage de l’application est définie sur x86, IntelliTrace n’accepte pas les captures instantanées.If you are using IntelliTrace events and snapshots mode on versions of Windows older than Windows 10 Fall Creators Update (RS3), and if the debug platform target of the application is set to x86, IntelliTrace does not take snapshots.

    Solution de contournement :Workaround:

    • Installer ou mettre à niveau vers Windows 10 automne créateurs de mise à jour (RS3).Install or upgrade to Windows 10 Fall Creators Update (RS3).
    • Vous pouvez également :Alternatively:

      1. Installez l’ensemble d’outils VC ++ 2015.3 v140 du composant poste de travail (x86, x64) à partir du programme d’installation de Visual Studio.Install the VC++ 2015.3 v140 toolset for desktop (x86, x64) component from the Visual Studio installer.
      2. Générez l’application cible.Build the target application.
      3. À partir de la ligne de commande, utilisez l’outil editbin pour définir le Largeaddressaware indicateur pour l’exécutable cible.From the command line, use the editbin tool to set the Largeaddressaware flag for the target executable. Par exemple, vous pouvez utiliser cette commande (après la mise à jour le chemin d’accès) : cette option de « C:\Program Files (x86) \Microsoft Visual Studio\Preview\Enterprise\VC\Tools\MSVC\14.12.25718\bin\Hostx86\x86\editbin.exe » « C:\Path\To\Application\app.exe ».For example, you might use this command (after updating the path): "C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\VC\Tools\MSVC\14.12.25718\bin\Hostx86\x86\editbin.exe" /Largeaddressaware "C:\Path\To\Application\app.exe".
      4. Pour démarrer le débogage, appuyez sur F5.To start debugging, press F5. À présent, instantanés sur les points d’arrêt et les étapes du débogueur.Now, snapshots are taken on debugger steps and breakpoints.

        Note

        Le Largeaddressaware indicateur doit être défini à chaque fois que le fichier exécutable est régénéré avec les modifications.The Largeaddressaware flag must be set each time that the executable is rebuilt with changes.

  • Lorsqu’un instantané du processus de l’application est activé sur une application qui utilise un fichier mappé en mémoire persistant, le processus de l’instantané détient un verrou exclusif sur le fichier mappé en mémoire (même une fois que le processus parent a publié son verrou).When a snapshot of the application's process is taken on an application that uses a persisted memory-mapped file, the process with the snapshot holds an exclusive lock on the memory-mapped file (even after the parent process has released its lock). D’autres processus sont toujours en mesure de lire, mais non écrire, dans le fichier mappé en mémoire.Other processes are still able to read, but not write, to the memory-mapped file.

    Solution de contournement :Workaround:

    • Désactivez toutes les captures instantanées en mettant fin à la session de débogage.Clear all snapshots by ending the debugging session.
  • Lorsque vous déboguez une application dont le processus a un grand nombre de régions de mémoire unique, par exemple, une application qui charge un grand nombre de DLL, pas à pas détaillé des performances avec des instantanés activées peuvent être affectées.When debugging an application whose process has a high number of unique memory regions, such as an application that loads a large number of DLLs, stepping performance with snapshots enabled may be impacted. Ce problème sera résolu dans une future version de Windows.This issue will be addressed in a future version of Windows. Si vous rencontrez ce problème, atteindre nous stepback@microsoft.com.If you are experiencing this issue, reach out to us at stepback@microsoft.com.

  • Lors de l’enregistrement d’un fichier avec Déboguer > IntelliTrace > session IntelliTrace d’enregistrer en mode d’événements et les instantanés, les données supplémentaires capturées à partir d’instantanés ne sont pas disponibles dans le fichier .itrace.When saving a file with Debug > IntelliTrace > Save IntelliTrace session under events and snapshots mode, the additional data captured from snapshots is not available in the .itrace file. Sur les événements de point d’arrêt et l’étape, vous consultez les mêmes informations que si vous aviez enregistré le fichier en mode d’uniquement les événements IntelliTrace.On breakpoint and step events, you see the same information as if you had saved the file in IntelliTrace events only mode.

Étapes suivantesNext steps

Dans ce didacticiel, vous avez appris comment utiliser IntelliTrace étape différée.In this tutorial, you've learned how to use IntelliTrace step-back. Voulez-vous en savoir plus sur d’autres fonctionnalités d’IntelliTrace.You may want to learn more about other IntelliTrace features.