问题标签 [xperf]
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.
windows - xperf 调用堆栈跟踪,特定于 dll
我在使用 xperf 跟踪获取完整调用堆栈时遇到了一些问题。这是在 Win7 64 位电脑上。在更高的层次上,我有一个加载多个 dll 的 exe,这些 dll 也完成了大部分工作。所有 pdb 文件都在一个目录中,并且我在可执行代码中获得了有效符号和调用堆栈,所以我很确定我的符号路径设置正确。
一旦我的 exe 调用其中一个加载的 dll,我就会丢失调用堆栈信息,并且堆栈列显示 plugin_name.dll!?
,当展开时,它会调用自身。权重选项卡显示高百分比(50-90%)和高计数,但我无法获得堆栈的任何实际函数调用。例如:
基于这些,
http://blogs.msdn.com/b/pigscanfly/archive/2009/08/06/stack-walking-in-xperf.aspx
http://msdn.microsoft.com/en-us/library/windows/desktop /ff191014(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/ff191014.aspx
这似乎表明 xperf
- “...不知道地址处的可执行映像是什么”
- “...超过最大堆栈深度”。
我发现的可能原因是 FPO(帧指针优化)已打开(我已用 /Oy 明确禁用,即使它们不应该打开),或者超出了最大堆栈深度,我不确定如何确定这是否是我要击中的。
由于无法查看在 dll 中花费的时间,我无法获得非常有用的信息,所以我想弄清楚发生了什么。
有人对阅读或尝试的东西有任何建议吗?我缺少的 stackwalk 是否有任何限制?符号是否有任何特殊设置,特定于 dll 中的调用堆栈?
windows - 转储选择 GPUView 事件
有没有办法将特定事件(例如,仅与特定进程 + DX 事件对应的 NT 事件)转储到 GPUView 或 xperf 的文本文件中?
windows - xperf 拒绝加载任何符号
使用这些命令行:
设置 _NT_SYMBOL_PATH=srv*C:\symbols*http://msdl.microsoft.com/downloads/symbols XPerf -on FILE_IO XPerf -d trace.etl XPerf -symbols verbose -i trace.etl > output.csv
我得到以下输出:
XPerf:警告:对跟踪处理应用访问限制 xperf:使用符号路径:srv*C:\symbols*http://msdl.microsoft.com/downloads/symbols xperf:使用可执行路径:srv*C:\symbols* http://msdl.microsoft.com/downloads/symbols xperf:使用 SymCache 路径:\SymCache xperf:SymCache 引擎版本:v1.1 xperf:接受的最低 SymCache 版本:v1.1
xperf:接受的最低 SymCache 版本:v1.1 [1/2] 100.0% [2/2] 100.0%
我究竟做错了什么?
performance - 是否可以使用 ETW(Windows 事件跟踪)来收集内存统计信息?
是否可以使用 ETW 来获取所有进程和系统的内存统计信息?对于内存统计,我的意思是:例如提交字节、私有字节、分页池、工作集、...
我找不到任何有关使用 xperf 获取和查看内存统计信息的信息。它总是与 CPU、磁盘、网络有关。
可能会使用性能计数器来获取此类信息,但是如何在一个图表中以图形方式覆盖统计信息(如何关联/同步时间戳)?
.net - .NET 4.0 NGEN x64 程序集上的符号解析不起作用
我在 x64 NGEN .NET 4.0 程序集上的符号解析不起作用。
细节:
我有一个 .NET 4.0 命令行程序集,我正在使用带有 x64 配置的 Visual Studio 进行编译。编译后,我在上面运行 NGEN(64 位版本)。
XPERF 分析无法解析我的符号的调用堆栈(使用 -stackwalk 配置文件)失败。我现在正在从这里尝试 Perfmonitor:http: //bcl.codeplex.com/releases/view/42784
我已经完成了这些步骤,并且希望调用堆栈能够解决:
- 启动 NGEN 的 x64 应用程序
- 性能监控收集
- 性能监视器合并
- 性能监控分析
...不幸的是,堆栈跟踪在 PerfMonitor 中也不起作用。
我还尝试将应用程序作为 32 位运行——同样的问题。我的符号使用 symchk /v 检查得很好
我不知道如何调试这个损坏的堆栈跟踪功能。
c# - 使用 XPerf 查看事件数据?
我正在尝试使用 XPerf 来检测应用程序以进行性能分析。我的目标是在我的 C# 应用程序中记录启动/停止事件并分析这些事件之间的某些内核指标。
我正在我的应用程序中创建一个TraceListener
andTraceSource
并将事件记录到源中。然后我使用 logman 启动两个会话:一个从我的提供程序捕获事件,另一个捕获内核事件 ( xperf -on DiagEasy
)。在我的会话结束时,我使用 XPerf 将这些文件合并在一起并查看/覆盖图形。所有这些都运作良好。
我的应用程序的事件显示在“通用事件”图表中,但是这些事件没有识别信息(没有名称,没有事件数据),因此很难分辨哪个事件是哪个事件。我知道我的事件数据被捕获,因为当我tracerpt
在跟踪输出上运行时它出现在“dumpfile.xml”中。有没有办法将事件名称或事件数据附加到 XPerf 中的“通用事件”?我使用 XPerf 的方法有误吗?
这是一些示例代码,演示了我如何使用 ETW:
xperf - 比较 Windows 中的两个 ETL 跟踪文件
我有一个带有自定义 ETW 日志记录的应用程序。我使用 XPERF 收听这些频道并打开 ETL 跟踪进行分析。
是否有任何工具可以帮助我直接比较 2 个 ETL 文件?我希望能够衡量我正在做的修复的影响。
谢谢
windows - windows性能记录器记录具体过程
使用 Windows 性能记录器,是否可以根据单个进程的跟踪生成 ETL 文件?为系统中的所有进程生成的 ETL 文件会生成以 GB 为单位的 ETL 文件,时间间隔短至几分钟。
.net - 垃圾收集 ETW 事件。我在哪里可以找到“事件数据”
在下面的 msdn 链接中,列出了“事件数据”,如计数、深度、原因 .. http://msdn.microsoft.com/en-us/library/ff356162%28v=vs.100%29.aspx#gcstart_v1_event
根据这个链接,我创建了一个 .etl 文件。 http://msdn.microsoft.com/en-us/library/dd264809.aspx
使用 xprefview.exe 我观察了 etl 文件,甚至发现了所需的事件 'GCStart_V1',查看了视图 'summary table' 中的列操作码。
问题:我在哪里可以找到第一个链接中列出的“事件数据”?