加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用XE2远程调试 – 显示字符串

发布时间:2020-12-15 05:25:59 所属栏目:大数据 来源:网络整理
导读:我远程调试一个大型应用程序之间的DEIphi XE2(更新#4)和Windows XP目标。 PAServer正在目标上运行,应用程序运行正常,并在断点停止(你不会相信这个成就是多么的困难 – 提示 – 删除您的DPROJ,并重新启动,如果它已经通过任何IDE之前的XE)。 我注意到,局
我远程调试一个大型应用程序之间的DEIphi XE2(更新#4)和Windows XP目标。 PAServer正在目标上运行,应用程序运行正常,并在断点停止(你不会相信这个成就是多么的困难 – 提示 – 删除您的DPROJ,并重新启动,如果它已经通过任何IDE之前的XE)。

我注意到,局部变量和手表的显示显示我的字符串以一种奇怪的格式相比,通常显示的’一些字符串’格式,在本地调试时看到。我懂了:

任何人都可以告诉我为什么这样显示字符串?我也得到相当多的{NULL}和{}之间的垃圾在输出变量尚未分配。
谢谢。

。我看到这个格式表示宽字符串。我在Windows 7上尝试了一个简单的应用程序,并得到以下结果。我的应用程序在断点:

显示的本地字符串变量:

注意截断的“Hello”。看来XE2有时会出现远程Unicode字符串的问题。我的PaServer是版本1.0.2。任何人都可以检查这是最新的? ‘从更新#4取得的Twas …

解决方法

我不完全确定为什么你有{}围绕字符串值,我的预感是,它是证明值是来自远程执行 – 但我知道一个事实,S被截断,由于优化… …
{$O-} // Disable Optimization
var
  S: AnsiString;
  S2: UnicodeString;
begin
  S := 'Hello';
  S2 := 'Hello2';
  ShowMessage(S2);
end;
{$O+} // Enable Optimization

现在,您将注意到,调试时“Hello”(变量S的)值保持不变。同样,如果您使用分配给S的值:

var
  S: AnsiString;
  S2: UnicodeString;
begin
  S := 'Hello';
  S2 := 'Hello2';
  ShowMessage(S + S2);
end;

Delphi的优化现在识别S在其有效范围内被使用,因此值被保留。

所以,你所谓的“错误”实际上是一个“编译器功能”,正如Borland / Inprise / Codegear / Embarcadero的意图。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读