问题标签 [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.
msmq - 如何执行 MSMQ 跟踪
我正在寻找一种方法来跟踪 MSMQ 活动(API 调用,或类似的东西)
我看到几个提到 ETW 跟踪的参考资料,但它们不是很清楚或不完整。
有没有关于这个主题的简单教程?
c# - 使用 XPerf 查看事件数据?
我正在尝试使用 XPerf 来检测应用程序以进行性能分析。我的目标是在我的 C# 应用程序中记录启动/停止事件并分析这些事件之间的某些内核指标。
我正在我的应用程序中创建一个TraceListener
andTraceSource
并将事件记录到源中。然后我使用 logman 启动两个会话:一个从我的提供程序捕获事件,另一个捕获内核事件 ( xperf -on DiagEasy
)。在我的会话结束时,我使用 XPerf 将这些文件合并在一起并查看/覆盖图形。所有这些都运作良好。
我的应用程序的事件显示在“通用事件”图表中,但是这些事件没有识别信息(没有名称,没有事件数据),因此很难分辨哪个事件是哪个事件。我知道我的事件数据被捕获,因为当我tracerpt
在跟踪输出上运行时它出现在“dumpfile.xml”中。有没有办法将事件名称或事件数据附加到 XPerf 中的“通用事件”?我使用 XPerf 的方法有误吗?
这是一些示例代码,演示了我如何使用 ETW:
windows - 使用 WPP 跟踪多个 ETW 提供程序
我正在尝试通过 WPP 仪器使用“Windows 事件跟踪”。根据Windows 驱动程序中的软件跟踪入门中的文档,可以从单个驱动程序向多个提供程序发出跟踪,但我没有看到这样做的示例:
驱动程序可以指定多个控件 GUID。每个控件 GUID 标识一个唯一的提供程序。例如,如果驱动程序定义了两个控制 GUID,一个用于共享库,一个用于驱动程序,则库和驱动程序可以作为两个不同的提供程序启用。可以为库或驱动程序或两者启用跟踪。
我试图创建两个头文件,每个头文件都WPP_CONTROL_GUIDS
使用不同的 guid。然后我包含来自 c/cpp 文件的不同头文件,我希望这些头文件向不同的提供者发出跟踪。但似乎主文件中的定义覆盖了这个分隔,所有的跟踪都到达了它使用的提供者......
有什么建议吗?有样品吗?谢谢!!
iis - 查看 WF 跟踪日志
当使用 SqlWorkflowInstanceStore 持久化 Windows 工作流(托管在 IIS 中)时,我们会遇到“静默”中止。
根据http://support.microsoft.com/kb/2022538:
如果服务是自托管或 Web 托管的,则此问题会创建诊断跟踪。此外,Windows 事件跟踪 (ETW) 跟踪日志中还会生成异常错误和警告。
那篇文章解决了我们的第一个问题(尝试提升布尔属性),但现在我们遇到了一个具有相同症状的新问题。为了诊断它,我们需要查看这些跟踪日志。
在每种情况下,我都没有在事件查看器中看到这些日志。很有可能我没有找对地方,或者我必须先启用某些东西。
- 如何查看这些日志?
- (附加问题)如何订阅工作流中的诊断跟踪?
- (奖励问题 2)如果我在 Visual Studio 2010 中使用默认 Web 服务器(以前称为 Cassini)调试工作流,如何查看这些日志?
c++ - 未创建 NT 内核记录器会话日志
我正在尝试编译从 Microsoft 的一个网站(原始)获得的以下代码:
该程序似乎运行成功,但从未创建日志文件。有谁知道问题是什么?我正在使用 Windows XP。
c++ - 使用 ETW 在上下文切换时打印时间戳
我正在使用在 Microsoft 网站上找到的以下代码。它编译成功并输出一个日志文件,因为它应该:
我想知道是否有办法修改此代码以使其在检测到上下文切换时打印时间戳。有人有想法么?
windows - ETW 提供者的频道名称
我正在尝试让我的 Windows 事件跟踪 (ETW) 提供程序清单来注册正确的通道名称。当我使用清单(包括在下面)时,我得到以下结果。但是,当我检查我的清单与注册表中 All-User-Install-Agent 清单(存储在 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT 中)的结果之间的差异时,我没有看到为什么我的键以 Foo-Bat-TestApp/ 前缀显示。如何摆脱前缀?我无法从名称属性中删除它们,因为已经有一个使用“操作”名称的操作系统组件(它是注册表中的一个平面列表)。
我的示例清单如下所示:
c# - C# - 订阅 ETW 事件频道?
我可以使用 C# 的 EventLogReader 检索在特定操作通道中记录的所有 ETW 事件,使用类似于本页示例的代码:
http://msdn.microsoft.com/en-us/library/bb671197(v=vs.90).aspx
我需要做的就是修改日志名称字符串以指向我感兴趣的操作通道(例如“Microsoft-Windows-RemoteAssistance/Operational”),然后我会看到所有输出到控制台的事件。
但是,我必须不断轮询/检查频道以查看是否有任何新事件,这并不理想。每当有新事件记录到频道时,我希望找到一种订阅(或以其他方式接收回调/通知)的方法。我确信必须有一种方法可以在回调中接收事件,但我在 MSDN 上没有发现任何明显的东西。
有谁知道如何从 C# 做到这一点?
c - MS SQL Server 跟踪日志的集合
我需要编写一个可以从 C 代码中收集 SQL Server 跟踪日志的程序。似乎有几种方法可以做到这一点:
- 使用最常见的SQL 跟踪方法,其中跟踪文件通过存储过程映射到表。然后可以使用 SQL/ODBC 收集此跟踪日志。这样做的问题是跟踪文件被旋转并且大小受到限制。收集跟踪时,可能会交换跟踪文件,但并未收集所有事件。其次,这些存储过程将在未来的版本中删除,因此在此基础上进行构建似乎不是一个好主意。
- 推荐的方法是使用扩展事件。这支持 ETW 和文件目标,但服务器端的设置似乎更复杂,并且并非所有 SQL Server 版本似乎都支持这一点。
- 还有SMO,但这不提供 C API。
那么正确收集 SQL Server 跟踪日志的推荐方法是什么?
.net-4.5 - ETW,.NET 4.5 - 如何写入事件日志?
我试图围绕 ETW 以及如何将 t 集成到高性能应用程序中。
我们都知道旧的可怕的 EventLog 是非结构化的(因此不是最优的)API。
现在有一个用于高性能跟踪的新 API - ETW,它在 4.5 中以 EventSource 类的形式在 .NET 端获得了一个新 API,您可以轻松地对其进行子类化(因此不再需要编写清单)。
这给我留下了许多问题,试图让它发挥作用。
- 当前建议的最佳(根据文档,指南)使用 ETW 并将事件从那里获取到事件日志的方法是什么?我在这里有一个必须编写(性能)事件的应用程序,并且很想使用 ETW;但事件应出现在(自定义)事件日志中。
- 有没有完整的例子?我可以找到一些,但它们都可以追溯到 .NET 4.0 时间并从清单开始。
我尝试了什么?我得到了一个 EventSource 工作,但只是未能获得有关如何从那里获得其余工作下游的正确文档。