如何附加和跟踪正在运行的.NET应用程序的方法调用?

如何附加和跟踪正在运行的.NET应用程序的方法调用?,.net,profiling,clr,trace,instrumentation,.net,Profiling,Clr,Trace,Instrumentation,我正在尝试附加和跟踪正在运行的C#(.NETFramework 4.0)应用程序中的方法调用。我没有应用程序的源代码。我所做的研究表明有两种方法可以进行这种分析,但我认为这两种方法都不符合我的要求: .NET评测API允许跟踪方法调用,但只有在应用程序启动时启用评测时才允许;分析API的“附加”功能不支持可用于跟踪方法调用的“ENTERLEAVE”回调 IL插装-这种方法依赖于在JIT编译方法时向每个方法的IL添加跟踪代码。但是在一个已经运行的应用程序中,我假定许多/大多数方法已经是JIT编译的

我正在尝试附加和跟踪正在运行的C#(.NETFramework 4.0)应用程序中的方法调用。我没有应用程序的源代码。我所做的研究表明有两种方法可以进行这种分析,但我认为这两种方法都不符合我的要求:

  • .NET评测API允许跟踪方法调用,但只有在应用程序启动时启用评测时才允许;分析API的“附加”功能不支持可用于跟踪方法调用的“ENTERLEAVE”回调

  • IL插装-这种方法依赖于在JIT编译方法时向每个方法的IL添加跟踪代码。但是在一个已经运行的应用程序中,我假定许多/大多数方法已经是JIT编译的,所以这种方法将无法跟踪这些方法

  • 以上是正确的吗?有人能提出一种方法来进行这种分析吗


    谢谢

    为什么不让探查器随应用程序一起启动,并让它在您与另一个应用程序交互之前不执行任何操作?这样你就可以勾选进入/离开/尾随呼叫事件。谢谢Shaun-这其实不是个坏主意,我真的没有想到这一点。理想情况下,我不想改变.NET应用程序的启动方式(例如,设置.NET评测API所需的环境变量),但如果技术上不可行,我认为您建议的方法可能是我能做的最好的方法。再次感谢您。如果您有任何其他使用分析API的实用程序,您只需小心—您通常可以在运行时记录分析程序连接到进程时查看事件日志。