用 dotTrace 进行性能分析时,Timeline 打不开?无法启动进程?也许你需要先开启系统性能计数器的访问权限

对 .NET 程序使用 dotTrace 进行性能分析时,你也可能遭遇到 dotTrace 的 Bug。我就遇到了性能分析选项 Timeline 打不开进程的情况。


dotTrace 的性能分析选项

dotTrace 启动性能分析的选项有四个,你可以阅读 用 dotTrace 进行性能分析时,各种不同性能分析选项的含义和用途 了解不同选项的含义和用途,以便对你的性能分析提供更多的帮助和更有价值的分析数据。

Timeline 打不开?

可是,当我真的使用这个选项的时候,却发现根本无法完成性能分析。

具体来说,是在出现了性能分析的指示窗口后,被分析程序的界面迟迟没有出现。随后在半分钟到数分钟后,分析器自动退出,没有得到任何性能分析数据。

启动 ETW
▲ 启动 ETW(事件跟踪器)

启动分析器
▲ 启动性能分析器

性能分析指示窗口
▲ 性能分析指示窗口

最后那个指示窗口就这样过一会儿变成以下窗口,提示 “Waiting for a managed application to start…”,然后消失。

等待启动
▲ 等待启动

解决方法

在这四个选项中,只有 Timeline 和 Line-by-line 是打不开的,Sampling 打得开。于是可以从他们之间的差异着手分析。

用 dotTrace 进行性能分析时,各种不同性能分析选项的含义和用途 一文中,我们可以得知,只有 Timeline 用到了 ETW,而这个是一个系统功能。也许是系统功能无法访问呢?毕竟这种事情还是非常常见的。

于是果然在 Timeline is not working 找到了解决方法 —— 你需要开启你所在的用户组对 Performance Monitor 的访问权限。

现在开始解决:

启动“计算机管理”

在你的 Windows 10 搜索(或者小娜)中搜索 “计算机管理”,英文用户搜索 “Computer Management”。然后启动它。

搜索并启动计算机管理
▲ 搜索并启动计算机管理

配置性能监视器用户组

在计算机管理中,找到 “计算机管理 -> 系统工具 -> 本地用户和组 -> 组”,点开后在中间的列表中找到 “Performance Monitor Users”。

对于英文的系统,对应的路径为 “Computer Management -> System Tools -> Local Users and Groups -> Groups”,然后一样找到 “Performance Monitor Users”。

找到 Performance Monitor Users
▲ 找到 Performance Monitor Users

为了照顾中文用户,我找小伙伴帮忙截了一张中文的图:

中文版的设置路径
▲ 中文版的设置路径

添加自己作为用户组的成员

双击 Performance Monitor Users,按照以下的步骤将自己添加到用户组中。

将自己添加到用户组中
▲ 将自己添加到用户组中

感谢 林德熙 再次帮我截到一张中文版的图片:

中文版的添加
▲ 中文版的添加

你已经完成了

你已经修复了问题,建议注销并重新登录 Windows,当然也可以考虑重启。

重启后再次尝试使用 Timeline 选项启动进程进行性能分析应该可以正常。


参考资料

本文会经常更新,请阅读原文: https://walterlv.com/post/dottrace-timeline-not-working.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 (walter.lv@qq.com)