3

我正在尝试使用 Visual Studio 2012 Ultimate对 C# 和 CLI 的 C5 通用集合库进行性能分析。由于该项目没有可执行文件,我在解决方案中创建了一个新的控制台应用程序项目。该项目包含一个简单的类,该类具有一个主要方法,用于创建具有大量元素集合的数据结构之一。问题是我的 CPU 采样总是返回以下输出:

Profiling started.
Profiling process ID 2684 (C5.Performance).
Process ID 2684 has exited.
Data written to C:\<some path>\C5\C5.Performance130904.vsp.
Profiling finished.
PRF0025: No data was collected.
Profiling complete.

和一个确认框,上面写着PRF0025:未收集数据。我尝试更改集合大小,以便 CPU 有更多工作要做,但没有任何运气。我在进行 .NET 内存分配分析时没有问题。

我在 OSX 主机上的 VirtualBox 上运行 Windows 7。

4

2 回答 2

5

我遇到了同样的问题。共同的因素是VirtualBox。

CPU 采样在 VirtualBox 中并不总是有效。这与 VirtualBox 中的一个错误有关,它没有正确实现硬件时钟。我怀疑问题可能是特定于硬件的,它可能在某些机器下工作,但在其他机器上不行。我确定它在我的硬件配置下不起作用。

有关详细信息,请参阅以下链接:

详细说明问题的 VirtualBox 错误票

一个 ServerFault 问题,包含有关该问题的详细答案

我没有解决问题的方法,但这绝对是 VirtualBox 中存在的问题。

于 2014-10-08T03:19:35.643 回答
4

Collect .NET object allocation information在属性页下启用:

  1. Performance Explorer中,右键单击性能会话,然后单击Properties
  2. 在“性能会话 属性页”对话框中,单击“常规”选项卡,然后选中“收集 .NET 对象分配信息”复选框。
  3. 要收集 .NET 对象生命周期数据,请选中同时收集 .NET 对象生命周期信息复选框。
于 2013-09-06T20:21:07.917 回答