我正在对 windows 网络堆栈进行故障排除并使用 Perfview/ETW 来完成它。
我对事件源 Microsoft-Windows-TCPIP 清单中出现的一些值特别感兴趣。
使用此方法我可以毫无问题地获取清单
PerfView /onlyProviders=*Microsoft-Demos-MySource EventSource collect
PerfView /noGui userCommand DumpEventSourceManifests PerfVIewData.etl.zip
问题是,一旦我得到清单,它就会有一堆没有太多解释的值。
例如
<template tid="TcpTemplateChangedArgs">
<data name="Tcb" inType="win:Pointer"/>
<data name="TemplateType" inType="win:UInt32"/>
<data name="Context" inType="win:UnicodeString"/>
</template>
我对这个 Context 值特别感兴趣,因为在我的测试用例中,我得到“Initializing Templace SYNTCB”但就是这样
我真的很想知道例如
- 在堆栈/代码中的哪个位置触发此模板更改
- 无论如何,这个 SYNTCB 模板是什么
- 哪个微软团队管理这个特定的 ETW 源,所以也许我可以以某种方式问他们一个问题..
我已经尽我所能在.net 代码库中查看 system.net(网络代码),看看那里是否有 ETW 挂钩,但我找不到任何东西......
我也可以在 Perfview 中看到该事件,但找不到保存该事件的内存堆栈(是的,我已经扩展了所有系统级事件,并下载了尽可能多的符号库)