问题标签 [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 回答
984 浏览

.net - 是否可以在 ETW 中对 EventSource 进行子类化?

我希望能够声明一个 EventSource,它至少有几个默认提供常规日志记录工具的方法。

例如

  • 信息()
  • 警告()
  • 错误()

此外,我希望能够在每个服务中定义一个从提供上述内容的基类继承的特定事件源。目前,创建清单的 EventRegister.exe 应用程序抱怨必须密封事件源。

我做错了吗?如果是这样,我该如何实现上述目标?见示例代码:

我正在使用最新最好的 Microsoft.Diagnostics.Tracing(pre),据我了解,它支持 Channels,这与 Enterprise Library 中的 SLAB 不同。

0 投票
2 回答
910 浏览

.net - 运行时的 ETW 事件源名称

我想知道,如果我们可以在运行时设置 EventSource Name。

我有多个应用程序想要登录到不同的事件源。如果这可以配置,我可以重用 EventViewer 的组件。

有关 EventSourceAttribute 的附加信息

提前致谢。

0 投票
4 回答
1607 浏览

.net - 基于名称 .Net 4.0 的 ETW 提供者指南

我想根据事件提供者名称获取事件提供者指南(例如:示例测试)

示例代码

这是我的提供者

我用于记录事件的记录器类

请根据 EventSourceName 建议获取 GUID 所需的代码。我已经注册了 Eventvwr。

0 投票
3 回答
2913 浏览

.net - 使用 ETW 记录异常的最佳方法是什么?

是否有使用 ETW 记录异常的标准方法?

据我所知,唯一的方法是记录消息和可能的内部异常消息,因为异常类型没有强类型参数。

0 投票
1 回答
1406 浏览

c# - 使用 ETW 和语义日志记录应用程序块的文件锁定

我们创建了一个非常简单的 ETW EventSource 实现,由语义日志记录应用程序块(通过 RollingFlatFileLogs)使用。

基本设置如下:

...

然后,它具有基本的关键字、任务和操作码。

这些文件由如下所示的事件写入:

我们使用这种方法订阅:

但是,我们看到的问题是一些开发人员看到锁定停止执行的日志文件。显示“文件正在使用中且无法写入”的消息。

为什么会这样?为什么即使日志记录是异步运行的,它也会结束进程?

我们如何才能防止这种情况在未来发生?有没有办法强化我们的日志记录实现,以便在出现诸如此类的错误时滚动文件?

谢谢!

编辑:我已经捕获了问题的堆栈跟踪:

0 投票
1 回答
67 浏览

.net - 我如何向管理和调试通道发送异常?

正如问题所述,如果我的服务中发生异常,我希望它显示在管理通道中,这样我们就不必打开诊断来在调试通道中看到它。例如,如果未打开日志,我们可能会错过该事件。但是,很高兴在跟踪的上下文中看到调试通道中的错误。为了实现这一点,我需要在两个频道中都显示它。

使用 ETW 实现这一目标的最佳方法是什么?

0 投票
1 回答
135 浏览

c++ - Run-time Manifest-based events

Does the fact that Manifest-based events are defined in resources mean that I can't generate the parameters (like Level, Message, EventID etc) at run-time without modifying the resources in binary?

0 投票
1 回答
218 浏览

c# - EventProvider 构造函数抛出 Win32Exception 存储空间不足

将 WCF 服务从一台生产服务器移动到另一台生产服务器后,配置非常相似,通过 Windows 事件跟踪的自定义事件日志记录已停止工作,但仅适用于一个应用程序。

EventProvider 类的 ctor 中引发了错误,这是一个 Win32“存储空间不足”错误。

WCF 服务是每个调用配置的“并发模式多个,每次调用实例上下文模式”线程。在监视时,有 60 个线程属于该进程。每次调用都会调用 EventProvider ctor。它是由 AppFabric 托管的 IIS/WAS。

同一台服务器上的另一个应用程序运行正常。

我不知道如何诊断。如果有人甚至可以提出一个起点,我将不胜感激。

0 投票
1 回答
1314 浏览

windows - ETW:通过现有提供者发出事件

我有一个使用本机插件的应用程序。这些插件我有自己的二进制格式。每个插件在运行时使用类似于将 DLL 映射到进程空间的方法加载。这意味着,每个插件都有自己的ImageBase部分,类似于.text.data以与传统 DLL 相同的方式处理。唯一不同的是插件的二进制格式(它不是PE文件)和将插件映射到进程空间的加载程序代码。

现在我知道 ETW 在通过此命令行进行跟踪时:

将发出可用于在跟踪捕获期间重建进程环境的事件。即会发出“添加进程”、“将线程添加到进程”、“将DLL模块添加到进程”之类的事件,以便像这样的工具xperfview可以构建系统中进程状态的虚拟环境并构建信息像当前的进程树。例如,这些事件是ImageLoad事件,它们提供有关在跟踪之前或期间加载的每个 DLL 的信息。

当然,对于我的插件,这些ImageLoad事件不会生成,因为它们在技术上不是 DLL(也就是说,不是由与 DLL 相同的函数加载,尽管它们的功能是相同的)。这就是为什么像xperfview这样的工具不知道它们在进程空间中的存在的原因。

我想做的是在我的插件加载器代码中编写我自己的 EventWrites,并ImageLoad用必要的信息发出这些事件,以便xperfview和类似的工具可以将我的插件解释为普通的 DLL。我会填写必要的信息,如ImageBase, ProcessId,ImageSize等。

为此,我知道我需要注册事件MSNT_SystemTrace提供者,即事件的所有者,ImageLoad使用这种结构构建事件:

并发出事件。

问题是我ERROR_ACCESS_DENIED在尝试注册另一个时遇到了问题MSNT_SystemTrace,这是合乎逻辑的,因为该提供程序已经存在。

但这迫使我问这个问题,我正在尝试做的事情是否得到 ETW 的支持?

0 投票
1 回答
910 浏览

c++ - 将 ETW 事件发送到全局“应用程序”日志

我想让我的应用程序使警告和错误对 Windows 事件查看器中的全局“应用程序”日志可见。我已成功遵循此处帮助我启动并运行 ETW 的说明,但我仅在通过跟踪程序显式启用日志记录时才看到事件,即使如此,它们也仅显示在生成的 .etl 文件中,而不显示在全局文件中日志。

如何以编程方式注册事件并将其写入全局应用程序日志,以便当用户运行事件查看器时,他们会看到来自我的应用程序的事件?甚至可能吗?简而言之,我想得到类似下面截图的结果,只需要更少的photoshopping:

在此处输入图像描述