截取方法逐行

时间:2011-09-08 19:34:36

标签: c# logging methods aop interceptor

在c#中,是否有任何可行的方法在运行时拦截方法一行一行?

感兴趣的具体应用是动态记录:

如果方法体内的某些东西引发异常,那么在后续执行中,该方法的每一行都会以某种方式记录。在编译时不知道哪些特定方法会抛出异常,因此该技术应该能够干扰源代码中的大多数方法(可以事先以某种通用方式准备)

在虚构的世界中,拦截器还会公开参数,以便于识别和评估最后一行代码的具体细节。

但鉴于这可能根本不可能,是否有适用于此类工具的粗略代理?

一如既往地感激不尽。

1 个答案:

答案 0 :(得分:2)

我相信唯一接近你想要的是ELMAH。你可以修改ELMAH做东西 - 所以我猜你可以用它作为起点。然而,获得逐行类型功能的唯一方法是编写自己的调试器 - 在调试信息(您提到的pdb文件)中定义的每一行的int 13s中弹出 - 它是很多工作。

使用ELMAH,您可以看到很多关于系统状态的信息,最重要的是堆栈跟踪。