问题标签 [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.
asp.net - ASP.NET 应用程序在负载下变慢
我有一个 ASP.NET 应用程序。当我做一些负载测试时,吞吐量下降了很多,应用程序执行得很慢。我听说 ETW 可用于跟踪 IIS/ASP.NET 管道,它可以让您了解大部分时间在哪里。
有没有人在这种情况下使用过 ETW。如果是这样,关于如何配置/使用它的任何想法或链接?也欢迎任何其他建议。
c++ - 从用户模式使用 WPP 进行事件跟踪,使用 Visual Studio 的本机应用程序
我正在寻找一个使用 WPP(预处理器)在 Visual Studio 环境中开发的应用程序使用“Windows 事件跟踪”(ETW)的示例。虽然 MSDN 文档承诺 WPP 也可用于用户模式、本机应用程序,但它仅包含用于设备驱动程序的示例,并且还严重依赖于与 makefile 的集成。
所以我想知道是否有人能够让这个工作,他是否愿意分享他的发现或工作示例代码。谢谢!乌里·科恩
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,我想知道他们如何处理这个......
.net - 灵活的跟踪查看器(用于 etl 文件和运行时跟踪)
我正在寻找一个跟踪查看器,它允许我查看 ETL(Windows 事件跟踪)跟踪(使用 WPP 创建)。我确实找到了一些 ETL 文件查看器,但它们不支持在运行时查看跟踪。
我只知道 DDK 提供的 TraceView.exe;但它缺乏对查找跟踪文本、按组件或文件轻松过滤以及在运行时更改日志级别的支持。
建议?有什么像样的 .net 工具可以支持ETW 的 .net 使用吗?
.net - CLR 4.0 中究竟有哪些新的 ETW 功能?
我的同事提到 CLR 4.0 中有一些与Windows 事件跟踪相关的重大改进,但我无法找到有关新功能的详细信息。很少有博客文章只提到改进,但没有提供任何关于究竟是什么新功能的细节。有人对它有更深入的了解吗?
performance - 性能计数器与 ETW
性能计数器是 ETW 的一部分吗?如果不是,两者有什么区别?
etw - XPerf 和经典 ETW 提供程序
是否可以从经典 ETW 提供商处收集跟踪信息?还是 XPerf 仅限于基于清单的?我有一个自定义经典提供程序,想知道是否可以使用 XPerf 收集它的事件。
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 上输出相同数据的方法,这是我需要的——一种无人值守的自动生成文件访问信息的方法。
.net - 跟踪 windows API 调用
我目前正在使用 .NET/Python 中的一个工具来监视系统上的某些事件,例如编写特定的注册表项或创建具有特殊名称的文件。
我评估了许多可能性,因为我不必关心 WinXP 支持,所以我使用 Windows 的事件跟踪来获取所有文件和注册表活动的实时流,这很好用(通过使用来自 NT 的事件内核记录器)。
现在,我必须扩展我的工具来监控对某些 Windows API 函数(如WriteProcessMemory
、NtUnmapViewOfSection
或VirtualAllocEx
. 我发现许多工具可以让我跟踪来自单个进程的所有 API 调用,但是挂钩所有进程并不是一个好主意,是吗?
现在我想知道是否有可能为此使用 ETW。内核是否提供了通知我 API 调用的提供程序?如果没有,我还能做什么?
摘要:如果我想捕获 API 调用,我是否必须挂钩每个进程?
c++ - 需要省略号和 va_args 技巧
TraceMessage是一个具有可变数量参数的 WinAPI 函数。它是一个跟踪函数,符号类似于 printf,在 Windows 跟踪中生成跟踪消息。这里奇怪的部分是它接收格式字符串作为省略号的一部分,而不是作为专用参数。可以用我自己的函数“覆盖”这个函数,然后需要调用TraceMessageVa(与 TraceMessage 相同,只是使用 va_args 而不是省略号)。
到现在为止还挺好; 但现在我想使用类似sprintf
函数访问跟踪的消息,该函数具有省略号之外的格式字符串。因此我需要
- 从省略号中获取格式字符串参数;
- 创建一个没有第一个参数的新 va_list。
关于如何做到这一点的任何想法?特定于 Visual Studio 编译器的解决方案也是可以接受的。谢谢!