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

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


dotTrace 的性能分析选项

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

Timeline 打不开?

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

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

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

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

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

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

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

解决方法

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

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

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

现在开始解决:

启动“计算机管理”

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

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

配置性能监视器用户组

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

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

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

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

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

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

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

用 dotTrace 进行性能分析时,Timeline 打不开?无法启动进程?也许你需要先开启系统性能计数器的访问权限
▲ 将自己添加到用户组中

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

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

你已经完成了

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

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


参考资料


我的博客会首发于 https://blog.walterlv.com/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。

如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。

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

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