Capturer et afficher les données TraceLogging
Vous pouvez capturer et afficher les données TraceLoggging à l’aide des dernières versions internes de Windows Performance Tools (WPT). Avant de publier votre instrumentation, vous devez tester le code de votre fournisseur TraceLogging pour vous assurer que vos données d’événement sont générées et produisent des données significatives aux moments appropriés.
Le processus de vérification de l’exactitude de l’instrumentation implique les deux étapes suivantes :
- Capturez la trace avec l’Enregistreur de performances Windows (wpr.exe ou wprui.exe).
- Affichez la trace avec le Analyseur de performances Windows (wpa.exe).
Note Pour Windows Phone, vous pouvez également utiliser Tracelog.exe et Xperf.exe pour capturer la trace. Consultez « Pour capturer la trace sur téléphone (à l’aide de Tracelog et XPerf) » ci-dessous.
Conditions préalables
Les outils WPR et WPA doivent être compatibles avec la version du TraceLogging sur laquelle vous êtes lié. Si vous ne parvenez pas à capturer ou décoder vos événements, cela peut être dû au fait que les outils ne correspondent pas et ne sont pas compatibles.
Pour capturer des données de trace avec WPR
Créez ou modifiez un profil WPR (.wprp) pour votre TraceLoggingProvider.
Vous pouvez utiliser l’exemple suivant. Enregistrez le contenu dans un fichier avec l’extension de nom de fichier .wprp. Remplacez les sections TODO par les valeurs appropriées pour votre fournisseur. Par exemple, si vous avez inscrit votre fournisseur par GUID, spécifiez le GUID dans ce fichier.
Note Pour les fournisseurs de mode noyau, ajoutez NonPagedMemory="true » à l’élément Id EventProvider, consultez le commentaire dans l’exemple XML suivant.
Exemple de fichier WPRP :
<?xml version="1.0" encoding="utf-8"?>
<!-- TODO:
1. Find and replace "WorkshopTraceLoggingProvider" with your component name.
2. See TODO below to update GUID for your event provider
-->
<WindowsPerformanceRecorder Version="1.0" Author="Microsoft Corporation"
Copyright="Microsoft Corporation" Company="Microsoft Corporation">
<Profiles>
<EventCollector Id="EventCollector_WorkshopTraceLoggingProvider"
Name="WorkshopTraceLoggingProviderCollector">
<BufferSize Value="64" />
<Buffers Value="4" />
</EventCollector>
<!-- TODO:
1. Update Name attribute in EventProvider xml element with your provider GUID,
or if you specify an EventSource C# provider or call TraceLoggingRegister(...)
without a GUID, use star(*) before your provider name,
eg: Name="*MyEventSourceProvider" which will enable your provider appropriately.
2. This sample lists more than 1 EventProvider xml element and references them again
in a Profile with EventProviderId xml element. For your component wprp, enable
the required number of providers and fix the Profile xml element appropriately
-->
<EventProvider Id="EventProvider_WorkshopTraceLoggingProvider"
Name="f9bc6c5d-4b98-43b5-90a1-1d0c8f45bf5a" />
<!-- For Kernel Mode providers, add NonPagedMemory="true" attribute to the
EventProvider Id element:
Example:
<EventProvider Id="EventProvider_UMDFReflector"
Name="263dd596-513b-4fd9-969c-022b691bb130" NonPagedMemory="true"/>
-->
<Profile Id="WorkshopTraceLoggingProvider.Verbose.File"
Name="WorkshopTraceLoggingProvider" Description="WorkshopTraceLoggingProvider"
LoggingMode="File" DetailLevel="Verbose">
<Collectors>
<EventCollectorId Value="EventCollector_WorkshopTraceLoggingProvider">
<EventProviders>
<!-- TODO:
1. Fix your EventProviderId with Value same as the Id attribute on EventProvider
xml element above
-->
<EventProviderId Value="EventProvider_WorkshopTraceLoggingProvider" />
</EventProviders>
</EventCollectorId>
</Collectors>
</Profile>
<Profile Id="WorkshopTraceLoggingProvider.Light.File"
Name="WorkshopTraceLoggingProvider"
Description="WorkshopTraceLoggingProvider"
Base="WorkshopTraceLoggingProvider.Verbose.File"
LoggingMode="File"
DetailLevel="Light" />
<Profile Id="WorkshopTraceLoggingProvider.Verbose.Memory"
Name="WorkshopTraceLoggingProvider"
Description="WorkshopTraceLoggingProvider"
Base="WorkshopTraceLoggingProvider.Verbose.File"
LoggingMode="Memory"
DetailLevel="Verbose" />
<Profile Id="WorkshopTraceLoggingProvider.Light.Memory"
Name="WorkshopTraceLoggingProvider"
Description="WorkshopTraceLoggingProvider"
Base="WorkshopTraceLoggingProvider.Verbose.File"
LoggingMode="Memory"
DetailLevel="Light" />
</Profiles>
</WindowsPerformanceRecorder>
Pour les fournisseurs de mode noyau, vous devez ajouter l’attribut NonPagedMemory="true » à l’élément Id EventProvider.
<EventProvider Id="EventProvider_myTraceLoggingProviderKM" Name="263dd596-513b-4fd9-969c-022b691bb130" NonPagedMemory="true"/>
Enregistrez le fichier avec l’extension de nom de fichier (. WPRP).
Démarrez la capture à l’aide de WPR à partir d’une fenêtre d’invite de commandes.
<path to wpr>\wpr.exe -start GeneralProfile -start yourTraceLoggingProvider.wprp
GeneralProfile capture les événements système. Pour le débogage général, il est judicieux de capturer les événements système ainsi que les événements de votre fournisseur.
Exécutez votre scénario de test (chargez et déchargez le pilote ou le composant pour déclencher des événements).
Arrêtez la capture de trace et fusionnez tous les enregistrements.
<path to wpr>\wpr.exe -stop GeneralProfile -stop yourTraceCaptureFile.etl description
Vous pouvez également utiliser l’interface utilisateur de l’Enregistreur de performances Windows (Wprui.exe) pour collecter des données de trace.
<path to wpr>\wprui.exe
- Dans la fenêtre WPR, si les options sont masquées, cliquez sur Autres options.
- Cliquez sur Ajouter un profil et accédez à l’emplacement de votre fichier .wprp.
- Sélectionnez le fichier .wprp, puis cliquez sur Ouvrir. WPR valide le schéma XML de votre profil.
- Cliquez sur Démarrer et exécutez votre scénario de test.
- Cliquez sur Enregistrer pour fusionner les résultats et les enregistrer dans un fichier. Si vous utilisez l’interface utilisateur WPR, vous avez également la possibilité d’ouvrir le fichier journal .etl dans WPA.
Pour capturer la trace sur téléphone (à l’aide de Tracelog et XPerf)
Démarrez la capture de trace de votre fournisseur.
cmdd tracelog '-start test -f c:\test.etl -guid #providerguid'
Exécutez vos scénarios de test pour journaliser les événements.
Arrêter la capture de trace.
cmdd tracelog '-stop test'
Résultats de la trace de fusion.
cmdd xperf -merge c:\test.etl c:\testmerged.etl
Récupérez le fichier journal fusionné.
getd c:\testmerged.etl
Afficher les données TraceLogging à l’aide de WPA
Actuellement, WPA est la seule visionneuse que vous pouvez utiliser pour afficher les fichiers etl générés par TraceLogging.
Démarrez WPA.
<path to wpr>\wpa.exe
Chargez le fichier de trace (.etl).
Affichez les événements de votre fournisseur. Dans le Explorer Graph, développez Activité système.
Double-cliquez sur Événements génériques pour les afficher dans la vue Analyse.
Dans la vue Analyse, recherchez les événements de votre fournisseur pour vérifier que la journalisation fonctionne.
Dans la colonne Nom du fournisseur de la table Événements génériques, recherchez et sélectionnez la ligne avec le nom de votre fournisseur.
Vous pouvez cliquer sur l’en-tête de colonne pour trier par nom de colonne, ce qui peut faciliter la recherche de votre fournisseur. Lorsque vous recherchez votre fournisseur, cliquez avec le bouton droit sur le nom et sélectionnez Filtrer pour sélectionner.