为什么探测器不能附加?

问题描述 投票:3回答:1

我为.NET应用程序编写了一个小型分析器。它使用ICorProfilerCallback2界面。

分析器附加并适用于.NET 2.0应用程序,但不适用于.NET> 2.0(3.0,3.5,4.0)。当我启动使用.NET 4.0编译的exe时没有任何反应,但是对于.NET 2.0,启动程序启动。我在运行托管exe之前设置了以下变量

@Echo off
set Cor_Enable_Profiling=0x1
set COR_PROFILER={67D8965A-8686-2639-9C24-E1F7D13EE105}
set COR_PROFILER_DLL=e:\Debug\Profiler.dll
set COR_PROFILER_PATH=e:\Debug\Profiler.dll

知道为什么会这样吗?它甚至没有进入DllMain

.net profiler clr-profiling-api
1个回答
5
投票

蒂莫西

您讨论的问题可能包含在David Broman的帖子中: David Broman's CLR Profiling API Blog: Run your V2 profiler binary on CLR V4

对于CLR V4运行时,您应该在事件日志(使用事件查看器查看)中看到一些有用的信息,这些信息描述了探查器无法加载的原因。

如果您不想使用博客中讨论的COMPLUS_ProfAPI_ProfilerCompatibilitySetting设置,您还可以支持ICorProfilerCallback3界面以添加对V4运行时的支持。

使用CLR V4,您可能还需要考虑并行场景,其中V2和V4运行时都加载到单个可执行文件中。有关更多信息,请参阅David的另一篇题为“Profilers,进程内并行CLR实例和免费测试工具”的帖子(遗憾的是,由于垃圾邮件阻止,我也无法发布链接)。

© www.soinside.com 2019 - 2024. All rights reserved.