代码之家  ›  专栏  ›  技术社区  ›  user200783

使用“Windows事件跟踪”事件

  •  6
  • user200783  · 技术社区  · 15 年前

    对…的回答 this 这个问题促使我考虑使用“windows事件跟踪”来满足我们的跟踪需求。我遇到了 NTrace ,这似乎是从C代码(使用与XP兼容的“经典提供程序”模型)生成ETW事件的好方法。

    但是,我找不到一个简单的方法 消费 这些事件-实时查看和/或将它们记录到文件中。我找到的唯一方法是ntrace文档中描述的:使用一个仅作为windows ddk一部分提供的工具。

    在现场遇到复杂问题时,我们可能需要 用户 生成包含跟踪的文件。我们不能要求用户下载ddk或执行一些复杂的操作。

    是否有一种简单、用户友好的方法将ETW事件记录到文件中?

    另外,如果某些人不是以管理员身份运行,他们是否可以使用WindowsVista/7上的ETW事件?

    5 回复  |  直到 10 年前
        1
  •  3
  •   Luke    15 年前

    traceview是最简单的开箱即用的解决方案,但是可以编写特定于您的提供商的自己的etw查看器。这将使您能够完全控制演示文稿,并使最终用户的操作更加容易,因为traceview实际上是一种调试工具,而不是您可以要求最终用户运行的工具。

    就实时跟踪而言, according to the documentation :

    只有具有管理权限的用户、性能日志用户组中的用户以及作为LocalSystem、LocalService、NetworkService运行的服务才能实时使用事件。若要授予受限制的用户实时使用事件的能力,请将其添加到“性能日志用户”组。

    windows xp和windows 2000:任何人都可以使用实时事件。

    如果您对编写自己的ETW查看器(实时或日志文件)感兴趣, here is the relevant documentation .

        2
  •  3
  •   Preet Sangha    15 年前

    Windows事件日志读取ETW。事实上,我认为这是消费者(非程序)查看和导出etw跟踪的正确方法。

    请看这里的示例。 http://blogs.microsoft.co.il/blogs/applisec/archive/2009/10/12/reading-etw-tracing-using-event-viewer.aspx

    This question on msdn 讨论不显示日志时的操作。这里有什么帮助吗?

        3
  •  2
  •   Naveen    15 年前

    ETW跟踪设计为仅由管理员运行,因为跟踪可能包含个人标识信息。如果非管理员能够捕获跟踪,则会对安全造成威胁。

    下面是xperf的一个警告示例

    您刚刚捕获的跟踪“c:\ windows\system32\kernel.etl”可能包含 个人识别信息,包括但不限于访问文件的路径、访问注册表的路径和进程名。确切信息取决于记录的事件。与其他人共享此跟踪时,请注意这一点。

    希望这能回答你的问题

        4
  •  1
  •   Naveen    15 年前

    以下是如何从您自己的 custom provider 以及ETW如何在 managed code

    希望这有帮助。

        5
  •  1
  •   Naveen    10 年前

    依我所见 Perfview 是控制和查看ETW跟踪的最佳工具之一。它还可以提供托管调用堆栈。它最好的部分是您可以xcopy到任何服务器并收集跟踪。

    perfview使用traceevent库,这里 samples 如何使用api和c#