6

在 Delphi 中调试时,异常会正确地告诉我导致错误的代码行,但我无法访问任何局部变量。这是调试器的限制吗?还是我错过了一些简单的东西?目前我只好把所有的局部变量都镜像到一个全局的就行了,重新编译程序,希望能再次出现同样的异常。

例如

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

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

或者如果我有

MyInteger:=Trunc(MyFloat), 

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

4

2 回答 2

7

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

实施时我手头没有确切的版本,但它绝对是较新的版本之一。

于 2012-10-14T21:38:50.560 回答
1

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

为了克服这个问题,编写一个异常处理程序并在异常捕获块中伪造使用该变量。

于 2012-10-15T07:21:44.713 回答