我正在尝试查看变量的值,但调试器显示的值为“????”。这似乎发生在货币变量上,但不是其他类型(双和枚举类型都可以)。
我正在使用 Delphi 10 Update 2 在 Windows XP SP 3 上进行调试。
我正在使用的过程是:
- 在 BDS IDE 中构建项目。
- 将 exe 复制到预期服务所在的目录。
- 启动服务。它在本地运行,我不想远程调试。
- 附加到服务进程(运行|附加到进程)。
- 该过程在我的断点处停止,因此附加似乎没问题。
- 评估变量的值。
要评估我尝试过的变量:
- 将鼠标悬停在变量名称上。通常这会显示值,但在这种情况下它不显示任何内容(即没有弹出窗口)。
- 右键单击变量名称,Debug、Evaluate/Modify 显示值为
????
。 - 右键单击变量名 Debug,Add Watch at Cursor 显示值为
????
. - 局部变量窗口显示的值为
{
。
它似乎与 Currency 有关,所以我尝试将变量类型从 Currency 更改为 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
谁能建议造成这种情况的原因以及我如何使它起作用?
编辑:我尝试了一个测试程序,该程序由一个带有按钮的表单组成,该按钮将货币变量格式化到标签上。如上所述进行调试(附加到进程等),调试器显示了正确的值。现在想知道问题是否特定于调试服务......