XE2를 사용한 원격 디버깅-문자열 표시
DElphi XE2 (업데이트 # 4)와 Windows XP 대상간에 대규모 앱을 원격 디버깅하고 있습니다. PAServer가 대상에서 실행 중이고 응용 프로그램이 제대로 작동하고 중단 점에서 중지됩니다 (그 성취가 얼마나 힘들 었는지 믿지 않을 것입니다-힌트-DPROJ를 삭제하고 XE 이전의 IDE를 통해 수행 한 경우 다시 시작하십시오).
로컬 변수와 시계의 디스플레이는 로컬에서 디버깅 할 때 볼 수있는 '일부 문자열'형식의 일반적인 디스플레이와 비교하여 이상한 형식으로 내 문자열을 표시합니다. 내가 참조:
누구든지 문자열이 이런 식으로 표시되는 이유를 말할 수 있습니까? 또한 아직 할당되지 않은 출력 변수의 {} 사이에 상당히 많은 {NULL}과 가비지가 발생합니다. 감사.
. 이 형식은 넓은 문자열을 나타냅니다. Windows 7에서 간단한 앱을 사용해 보았고 다음과 같은 결과를 얻었습니다. 중단 점의 내 앱 :
표시된 로컬 문자열 변수 :
잘린 'Hello'에 유의하십시오. XE2는 때때로 원격 유니 코드 문자열에 문제가있는 것 같습니다. 내 PaServer는 버전 1.0.2입니다. 누구든지 이것이 최신인지 확인할 수 있습니까? '업데이트 # 4에서 가져온 것 ...
문자열 값 주위에 {}가있는 이유를 잘 모르겠습니다. 내 직감은 값이 원격 실행에서 오는 것을 보여주는 것입니다.하지만 S
최적화로 인해 잘리는 사실을 알고 있습니다. ..
{$O-} // Disable Optimization
var
S: AnsiString;
S2: UnicodeString;
begin
S := 'Hello';
S2 := 'Hello2';
ShowMessage(S2);
end;
{$O+} // Enable Optimization
이제 S
디버깅 할 때 'Hello'(variable의 ) 값이 그대로 유지됩니다. 마찬가지로 할당 된 값을 사용하는 경우 S
:
var
S: AnsiString;
S2: UnicodeString;
begin
S := 'Hello';
S2 := 'Hello2';
ShowMessage(S + S2);
end;
Delphi의 최적화는 이제 S
유효한 범위 내에서 사용되고 있음을 식별 하므로 값이 보존됩니다.
따라서 "버그"라고 부르는 것은 실제로 Borland / Inprise / Codegear / Embarcadero가 의도 한대로 정확히 "컴파일러 기능"입니다.
(@Dave에서 코드를 복사하고 있습니다)
var
S1: AnsiString;
S2: UnicodeString;
begin
S1 := 'Foo';
S2 := 'Bar';
ShowMessage(Format('%s!', S2));
end;
여기에서 로컬 var S1은 어디에도 사용되지 않기 때문에 최적화되어 있으므로 값이 더 이상 상대적이지 않습니다.
로컬 컴퓨터에서 실행 해보세요. S1이 보이 시나요?
관련이 있는지 확실하지 않지만 "Format"등과 같은 특수 명령이 포함 된 System.AnsiStrings를 알고 있습니다. 다음과 같은 것을 사용하면 문제가 해결 될 수 있습니다.
var
S1: AnsiString;
S2: UnicodeString;
begin
S1 := 'Foo';
S2 := 'Bar';
ShowMessage(Format('%s!', S2));
end;
또한 몇 가지 공개 된 버그가 있습니다. 그 중 하나를 배제하기 위해 어떤 특정 버전의 OS 및 도구를 사용하고 있습니까 (예 : Win7 x64 Ultimate 등)?
프로젝트-> 옵션-> Delphi 컴파일러-> 연결-> 원격 디버그 기호 포함 = true
참고 URL : https://stackoverflow.com/questions/11631625/remote-debugging-with-xe2-display-of-strings
'developer tip' 카테고리의 다른 글
traceview 대신 Eclipse 플러그인 TPTP로 Android 앱 프로파일 링 (0) | 2020.12.13 |
---|---|
다른 패키지의 S4 메서드를 확장 할 때 Rd 파일 이름 충돌 (0) | 2020.12.13 |
"아직 구현되지 않음"을 알리는 방법은 무엇입니까? (0) | 2020.12.13 |
knitr로 애니메이션 된 rgl 그래프 (0) | 2020.12.13 |
iframe 콘텐츠 높이를 설정하여 동적으로 자동 크기 조정 (0) | 2020.12.13 |