创建一个新的 .Net Profiler Api

Posted

技术标签:

【中文标题】创建一个新的 .Net Profiler Api【英文标题】:Create a New .Net Profiler Api 【发布时间】:2010-04-08 07:39:35 【问题描述】:

我是 .Net Profiler 和 Visual C++ 的新程序员

我阅读了很多关于 .Net Profiling 的论坛和博客,我有这个问题。

我的 Profiler 应用程序必须是非托管代码,或者我可以在我的应用程序中使用 .Net 中的某个类?什么类型的项目我必须用 MFC 或 .. 创建 ATL?

另一个问题是如何注册我的分析器 dll 文件,以便我的计算机的每个应用程序都使用此分析器?

重写方法IL的最佳情况在哪里(Enter method of profiler or JITCompilationStarted)?

如何获取旧方法的输入变量并发送到新方法?

如何更改属性或整个类的 IL?

我想要更改我的 dll 的所有日期时间格式,我认为我必须在 JITCompilationStarted 中搜索这些方法的名称,然后重写该方法,你有更好的解决方案吗?非常感谢。

【问题讨论】:

这可能对你有帮助:eggheadcafe.com/software/aspnet/30067403/… 【参考方案1】:

你想试试这个很好。我建议您注意some old ideas about profiling that are less than helpful,并尝试改进它们。

我建议主要关注代码行,而不是函数,并且获得的最有用的统计数据是,对于每一行,它负责的时间百分比(即在调用堆栈上)。 (获取百分比的好处是您不必关心事情需要多长时间,它们被调用了多少次,或者它们是否与其他进程竞争。)

我认为获取该信息的最佳方式是通过在随机挂钟时间采集的堆栈样本。不要仅仅因为它们在程序被阻塞时出现而排除样本,除非您想对不必要的 I/O 视而不见。一个好的方法是让用户打开/关闭采样,这样就不会在等待用户输入时采集大量样本。

RotateRight/Zoom 是采用这种方法的良好分析器的一个示例。祝你好运。

【讨论】:

感谢您的回答,但我完全不明白 1. 此链接有问题,请更正! 2. 如何在我的 COM 应用程序中使用堆栈? 3. 我的分析器想在 JIT 编译之前更改任何关于日期时间的函数!如何使用 Stack 更改编译? 4.我的应用程序是在windows而不是linux!再次非常感谢。 @daniel:1. 我不确定这两个链接有什么问题。 3. 堆栈采样不需要有关日期/时间的任何信息。 4. 我只是以 Zoom 为例——堆栈采样适用于任何环境。 2. 我帮不了你。各种 IDE 可以“暂停”并获取调用堆栈,所以我假设有办法。

以上是关于创建一个新的 .Net Profiler Api的主要内容,如果未能解决你的问题,请参考以下文章

有啥方法可以在 Sql Profiler 或类似工具中获取 .net 堆栈跟踪?

禁用菜单项时,如何将 VS Profiler 2012 附加到 ASP.NET 解决方案?

在不访问 SQL Server Profiler 的情况下分析 ADO.NET 语句

有关 SlimTune Profiler for .NET 的帮助,如何分析控制台应用程序?

SQL Server Profiler - 无法加载 pfclnt.dll

快速上手sqlserver profiler