2017-02-19 3 views
0

Le suivi d'événements pour Windows (ETW) permet de capturer des traces de pile avec le flux d'événements. Je suppose qu'ils sont récupérés/encodés en utilisant un en-tête EVENT_HEADER_EXT_TYPE_STACK_TRACE32 (ou 64). Cependant, l'en-tête de l'événement échappe au contrôle du POV d'une source d'événement.Comment écrire une trace de pile personnalisée à l'aide d'ETW

https://msdn.microsoft.com/en-us/library/windows/desktop/aa363760%28v=vs.85%29.aspx

Dans mon application .net, j'ai une condition spécifique que je suis le diagnostic dans un autre thread (le thread d'interface utilisateur) en l'observant. Je peux collecter des traces de pile exposant la condition, les pièces de données sont en place, mais je voudrais utiliser ETW et sa chaîne d'outils pour une analyse plus approfondie. Soit dit en passant, oui, je cherche des bloqueurs, mais si l'infrastructure existante est idéale pour diagnostiquer les bloqueurs individuels connus, j'ai besoin d'avoir une vue d'ensemble et la corrélation des événements n'est pas suffisante dans ce cas. En outre, les données collectées submergent facilement l'appareil sur lequel je dois collecter. Mon détecteur est beaucoup plus intelligent, pour mon cas au moins.]

Je suis à la recherche (par ordre de préférence)

  1. une façon de remplacer la pile, j'ai recueilli à en-tête de l'événement
  2. utiliser un autre attribut pour le stacktrace, et un moyen de outils tell (perfview ou XPerf) d'utiliser celui-ci à la place
  3. un moyen de écrire ETW .etl fichiers compatibles sans ETW (mais en .net), avec plein contrôle sur l'en-tête (je n'ai pas besoin du l ive caractéristiques)

Des pointeurs?

Répondre

0

Je suis allé avec l'option 4: Utiliser un format complètement différent au moins un outil peut ingérer et analyser. Dans ce cas, un fichier .perfView.xml a été écrit et a fait le travail, bien que les capacités d'analyse ne soient pas aussi bonnes que je l'aurais souhaité.