当前位置: 首页 > news >正文

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

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


本文内容

    • dotTrace 的性能分析选项
    • 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 选项启动进程进行性能分析应该可以正常。


参考资料

  • Timeline is not working: issue solution for different Windows versions – .NET Tools Support - JetBrains
  • Can’t start ETW collector. – .NET Tools Support - JetBrains

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

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

知识共享许可协议

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

相关文章:

  • 了解 .NET/C# 程序集的加载时机,以便优化程序启动性能
  • git 如何更可靠地解决冲突?
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • 文件被占用?系统自带的“资源监视器(resmon)”也能帮你找到占用它的真凶
  • Windows 系统文件资源管理器的命令行参数(如何降权打开程序,如何选择文件)
  • 为 .NET 各种开发工具设置网络代理,提升在大陆的网络性能
  • 如何在旧版本的 .NET Core / Framework 中使用 C# 8 的异步流(IAsyncDisposable / IAsyncEnumerable / IAsyncEnumerator)
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • 为什么实现 .NET 的 ICollection 集合时需要实现 SyncRoot 属性?如何正确实现这个属性?
  • 为什么不应该公开用来同步的加锁对象?为什么不应该 lock(this)/lock(string) 或者 lock 任何非私有对象?
  • WPF 中如何创建忽略 DPI 属性的图片
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • Win32 方法 CreateFile 中选择合适的文件打开模式(CREATE_NEW, CREATE_ALWAYS, OPEN_EXISTING, OPEN_ALWAYS, TRUNCATE_EXI
  • 使用 Kestrel 为你的 ASP.NET Core 服务添加 https 支持
  • 三种方法为 ASP.NET Core 对外服务添加 https 支持(kestrel / frp / nginx)
  • [PHP内核探索]PHP中的哈希表
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • JavaScript-如何实现克隆(clone)函数
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • android 一些 utils
  • C学习-枚举(九)
  • echarts花样作死的坑
  • gf框架之分页模块(五) - 自定义分页
  • Java程序员幽默爆笑锦集
  • Java读取Properties文件的六种方法
  • JDK9: 集成 Jshell 和 Maven 项目.
  • js写一个简单的选项卡
  • js学习笔记
  • k8s如何管理Pod
  • Linux链接文件
  • ng6--错误信息小结(持续更新)
  • React的组件模式
  • scala基础语法(二)
  • Vue实战(四)登录/注册页的实现
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 大快搜索数据爬虫技术实例安装教学篇
  • 缓存与缓冲
  • 简单数学运算程序(不定期更新)
  • 将 Measurements 和 Units 应用到物理学
  • 通过几道题目学习二叉搜索树
  • puppet连载22:define用法
  • # centos7下FFmpeg环境部署记录
  • #android不同版本废弃api,新api。
  • $L^p$ 调和函数恒为零
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (办公)springboot配置aop处理请求.
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (转)nsfocus-绿盟科技笔试题目
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .Net - 类的介绍
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)