问题标签 [etw]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
637 浏览

logging - ETW - 混乱界面的最佳修复/类库?

ETW 我的意思是“Windows 的事件跟踪”。

根据我的实验,一个优点是,虽然设计它偶尔无法在非常繁忙的条件下记录事件,否则它可以正常工作,正如您可能对内核功能所期望的那样。如果您希望每个处理器缓冲以避免缓存与多线程日志记录问题,ETW 是城里唯一的游戏,因为据我了解,“只有内核知道”您的线程在任何给定时刻真正运行的位置,特别是如果您不分配亲和力等。

然而,界面很混乱,如果你考虑微软推荐的相对于 EventWrite() 的方法,它会变得更糟。在简化程序员对这个强大的内核子系统的访问方面,最好的努力是什么?我对 C++ 接口感兴趣,但查看此问题的其他人也想了解其他语言。

0 投票
3 回答
1302 浏览

asp.net - ASP.NET - 我可以将自己的消息写入 ETW 吗?

使用 ASP.NET 事件 ETW(Windows 事件跟踪)提供程序,我可以将自定义消息从 ASP.NET 页面写入跟踪吗?

0 投票
1 回答
6847 浏览

windows - Windows ETL 跟踪文件格式?

我编写了一个 ETW 提供程序,我的系统使用它使用 TraceEvent API 函数记录二进制数据的不透明 blob。我的系统本质上是一个高吞吐量的事件处理系统,我希望能够(廉价地)捕获某些对象通过系统时的序列化状态。这将给我一个可重播的特性,以便在将来的任何时候我都可以重播事件跟踪并重现导致应用程序特定状态的事件的确切序列。

它仍处于早期阶段,因此目前我对跟踪的唯一控制是使用 logman 或 tracelog 等工具之一,它们可以创建跟踪控制器以将事件记录到扩展名为 .etl 的跟踪文件中。我知道我可以编写一个独立的控制器,它可以实时消耗事件并将事件写入自己的文件,但我想在这个阶段尽量避免这种情况(称之为懒惰:)),但说真的,为什么要重写已经存在的东西可用的?

那么,有人对 .etl 文件的二进制格式有任何了解吗?我知道像 tracedmp 这样的东西可以读取它们并生成 CSV,但这对二进制部分没有帮助。如果我可以读取这些文件并解析出我编写的 blob,那么我基本上将拥有我所追求的可重播性,但我在这种文件格式上找不到任何东西。

谢谢,保罗

0 投票
2 回答
12223 浏览

c++ - 如何从 C++ Windows 客户端使用 ETW

我正在研究Windows 事件跟踪(ETW) 以允许用户模式 ​​Windows 客户端写出跟踪信息。简单地说,现有的文档非常不完整。真正有用的是一个简单的 C++ 示例,它使用 ETW 写出跟踪消息。有这样的例子吗?您可能会推荐其他 ETW 文档吗?

0 投票
3 回答
3078 浏览

log4net - 来自 .net、用户模式和驱动程序的 ETW 跟踪

我们有一个应用程序,它的一部分位于 .net、c++ 用户模式和 C++ 驱动程序中。该应用程序分为几个可执行文件,这些可执行文件按需运行并使用 LPC 相互通信(进程在不同的会话中运行(winlogon))。

目前我们有一个家庭编写的日志服务,.net 和 c++ 用户模式通过发送 LPC 消息与之通信。驱动程序使用 DbgPrint 并且并不总是启用,因为它会导致代码运行速度慢 30%(我们有很多日志记录)。

我想把所有的日志都写在一个地方,最好不要自己写记录器(我喜欢 log4cpp 和 log4net)。要求是将所有可执行文件和驱动程序写入一个位置并具有最小的开销。

我已经读过 ETW 是可行的方法,但是我无法找到已经编写的记录器,它使用它,如 log4cpp 或 log4net。

所以基本上我的问题是,你知道是否已经实现了我可以使用的 log4cpp 和 log4net 的 ETW 附加程序?

0 投票
5 回答
12745 浏览

windows - 使用“Windows 事件跟踪”事件

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

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

在现场出现复杂问题的情况下,我们可能需要要求用户生成包含跟踪的文件。我们不能要求用户下载 DDK 或执行一些复杂的操作来做到这一点。

是否有一种直接、用户友好的方式将 ETW 事件记录到文件中?

此外,如果某人没有以管理员身份运行,是否可以在 Windows Vista/7 上使用 ETW 事件?

0 投票
1 回答
3547 浏览

windows-7 - Win7 WOW64中应用程序中的奇怪线程

我们在应用程序中观察到 Windows 7 x64 上的4-6个线程,这些线程有3 个线程,并且在 Windows 7 之前的任何 Windows(32 位或 64 位)上都能正常运行。

Process Explorer 显示以下“未知”线程:

随机间隔后出现以下线程:

在该应用程序无法创建线程之后(错误代码 8,足够热的空间......)。

在我看来,某些系统 DLL 创建了 ETW 线程或其他东西。有谁知道这些线程的用途以及如何管理它们?

0 投票
1 回答
973 浏览

memory - 如何使用 xperf 的堆分析工具跟踪自定义分配器?

xperf(Windows 性能分析工具包的一部分)通过其堆分析非常有助于跟踪内存使用情况。但是,我的应用程序使用自定义分配器——它直接通过 VirtualAlloc 获取块并管理自己的堆。我想生成 HeapAlloc/HeapFree/等。事件来自我自己的分配函数,这样我就可以按原样使用这些工具,而不必定义一堆自定义 ETW 事件。是否有可能做到这一点?

0 投票
1 回答
2616 浏览

wpf - 使用 XPerf.exe 获取 WPF ETW 事件

我无法确定提供给 XPerf.exe 以使其加载 WPF ETW 提供程序的命令行开关和参数的正确组合(Microsoft-Windows-WPF?a42c77db-874f-422e-9b44-6d89fe2bd3e5?E13B77A8-14B6-11DE -8069-001B212B5009}?)并监听特定事件(WClientInputMessage)。

任何人都可以对这应该如何看待有任何见解吗?零散的文档片段(包括http://windowsclient.net/wpf/white-papers/event-tracing-wpf.aspx)和神秘的“xperf -help start”文本似乎是任何知识的荒地。

0 投票
1 回答
2538 浏览

c++ - 如何在 Windows 7 上读取启动时间事件?

我正在尝试使用 ETW 函数但未成功读取文件:

为了捕获启动时间事件。

我尝试了各种功能 -

  • OpenTrace 给出错误 161
  • EvtQuery 给出错误 15000

有没有人有读取系统跟踪文件的本机代码示例?