Con*_*tah 15
他们所做的似乎是重写你的程序集并在每个方法中添加一个try/catch块(除了你明确排除的那些).catch获取所有局部变量的值.所以,如果我有代码:
private int Add(int o1, int o2) {
return o1+o2;
}
Run Code Online (Sandbox Code Playgroud)
它会将其修改为:
private int Add(int o1, int o2) {
int ret = 0;
try {
ret = o1+o2;
}
catch (Exception e) {
SpecialExceptionHandler.HandleException(e, new object[]{o1, o2});
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
非常棘手......所以,它将显示异常发生时参数和当地人的价值.
那么,它是否说局部变量?在你引用的文章中没有这么说.我怀疑它执行堆转储,并允许您检查静态和实例变量.
话虽如此,我想他们可以安装某种全局错误处理程序(有一些异常过滤器甚至在catch或finally块之前执行),它们使用本机代码来抓取堆栈的内容.这可以提供对局部变量的访问.
基本上,如果它在解开之前设法抓住堆栈(但是他们这样做),他们可以得到你的局部变量.如果RedGate代码只有在达到顶层时才会介入,我怀疑它只是堆值.
你自己试过这个产品吗?你能链接到它吗?
| 归档时间: |
|
| 查看次数: |
5314 次 |
| 最近记录: |