老实说,我不经常抛出异常。讽刺的是,我抓到他们的次数更少。我目前在商店工作,我们让他们泡泡到avicode。然而,无论出于什么原因,avicode没有配置为在这些异常重新引起我的注意时捕获一些我需要的关键位。具体地说,我希望看到异常发生时的参数值和类的字段数据。
我猜想,使用大型的.Net服务套件,我可以创建一个静态方法来向上爬行堆栈,收集这些数据并将它们存储在一个字符串中,这样我就可以将它们粘贴在异常消息中。我真的不知道这样的方法需要多长时间才能执行,因为当我遇到这些场景之一时,性能不再是一个问题。
如果可能的话,我相信有人已经做到了。如果是这样的话,我很难找到它。我认为任何包含"exception“的搜索都会返回太多的结果。
无论如何,这是可以做到的吗?如果是这样的话,一些例子或链接将是很好的。
提前感谢你抽出时间来,罗伯特
发布于 2010-04-22 03:50:50
我准备在这方面犯错误,但我不认为通过遍历堆栈来提取参数值是可能的。当然,您不能使用StackTrace和StackFrame类做到这一点。
从安全的角度来看,这是有意义的,因为敏感信息可能被嵌入到堆栈中,未经授权的代码不应该访问这些信息。
如果当前堆栈帧没有捕捉到异常并在重新抛出之前将其参数值记录到Exception实例中,那么我担心您会倒霉。
发布于 2010-04-22 03:51:32
我认为您可以使用CLR调试API来获取更多信息,而不仅仅是堆栈跟踪,但我认为这并不容易。http://msdn.microsoft.com/en-us/library/bb384548.aspx
发布于 2010-04-22 05:26:11
我不确定这是否是您想要的,但作为AVIcode的顾问,我可以保证通过名称空间、类或方法收集参数和成员变量是一个简单的配置更改。您甚至可以配置诊断模式并收集本地变量。这个应用程序已经投入生产了吗?在生产中,但我会具体到一个类来启用。
https://stackoverflow.com/questions/2685604
复制相似问题