为什么dotmemory可以';t尝试连接到活动进程时收集内存流量和堆栈跟踪信息

为什么dotmemory可以';t尝试连接到活动进程时收集内存流量和堆栈跟踪信息,memory,profiling,Memory,Profiling,我有一个asp.net应用程序,在该应用程序能够提供服务之前,它需要构建一个非常大的本地缓存。我想分析代码的一个特定部分。我的应用程序非常庞大,我不想完全剖析它。我只想分析服务于请求的代码路径 我开始使用dotMemory跟踪我的应用程序内存使用情况。当我尝试附加到进程时 对话框上两个复选框的探查器选项:1)收集第N个对象2)收集内存流量无法检查 当尝试连接到活动进程时,为什么dotMemory无法收集内存流量和堆栈跟踪信息 我还尝试使用探查器API private void SomeMetho

我有一个asp.net应用程序,在该应用程序能够提供服务之前,它需要构建一个非常大的本地缓存。我想分析代码的一个特定部分。我的应用程序非常庞大,我不想完全剖析它。我只想分析服务于请求的代码路径

我开始使用
dotMemory
跟踪我的应用程序内存使用情况。当我尝试附加到进程时

对话框上两个复选框的探查器选项:1)收集第N个对象2)收集内存流量无法检查

当尝试连接到活动进程时,为什么
dotMemory
无法收集内存流量和堆栈跟踪信息

我还尝试使用探查器API

private void SomeMethod()
{
    // Here goes your code
    // ...

    // Get a snapshot
    if (MemoryProfiler.IsActive)
        MemoryProfiler.Dump();
}
我可以得到一个快照,但应用程序先运行,然后探查器连接。我也无法获得内存流量。

这是的限制。应在分析流程开始之前设置分配的标志COR_PRF_ENABLE_OBJECT_

如果无法在dotMemory下启动应用程序,我建议您在“时间线”模式下尝试JetBrains dotTrace。它使用ETW提供程序收集内存流量统计信息,并可能帮助您解决问题


p、 当您使用分析api时,如果您想收集堆栈跟踪,请不要忘记调用MemoryProfiler.EnableAllocations。

非常感谢。我调用MemoryProfiler.EnableAllocations,但有一个错误:“notsupport”。现在我已经删除了代码。我记不起确切的错误描述了。我把这个建议放在了后面,因为在附加的情况下,它不会有帮助。在附件的情况下,无法获取分配信息。错误是什么:如果(MemoryProfiler.CanControlAllocations)MemoryProfiler.EnableAllocations(),则以以下方式进行保护调用;