Windows边栏环境中的代码分析

时间:2010-05-12 17:29:46

标签: javascript profiling windows-desktop-gadgets

有没有人知道我可以对我的Windows边栏小工具进行代码配置的方式?

我在IE8的“开发人员工具”中使用了代码分析工具,并在Visual Studio 2010中包含了代码分析,但我找不到包含System.* API的方法。小工具依赖(因为它是补充工具栏环境中的标准)。小工具还依赖于跨域AJAX请求;通常在补充工具栏环境中允许使用。

通过代码分析我主要是指:

  • 功能通话计数
  • 功能执行时间

我使用Visual Studio 2010和性能向导尝试了以下内容:

  • 选择“An ASP.NET或JavaScript应用程序”时使用“Instrumentation”模式。但是,小工具在Internet Explorer而不是Windows边栏中打开
  • 使用“Instrumentation”模式并选择“An executable”选项,然后选择Sidebar.exe。但是,我收到错误“错误VSP1030:无效,不匹配,或没有找到C:\ Users \ Matt \ Desktop \ Windows Sidebar \ sidebar.exe 的PDB文件”
  • 使用“CPU采样”模式并选择“An ASP.NET或JavaScript应用程序”。但是,小工具在Internet Explorer而不是Windows边栏中打开

使用Analyze中的“附加到处理”选项 - > Profiler菜单,我可以成功附加到sidebar.exe进程,但是探查器返回有关实际补充工具栏进程的数据,而没有关于我的小工具的信息。

我的小工具没有项目/解决方案文件。

此致 马特

1 个答案:

答案 0 :(得分:2)

我在VS Profiler团队中,所以请随时提出任何澄清问题。

如果您需要精确的指标(执行时间,通话计数),那么您应该使用检测。通过仪器,探查器将向您显示您所监测的任何二进制文件的数据以及一级被监护人(例如,如果您直接从已检测的二进制文件中调用string.Concat,则探查器将显示您调用它的次数以及如何长(总计)来电)。分析器不会显示您没有检测的二进制文件的数据。

您是否尝试过仪表分析?你看到了什么样的数据?

如果需要,您还可以尝试使用统计方法进行分析:采样。采样比仪器更轻,并且通常很好地作为第一步,在高水平上,你的CPU正在做最多的工作。通过采样,探查器以指定的时间间隔获取调用堆栈的快照(这类似于进入调试器以查看当前正在执行的内容)。然后聚合快照以创建调用树。

如果您让我更好地了解您的个人资料,我可以为您提供更多帮助。您使用VS或命令行中的探查器吗?你有补充工具栏小工具的VS解决方案/项目吗?

您还可以查看我们的blog或我们的MSDN documentation了解详情。


更新

探查器的JavaScript分析功能主要针对IE8,所以我不确定它是否会收集另一个进程的数据,比如sidebar.exe(我假设)托管IE JavaScript引擎。不过,您至少应该能够使用分析器来收集托管代码的数据。

对于检测,您需要使用第二个选项(“可执行文件”),在Performance Explorer中,您需要有两个目标:

  1. sidebar.exe, not 已检测(因为您没有PDB) - 您可以右键单击目标并取消选中“Instrument”选项以禁止检测
  2. foo.dll(无论您的Gadget DLL被调用),已检测 - 您可能必须手动添加此目标(右键单击Targets文件夹,选择“Add Target Binary ...”),但一定要启用“工具”选项并确保其PDB位于其旁边
  3. 要详细了解效果目标,请参阅this blog post。使用此设置,只需单击“开始分析”按钮。仪表应该会成功,您应该为您的小工具获取跟踪分析数据。

    要进行抽样,您可以启动或附加到流程。只有在以下情况下才能附加到该流程:

    • 该过程在v4 CLR上运行;或
    • 该过程具有正确的分析环境变量集(请参阅下面的含义)

    对v4之前的CLR过程进行概要分析需要在目标进程中设置一些环境变量。实际上,您需要终止sidebar.exe进程,然后使用探查器的命令行工具重新启动它。有关如何执行此操作的演练是available on MSDN

    另一个选项,即启动采样,可以从命令行(再次参考MSDN文章)或从VS UI完成。选择“CPU Sampling”和“可执行文件(.EXE文件)”,然后关闭当前正在运行的sidebar.exe实例,在Performance Explorer中右键单击新创建的目标,选择“Properties”,然后修改命令-line参数根据需要。然后启动分析器应该可以工作。

    如果你遇到更多问题,请告诉我。对不起,这并不容易。