Windows(ETW)的事件跟踪具有用于使用事件流捕获堆栈跟踪的设施。我假设它们是使用Event_header_ext_type_stack_trace32(OR 64)标题对它们进行/编码的。但是,事件标题是事件源的POV无法控制的。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa363760(v=vs.85)9.aspx
在我的.NET应用程序中,我通过观察它在另一个线程(UI线程)中诊断出一个特定条件。我可以收集堆栈跟踪,以暴露状态,数据片已经到位,但是我想将ETW及其工具链用于进一步分析。
[顺便说一句,是的,我正在寻找阻滞剂,但是尽管现有的基础架构非常适合诊断已知的单个阻滞剂,但在这种情况下,我需要获得概述,事件相关性不够。另外,收集的数据很容易淹没我需要收集的设备。至少在我的情况下,我的探测器更聪明。]
所以我正在寻找(按优先顺序)
- 一种替代我收集到的堆栈的方式标题
- 使用另一个属性作为堆叠式的属性,以及一种方法告诉工具(perfview或xperf)使用此工具
- 一种方法在没有ETW的情况下(但在.net中)编写ETW .ETL兼容文件,控制标头(我不需要实时功能)
指针任何人?
我选择了选项4:使用完全不同的格式至少可以摄入和分析。在这种情况下,一个.perfview.xml文件已写入并完成了工作,尽管分析功能并不像我想要的那么好。
对此使用隐藏的etw命令:
"隐藏" ETW堆栈跟踪功能 - 到处都是堆栈!