尝试让ETW活动跟踪在我的项目中运行很长一段时间没有太大成功之后,我想我应该退后一步,看看微软的演示项目是否适用于this page 。不幸的是,事实并非如此。问题是,事件确实显示在VS的诊断事件窗口中,但它们具有正常的GUID作为ActivityID而不是分层活动ID,而RelatedActivityID仅包含空值:
尝试了几个小时之后,我发现有一种方法可以让它工作:当我在生成事件时使用PerfView收集数据时,他们会突然得到像他们一样的层次结构ID应该甚至设置相关的活动ID:
但是一旦我停止使用PerfViewer收集事件,事件再次只有活动ID的GUID并且错过相关的活动ID。
有谁知道为什么会这样?这真的只有在外部应用程序监视事件时才有效,或者我能以某种方式让它在VS中工作吗? 有没有人知道这是否适用于Azure诊断?我想稍后使用Azure诊断程序监听事件,但如果没有以这种方式生成分层ID,则对我没有多大用处。
非常感谢!