【问题标题】:VSIntr no data is collectedVSIntr 未收集数据
【发布时间】:2018-07-03 17:35:44
【问题描述】:

我正在尝试检测我们的应用程序以寻求性能优化,但我无法从中获取任何数据。我主要对函数运行时间以及它们被调用的次数感兴趣。

你能指出我的过程中的缺陷吗?

这是我的工作:

1. VSInstr MyAssembly.dll

这会创建仪器的 dll(如两倍大小)并备份原始文件。 我收到关于强名称事物的警告,所以第 2 步

2。 sn -Ra MyAssembly.dll TheKeyFile.snk

说辞职成功了

3. VsPerfCLREnv /traceon

设置环境变量

4.运行程序。我在要调查的步骤之前进行。

5. VsPerfCmd /start:trace /output:../Reports/Report.vsp

开始跟踪

6.单击按钮执行该过程(应用创建)并等待完成

7. VSPerfCmd /shutdown

停止追踪。

8. VSPerfCLREnv /off

恢复正常环境

最后,我检查了 Report.vsp 文件。这是一个 148KB 的文件,在 VS2017 中打开时会抛出这两个错误弹出窗口并且无法打开任何内容:

  • 文件不包含数据缓冲区
  • 分析报告失败

【问题讨论】:

    标签: c# dll profiling instrumentation vsperfmon


    【解决方案1】:

    解决办法是

    • 使用 /globaltraceon 代替 /traceon
    • 首先运行 VsPerfCmd /start:trace,然后才启动服务
    • 调用 VSPerfCmd /processon:[PID] 以附加到进程
    • 完成后停止服务(否则 /shutdown 不会完成)

    所以步骤看起来像这样:

    1. VSInstr MyAssembly.dll
    2. sn -Ra MyAssembly.dll TheKeyFile.snk
    3. VsPerfCLREnv /globaltraceon
    4. 在手动启动时设置服务
    5. 重启电脑
    6. VsPerfCmd /start:trace /output:Reports/Report.vsp
    7. 手动启动服务
    8. VsPerfCmd /processon:(在任务管理器中查找)
    9. 随心所欲地衡量
    10. 停止服务
    11. VsPerfCmd /shutdown

    【讨论】:

      猜你喜欢
      • 2018-04-27
      • 2016-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多