在Delphi中调试时,异常会正确告诉我导致错误的代码行,但我无法访问任何局部变量。这是调试器中的限制吗?还是我错过了一些简单的东西?目前,我必须将所有局部变量镜像到故障前的全局变量,重新编译程序并希望能够重复相同的异常。
例如
MyArray[I]:=Foo(...);
如果I
超出范围(边界检查已打开),我无法看到变量I
是什么,除非我将其镜像到前一行的全局范围调试变量。
或者如果我有
MyInteger:=Trunc(MyFloat),
且MyFloat
为6.1E+17
,我不知道它的价值是什么。
答案 0 :(得分:7)
在调用堆栈窗口中选择正确的行时,可以看到局部变量的值。在引发异常之前通常是一行或两行。
实施此版本后,我手边没有确切的版本,但它肯定是较新版本之一。
答案 1 :(得分:1)
据我所知,“问题”是由编译器引起的。编译器的优化功能就像垃圾收集器一样,它在不再使用时释放函数内声明的变量。
要解决此问题,请编写异常处理程序并在异常catch块中伪造使用该变量。