변수의 값을 보려고하는데 디버거가 나에게 "????"값을 표시합니다. 이것은 통화 변수에서 발생하지만 다른 유형에서는 발생하지 않는 것 같습니다 (Double 및 열거 형은 괜찮습니다).Delphi 디버거에 ??? 통화 변수에 대한
델파이 (10) 업데이트를 사용하여 Windows XP SP 3 디버깅하고있어 2
내가 사용하는 과정은 다음과 같습니다
- 는 BDS IDE에서 프로젝트를 빌드합니다.
- 서비스가 살아있는 것으로 예상되는 디렉토리에 exe를 복사하십시오.
- 서비스를 시작하십시오. 로컬에서 실행 중이며 원격 디버깅을 시도하지 않습니다.
- 서비스 프로세스에 연결 (실행 | 프로세스에 연결).
- 프로세스가 내 중단 점에서 중지되므로 연결이 잘된 것처럼 보입니다.
- 변수의 값을 계산하십시오. 변수 이름 위에 마우스를 올리면
- :
내가 해봤 변수를 알아보고자 하였다. 일반적으로이 값이 표시되지만이 경우 아무 것도 표시되지 않습니다 (즉, 팝업이 표시되지 않음).
????
값을 표시합니다.????
값이 표시됩니다.{
값이 표시됩니다.통화와 관련이있는 것 같아서 변수 유형을 통화에서 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
사람이 수 이 문제의 원인을 제시하고 어떻게 작동하게 할 수 있습니까?
편집 : Currency 변수를 레이블에 서식 지정하는 단추가있는 폼으로 구성된 테스트 프로그램을 시도했습니다. 위에서 설명한대로 디버깅 (프로세스에 연결) 등 디버거가 올바른 값을 보여줍니다. 이제 문제가 서비스 디버깅과 관련이 있는지 궁금해 ...
감사합니다. Tobias, 나는 당신의 제안을 시도했다. 그리고 디버거는 "E2268 정의되지 않은 함수 'Int64'를 호출하여 더 큰 문제가 있다고 생각하게 만들었고 결국에는 내 기호가 올바른 위치에 있지 않음을 발견하게되었다. 설명을위한 나의 대답). 테스트 응용 프로그램을 할애 해 주셔서 감사드립니다. – WileCau