我试图查看变量的值,但调试器向我显示的值为“”。????”这似乎发生在货币变量上,但不发生在其他类型上(double和枚举类型都可以)。
我正在使用Delphi10更新2在Windowsxpsp3上进行调试。
我使用的过程是:
-
在BDS IDE中构建项目。
-
将exe复制到服务预期所在的目录。
-
启动服务。它在本地运行,我不想远程调试。
-
附加到服务进程(运行附加到进程)。
-
进程在我的断点处停止,因此附加似乎正常。
-
计算变量的值。
要评估我尝试过的变量:
-
将鼠标悬停在变量名上。通常这会显示值,但在这种情况下,它不会显示任何内容(即没有弹出窗口)。
-
右键单击变量名,debug、evaluate/modify显示值为
????
.
-
右键单击变量名,debug,add watch at cursor显示值为
?????
.
-
“局部变量”窗口显示的值为
{
.
它似乎与货币有关,所以我尝试将变量类型从货币更改为double,当我重新运行测试时,调试器显示了正确的值。
我要评估的变量是一个局部变量,没有什么棘手的事情要做,例如:
function FooBar: Boolean;
var
foo: Currency;
bar: Double;
begin
foo := 0; // Breakpoint next line, evaluate foo shows "????"
bar := 0; // Breakpoint next line, evaluate bar shows "0"
...
end;
我认为相关的项目选项包括:
Compiler
Code Generation
Optimization = Off
Stack frames = Off
Pentium-safe FDIV = Off
Syntax options
Strict var-strings = On
Complete boolean eval = Off
Extended syntax = On
Typed @ operator = Off
Open parameters = On
Huge strings = On
Assignable typed constants = Off
Runtime Errors
Range Checking = On
I/O Checking = On
Overflow Checking = On
Debugging
Debug Information = On
Local Symbols = On
Debug Info = On
Definitions Only = On
Assertions = On
Use Debug DCUs = Off
Linker
Map file = Detailed
Linker output = Generate DCUs
Exe and DLL options
Include TD32 debug info = On
Include remote debug symbols = On
有人能提出是什么导致了这一切,以及我如何使之起作用吗?
编辑:
我尝试了一个测试程序,它由一个表单和一个按钮组成,这个按钮将一个货币变量格式化为一个标签。调试如上所述(附加到进程等),调试器显示了正确的值。现在想知道问题是否特定于调试服务…