问题标签 [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 投票
2 回答
261 浏览

asp.net - ASP.NET 应用程序在负载下变慢

我有一个 ASP.NET 应用程序。当我做一些负载测试时,吞吐量下降了很多,应用程序执行得很慢。我听说 ETW 可用于跟踪 IIS/ASP.NET 管道,它可以让您了解大部分时间在哪里。

有没有人在这种情况下使用过 ETW。如果是这样,关于如何配置/使用它的任何想法或链接?也欢迎任何其他建议。

0 投票
2 回答
2096 浏览

c++ - 从用户模式使用 WPP 进行事件跟踪,使用 Visual Studio 的本机应用程序

我正在寻找一个使用 WPP(预处理器)在 Visual Studio 环境中开发的应用程序使用“Windows 事件跟踪”(ETW)的示例。虽然 MSDN 文档承诺 WPP 也可用于用户模式、本机应用程序,但它仅包含用于设备驱动程序的示例,并且还严重依赖于与 makefile 的集成。

所以我想知道是否有人能够让这个工作,他是否愿意分享他的发现或工作示例代码。谢谢!乌里·科恩

0 投票
1 回答
806 浏览

visual-studio - 在 WPP 跟踪期间不支持多行 MACRO

我正在使用 WPP(预处理器)和 Visual Studio 编译器向基于“Windows 事件跟踪”(ETW)的用户模式应用程序添加跟踪。

MSDN 内容解释了如何转换现有宏以允许从其中进行跟踪。这里的示例是 CHECK_HR,它获取单个参数 (HR),如果它不为 0,则生成跟踪。

现在,我发现如果参数是多行的,由于 WPP 的工作方式,生成的预处理器函数不起作用。但是我找不到任何有关此类问题的参考!

问题是,当预处理器在 File.cpp wpp 的第 17 行遇到宏时,它会生成一个名为 wpp_File_cpp17 之类的函数,并使用LINE从宏中调用它。但是对于上面的多行宏,__ LINE__ 将是 18 并且会出现错误:

有没有人有解决这个问题的方法?我知道 MSFT 在内部广泛使用 WPP,我想知道他们如何处理这个......

0 投票
3 回答
6588 浏览

.net - 灵活的跟踪查看器(用于 etl 文件和运行时跟踪)

我正在寻找一个跟踪查看器,它允许我查看 ETL(Windows 事件跟踪)跟踪(使用 WPP 创建)。我确实找到了一些 ETL 文件查看器,但它们不支持在运行时查看跟踪

我只知道 DDK 提供的 TraceView.exe;但它缺乏对查找跟踪文本、按组件或文件轻松过滤以及在运行时更改日志级别的支持。

建议?有什么像样的 .net 工具可以支持ETW 的 .net 使用吗?

0 投票
3 回答
1791 浏览

.net - CLR 4.0 中究竟有哪些新的 ETW 功能?

我的同事提到 CLR 4.0 中有一些与Windows 事件跟踪相关的重大改进,但我无法找到有关新功能的详细信息。很少有博客文章只提到改进,但没有提供任何关于究竟是什么新功能的细节。有人对它有更深入的了解吗?

0 投票
2 回答
6741 浏览

performance - 性能计数器与 ETW

性能计数器是 ETW 的一部分吗?如果不是,两者有什么区别?

0 投票
1 回答
1039 浏览

etw - XPerf 和经典 ETW 提供程序

是否可以从经典 ETW 提供商处收集跟踪信息?还是 XPerf 仅限于基于清单的?我有一个自定义经典提供程序,想知道是否可以使用 XPerf 收集它的事件。

0 投票
2 回答
1142 浏览

windows - 使用 xperf 列出每个进程访问的文件?

使用 xperf,我可以生成跟踪并获得所有文件的“平面”列表,如下所示:

xperf -on FileIO+FILE_IO+FILE_IO_INIT+FILENAME -stackwalk FileRead+FileWrite+FileDelete

xperf -start FileIOSession -heap -PidNewProcess "C:\Python27\x86\python.exe scratchy.py" -WaitForNewProcess -BufferSize 1024 -MinBuffers 128 -MaxBuffers 512 -stackwalk HeapAlloc+HeapRealloc -f ./tempheap.etl

xperf -stop FileIOSession -stop -d fileio.etl

xperf -i fileio.etl -o fio_output.txt -a 文件名

不幸的是,fio_output.txt 文件包含一个可以想象到的(从我的网络浏览器、IDE 等)访问的每个文件的列表。更令人沮丧的是,如果我手动打开 xperfview 并打开文件 I/O 汇总表,我可以看到我的进程(在本例中为 python.exe)和它读取的一个文件(用于测试目的)但似乎找不到在 CLI 上输出相同数据的方法,这是我需要的——一种无人值守的自动生成文件访问信息的方法。

0 投票
1 回答
1628 浏览

.net - 跟踪 windows API 调用

我目前正在使用 .NET/Python 中的一个工具来监视系统上的某些事件,例如编写特定的注册表项或创建具有特殊名称的文件。

我评估了许多可能性,因为我不必关心 WinXP 支持,所以我使用 Windows 的事件跟踪来获取所有文件和注册表活动的实时流,这很好用(通过使用来自 NT 的事件内核记录器)。

现在,我必须扩展我的工具来监控对某些 Windows API 函数(如WriteProcessMemoryNtUnmapViewOfSectionVirtualAllocEx. 我发现许多工具可以让我跟踪来自单个进程的所有 API 调用,但是挂钩所有进程并不是一个好主意,是吗?

现在我想知道是否有可能为此使用 ETW。内核是否提供了通知我 API 调用的提供程序?如果没有,我还能做什么?

摘要:如果我想捕获 API 调用,我是否必须挂钩每个进程?

0 投票
1 回答
689 浏览

c++ - 需要省略号和 va_args 技巧

TraceMessage是一个具有可变数量参数的 WinAPI 函数。它是一个跟踪函数,符号类似于 printf,在 Windows 跟踪中生成跟踪消息。这里奇怪的部分是它接收格式字符串作为省略号的一部分,而不是作为专用参数。可以用我自己的函数“覆盖”这个函数,然后需要调用TraceMessageVa(与 TraceMessage 相同,只是使用 va_args 而不是省略号)。

到现在为止还挺好; 但现在我想使用类似sprintf函数访问跟踪的消息,该函数具有省略号之外的格式字符串。因此我需要
- 从省略号中获取格式字符串参数;
- 创建一个没有第一个参数的新 va_list。

关于如何做到这一点的任何想法?特定于 Visual Studio 编译器的解决方案也是可以接受的。谢谢!