当前位置:  开发笔记 > 程序员 > 正文

运行DSharp示例时出现错误信息

如何解决《运行DSharp示例时出现错误信息》经验,为你挑选了1个好方法。

我在Delphi XE中安装了所有Dsharp软件包.但是,当我运行该示例时,我总是收到以下错误消息:

例外:修补:ObjAuto.GetTypeSize失败.你在方法中设置了断点吗?

有没有人找到这个错误的解决方法?

在此输入图像描述



1> David Heffer..:

该库正在尝试应用运行时代码补丁来修复ObjAuto.GetTypeSizeRTL函数中的缺陷.执行此操作的代码可以在这里看到:https://bitbucket.org/sglienke/dsharp/src/ad7c5983505f0117f1347f92d2bb96c07bdfda94/Source/Core/ObjAutoPatch.pas?at=master&fileviewer=file-view-default

呼叫FindMethodBytes失败.因为此函数即将修改执行代码以安装运行时补丁,所以它首先检查代码是否符合预期.它搜索代码,寻找该功能的已知签名.

无法找到该签名,因此无法安装补丁.因此错误消息.修补程序代码以这种方式失败的一些可能原因:

    在此代码中设置断点.通过临时修改代码以包含断点指令来实现断点.

    您正在编译和链接您自己的RTL修改版本.因此,功能签名是不同的.

    程序中的另一个单元也修补了同样的功能,第二次修补尝试失败的原因很明显.

    您正在使用与标准DCU具有不同签名的调试DCU.

    DSharp代码中存在缺陷.也许是一个错误的签名,没有在您的Delphi RTL版本上进行测试.那不太可能.也许您已经安装了未经Stefan测试的修补程序或Delphi更新.或者您可能尚未安装预期已安装的修补程序或更新.也许链接器剥离了很多代码(或者很少),签名搜索失败了.

问题可能是由于我还没有想到的其他原因.但从根本上说,这些都是同一主题的变种.运行时遇到的代码不符合预期.我建议您尝试找出原因,以便确定最佳方法.

鉴于此消息有很多可能的原因,我只是试图解释它的概念原因,但现在你真的要调试环境中的细节.


@bagus呃,这听起来不是一个很好的解决方案.我想了解一下.
推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有