Visual studio 在CPU使用情况报告的函数名列中,[断开]表示什么?

Visual studio 在CPU使用情况报告的函数名列中,[断开]表示什么?,visual-studio,profiling,Visual Studio,Profiling,我在一个小程序上运行了VisualStudio的CPU使用情况探查器,部分输出列在一个[Breaked]条目下。我通过调试构建和发布构建得到了这个结果。这个条目表示什么 我不使用此工具,但一个类似的名为的工具在其帮助中包含以下提示: 采集样本时,ETW系统尝试采集堆栈跟踪。 由于各种原因,这可能会在一次失败之前失败 完成堆栈。PerfView使用启发式方法 堆栈应该在特定OS DLL(ntdll)中的一个帧中结束,这是 负责创建线程如果堆栈没有结束于此, PerfView假定它已断开,并注入一个

我在一个小程序上运行了VisualStudio的CPU使用情况探查器,部分输出列在一个[Breaked]条目下。我通过调试构建和发布构建得到了这个结果。这个条目表示什么


我不使用此工具,但一个类似的名为的工具在其帮助中包含以下提示:

采集样本时,ETW系统尝试采集堆栈跟踪。 由于各种原因,这可能会在一次失败之前失败 完成堆栈。PerfView使用启发式方法 堆栈应该在特定OS DLL(ntdll)中的一个帧中结束,这是 负责创建线程如果堆栈没有结束于此, PerfView假定它已断开,并注入一个名为 线程和获取的堆栈部分之间的“断开” (至少它会有样本所在地的地址。) 采取)


两者都使用Windows事件跟踪(ETW),因此都可以使用类似的逻辑将它们显示为已断开。

Perfview帮助显示详细信息:“采集样本时,ETW系统尝试采集堆栈跟踪。由于各种原因,在完成堆栈之前,这可能会失败。PerfView使用启发式方法,即所有堆栈都应在负责创建线程的特定OS DLL(ntdll)中的一个帧中结束。如果堆栈未在此处结束,PerfView将假定它已断开,并在线程和获取的堆栈部分之间注入一个名为“断开”的伪节点(至少它将具有采样位置的地址)。“Visual Studio的CPU使用情况探查器和Perfview都使用ETW,因此两者可能具有相同的逻辑来检测此类问题并将其标记为broken@magicandre1981谢谢你能用这些信息发布一个答案,这样我就可以奖励赏金了吗?好的,我把它作为答案发布了。你有没有发现潜在的问题?这个解释很有趣,但它无助于解决这个问题。