Delphi异常不让我看到局部变量

时间:2012-10-14 18:58:49

标签: delphi

在Delphi中调试时,异常会正确告诉我导致错误的代码行,但我无法访问任何局部变量。这是调试器中的限制吗?还是我错过了一些简单的东西?目前,我必须将所有局部变量镜像到故障前的全局变量,重新编译程序并希望能够重复相同的异常。

例如

MyArray[I]:=Foo(...); 

如果I超出范围(边界检查已打开),我无法看到变量I是什么,除非我将其镜像到前一行的全局范围调试变量。

或者如果我有

MyInteger:=Trunc(MyFloat), 

MyFloat6.1E+17,我不知道它的价值是什么。

2 个答案:

答案 0 :(得分:7)

在调用堆栈窗口中选择正确的行时,可以看到局部变量的值。在引发异常之前通常是一行或两行。

实施此版本后,我手边没有确切的版本,但它肯定是较新版本之一。

答案 1 :(得分:1)

据我所知,“问题”是由编译器引起的。编译器的优化功能就像垃圾收集器一样,它在不再使用时释放函数内声明的变量。

要解决此问题,请编写异常处理程序并在异常catch块中伪造使用该变量。