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