问题标签 [clrprofiler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1471 浏览

c# - 从 CLRProfiler 运行应用程序时出现 UnauthorizedAccessException

我有一个尝试使用 CLRProfiler 分析的应用程序,它是用 .NET 4.0 编写的,并且 WPF 在 .NET Framework 4 Client Profile 上运行。应用程序在启动后不久加载一个数据文件,该文件的位置在 app.config 中(因此在程序运行时不会以交互方式选择它)。从 Visual Studio 或 Windows 资源管理器启动应用程序时,一切正常。

但是,当从 CLRProfiler 启动应用程序时,应用程序在UnauthorizedAccessException尝试加载文件时崩溃。

尝试解决此问题时,我将所述文件的完全控制权限授予我自己、域用户和所有人,但问题仍然存在。监视任务管理器时,显示的短暂进程已在我的用户 ID 下启动。

有谁知道如何用 CLRProfiler 解决这个问题?

0 投票
1 回答
1527 浏览

debugging - 托管时 CLRProfiler 未连接到 CLR

我有一个承载 CLR 的本机 Win32 应用程序,以使用 C# 作为一种复杂的“脚本”语言。

我遇到了内存泄漏,我决定尝试使用 Microsoft 的 CLR Profiler 进行调查。(我不确定泄漏是否得到管理,并且希望这个工具可以帮助揭示这一点,一方面。)

但是,当我告诉 CLRProfiler 启动我的(本机)应用程序时,尽管我的应用程序总是在运行的第一秒左右启动 CLR,但 CLRProfiler 继续显示提示Waiting for application to start common language runtime,即使我的应用程序显然正在运行其托管代码。

如果 CLRProfiler 是由仅托管程序用于启动 CLR 的存根启动的,而不是在应用程序显式加载和启动时,CLRProfiler 是否只能连接到 CLR MSCOREE.DLL?还是我只是做错了什么?

或者在启动 CLR 以使 CLRProfiler 与它相处时,我的本机应用程序需要做些什么(希望很简单)?

0 投票
1 回答
72 浏览

clrprofiler - Summary by CLRProfiler: Heap Statistics values are 0

I am using CLRProfiler, 64bit for .NET 4.

I am attaching CLRProfiler to a running iis worker-process running a single website.

All values in the Summary-view are always zero.

Only Heap Dumps has a value of 1 and I can see the Heap Graph.

Only if I attach to an exe using 'Profile Application' will I get any values in the Summary-view.

Does anybody have an idea why the Summary-view has no values?

0 投票
0 回答
36 浏览

.net - 如何剖析幸存的对象

我不太确定 CLR 探查器是否是正确的工具.. 但我想要实现的是能够查看内存中对象的状态,例如退出方法后是否被处理..

如果 CLR 分析器不是正确的工具,有人可以建议吗?

0 投票
1 回答
183 浏览

.net - CLR Profiler 和 0 堆统计

为什么使用 CLR 分析器的 ASP.NET MVC Web 应用程序的堆统计分配会得到 0?

在此处输入图像描述

0 投票
1 回答
338 浏览

.net - 捕获 ADO.net DB 查询运行时

我正在尝试为下面的 C# .net Web 应用程序捕获 Db 查询。

如果我通过制作它的代理来使用 DbProviderfactory,那么有办法做。但是,如果我像下面这样直接使用 SqlConnection 和 SqlCommand,而不是使用 DbProviderFactory,我如何跟踪我的数据库调用?

我知道有分析器可以跟踪这一点。但是,我想在我自己的程序中做到这一点。

基本上我需要在 Web 请求中分析 Db Connection 和 Db 命令,其中不使用 DbProviderFactories。我是为 .Net 开发分析器的新手,所以我希望有一些指导方针可以做到这一点。

谢谢。

0 投票
1 回答
442 浏览

c# - 如果我不收集垃圾,为什么服务器垃圾收集更快?

我正在编写一个数据结构,如果我<gcServer enabled="true" />在我的app.config文件中设置,程序会在 200 毫秒内添加 500,000 个项目。如果我设置<gcServer enabled="false" />它需要 300 毫秒。也就是说,将此标志设置为 false 会使持续时间延长 50%,如Stopwatch.

我想知道为什么这是因为我没有进行任何垃圾收集。我知道它有时会自动完成,但在使用 CLRProfiler 进行分析后,我可以确认正在发生 0 个集合:

在此处输入图像描述

有谁知道为什么会这样?如果垃圾收集器甚至没有运行,那么为什么服务器垃圾收集器要快得多?这是我检查速度差异的代码:

0 投票
2 回答
574 浏览

c# - 无法在 VS 2015 内存使用分析器中找到预期的对象

我有以下简单程序,我试图将其与 VS 2015 的与内存使用相关的诊断工具一起使用。

在分析此应用程序的项目时,我拍摄了几张快照,并希望看到1000装箱的List<string>+Enumerator对象。例如,我在 JetBrains 的dotMemory产品中得到这种信息。但由于某种原因,我无法在 VS 的工具中看到这些信息……我显然遗漏了一些东西……有人能指出我正确的方向吗?

在此处输入图像描述

mscorlib正如您在上面的快照中看到的那样,我仅在没有看到有关我正在执行的程序的任何信息的情况下获得有关模块的信息。我错过了什么?...下面的更多信息:

  • Start Diagnostic Tools Without Debugging在视觉工作室使用
  • 拍摄并打开快照后,我什至取消选择Collapse small objects查看这是否隐藏任何信息的选项,但这也无济于事。

更新(响应用户回答):我使用的是 dotMemory 4.4 版。以下是我从中获得的数据的快照。注意:确保在看到消息Collect Allocations后按任意键之前单击按钮Begin

在此处输入图像描述

0 投票
1 回答
265 浏览

c++ - CoreCLR 中的 Instrumentation Profiler - 将 HelperAssembly 加载到 dotnet 进程的方法

我正在尝试使用 linux centos7 中的 CoreCLR Profiler 来检测在 .NET Core 3.1 上运行的 .NET Core Web 应用程序。我已经设置了环境值 CORECLR_PROFILER 、 CORECLR_ENABLE_PROFILING 和 CORECLR_PROFILER_PATH ,其中我的 CoreCLRProfiler dll 附加到 dotnet.exe 并且它正在获取回调。

我能够获取所有回调,但是当我允许将代码注入 Web 应用程序的方法时,应用程序将崩溃(dotnet.exe 被杀死),因为它找不到注入的函数调用。

我用注入的函数体创建了辅助程序集(.NET 标准 2.0),并用强名称对其进行了签名,并将其安装到 GAC 中。并且还使用了来自 IMetaDataAssemblyEmit 的 DefineAssemblyRef()、DefineTypeRefByName() 和 DefineMemberRef() 来加载程序集及其类方法。并且还尝试将 dotnet 标准 dll 放在应用程序文件夹中。但是辅助程序集未加载到 dotnet.exe 进程。

我的助手程序集应该放在哪里..?和

如何从我的本机 coreclr 分析器将辅助程序集加载到 dotnet 进程?

如果我得到一些正确的方向来加载或使用辅助程序集来处理 dotnet 进程,那将非常有帮助。

提前致谢。

0 投票
0 回答
30 浏览

garbage-collection - CLR Profiler LOH 大小与按地址 LOH 大小的对象不匹配?

我正在使用 CLR 分析器检查我的程序的内存使用情况,并且我关心 LOH 分配。基本上,我将 10 个大小为 1 mb 的文件并行分配给 Azure 数据湖服务文件(使用 concurrentAppend API)。理论上,LOH 大小应该是 10 mb,对吧?在报告预览中(图片 1)-> 我看到 LOH 堆字节为 3.195 MB。当我按地址检查对象时(图 2)-> LOH 分配正好 10 MB(我通过在 LOH 栏上运行光标进行检查,发现 10 个地址,每个地址都有 1 mb system.byte[] 数据。

那么为什么我在预览报告中得到 3.199 MB?

CLR 探查器报告预览

按地址窗口的对象