CPU 使用率报告的函数名称列中的 [Broken] 表示什么?

use*_*702 5 profiling visual-studio

我在一个小程序上运行了 Visual Studio 的 CPU 使用率分析器,部分输出列在 [Broken] 条目下。我通过调试版本和发布版本得到了这个结果。这个条目表明什么?

Visual Studio 的屏幕截图

mag*_*981 5

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

获取样本时,ETW 系统会尝试获取堆栈跟踪。由于多种原因,在获取完整堆栈之前,这可能会失败。PerfView 使用启发式方法,即所有堆栈都应以负责创建线程的特定操作系统 DLL (ntdll) 中的帧结束。 如果堆栈没有在那里结束,PerfView 会假设它已损坏,并在线程和所获取的堆栈部分之间注入一个名为“BROKEN”的伪节点 (至少它会具有堆栈所在的地址)已取样)。

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