2016-07-07 50 views
0

最近我一直在评估PostSharp在错误报告方面的用法。发现.Net并没有提供任何特别简单的机制来获取栈帧内的值(例如参数),我一直在研究使用Postharp进行方法注入技术。PostSharp访问本地变量

这证明在使用OnEnter获取方法的参数值时非常有用,但是我仍然需要以某种形式缓存它。

但是,当涉及到访问局部变量时,因为它们在堆栈中,所以我不太确定使用postsharp或其他备用库可以实现/如何实现。我已经研究了Unmanaged API的Profiling和Debugging,这对于像生成错误报告那样简单的事情似乎是一种相当笨拙的方法。

回答

0

这对PostSharp来说是不可能的,我想用任何IL编织工具都很难实现。

您需要使用低级IL重写工具,如Cecil

Generating a minidump file当抛出异常时,这也是一个了不起的选择。

+0

我很怀疑,但我想我会问这个问题。基本上我们试图实现的是模拟我们以前使用的另一个工具,但是缺少更新和支持,我们不得不废弃,这是作为堆栈跟踪本地和参数值的一部分提供的。在生成和读取minidump文件时(我已经有学习如何读取PDB文件的痛苦),我也有点生疏。 –