什么是“有限调试信息”? (完整的“调试信息”会生成巨大的EXE文件)

2023-11-26

我最近安装了Delphi XE7。当我第一次编译一个旧应用程序时,当我看到 EXE 的大小增加了 10MB 时,我惊得下巴都掉了!

在“项目选项”中,我发现将“调试信息”设置为“有限调试信息”会将 EXE 大小减小到非常接近 Delphi XE 生成的 EXE 大小。 也许在 Delphi XE7 下“有限调试信息”相当于 Delphi XE 中的“调试信息”,因为它产生相同的 EXE 大小?

那么,为什么完整的“调试信息”使 EXE 如此之大(与 XE 相比)?我无法用有限的信息编译 EXE(我猜),因为我想完全访问调试工具(EurekaLog 也需要它)。
Embarcadero 的文档没有提及“有限”和完整调试信息之间的区别。

EurekaLog 文档适用于旧版本的 Delphi,因此它没有明确说明我是否可以使用新选项(仁慈的)“有限调试信息”或完整调试信息。我必须进行实验。


“有限调试信息”是一个仅影响 Android 目标编译器的选项。但是,由于所有编译器共享相同的接口,因此每个目标都会出现此选项。它仅适用于每个单独的对象 (.o) 文件中包含多少调试信息。对于 Android(和 iOS),调试信息格式为 DWARF。 DWARF 是一种非常详细的格式,可以包含有关给定单元中所有类型的非常详细的结构类型信息and对于给定单元“使用”的所有单元的所有类型。在“有限调试信息”下,所有使用的单元的类型信息是not生成的。这可能意味着某些字段和局部变量在调试时可能无法检查。

至于调试信息是否包含在最终的可执行文件中,这是由链接器选项控制的,而不是由编译器选项控制的。链接器将链接任何可用的调试信息。如果为 Android 构建并选择“调试信息”,则最终图像将包含更多信息并且更大。

现在我假设你的目标是Windows(你实际上并没有声明你是这样,但我会在这里使用我的心灵力量),在这种情况下,“有限调试信息”和“调试信息”是相同的事物。在 Windows 下,调试格式称为“GIANT”。你能说“讽刺”吗? DWARF 是一种极其冗长的格式,而 Embarcadero(Borland 最初的)自己的 GIANT 格式则更为紧凑。大小的增加只能来自于添加的运行时功能,并且可能来自更多地使用泛型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是“有限调试信息”? (完整的“调试信息”会生成巨大的EXE文件) 的相关文章

  • 如何追踪手柄泄漏?

    在我的一个应用程序中 我观察到句柄数量不断增加 在不使用应用程序的情况下 该数字大约每秒增加一次 因此后台处理代码的某些部分一定存在句柄泄漏 我如何追踪此类泄漏 有什么工具可以帮助解决这个问题吗 跟踪句柄泄漏时要寻找哪些模式 导致手柄泄漏的
  • 在 Delphi 2009 上安装最新版本的 Indy 10 [重复]

    这个问题在这里已经有答案了 是否有更新 Delphi 2009 中的 Indy 10 组件的分步指南 我读过正在卸载线程 https stackoverflow com questions 486210 what is the proper
  • DELPHI 和 WANT 或 NANT

    We use 巡航控制 net http confluence public thoughtworks org display CCNET Welcome to CruiseControl NET在 Delphi 2006 应用程序中进行持
  • 从 Delphi 调用 C# dll

    我用单一方法编写了 Net 3 5 dll 由Delphi exe调用 不幸的是它不起作用 步骤 1 使用以下代码创建 C 3 5 dll public class MyDllClass public static int MyDllMet
  • 查找Delphi项目中的所有编译错误

    我正在对我的 Delphi 项目进行一些重构 我希望能够做出改变 然后看看all项目中因该更改而中断的地方 类似于 Eclipse 列出项目的所有编译错误 在 Java 中 在 Delphi 中 我可以进行更改 然后重新编译我的项目 但编译
  • TColorProperty德尔福柏林10.1.2?

    我正在尝试将组件从 Delphi 7 转换为 Delphi Berlin 平面组件 https sourceforge net projects flatstyle https sourceforge net projects flatst
  • Delphi:写入后代类中私有祖先的字段

    我需要修复第三方组件 该组件的类具有私有变量 该变量由其后代主动使用 TThirdPartyComponentBase class private FSomeVar Integer public end TThirdPartyCompone
  • 如何释放 TInterfacedObject 中的 TObject 成员

    我知道接口对象是引用计数的 因此不需要手动释放它 但如果它有一个 TObject 继承成员 我是否应该在析构函数中手动释放该成员 考虑以下代码 program Project2 APPTYPE CONSOLE R res uses Syst
  • 对象的引用计数

    在我的代码中 我使用一个小的数据存储类 它是在不同的地方创建的 为了避免内存泄漏并简化事情 我想使用引用计数 所以我这样做了 type TFileInfo class TInterfacedObject IInterface 并删除了我对
  • 如何使 StringGrid 的列适合网格的宽度?

    我已经寻找解决方案很长时间了 但没有任何运气 有谁知道一个简单的方法来做到这一点 例如 我想拉伸网格的第二列以适应网格的宽度 Use the ColWidths财产 像这样 with StringGrid1 do ColWidths 1 C
  • 从 Delphi VCL 样式获取特定字形

    我想从 VCL 样式获取特定的位图 并将其设置为按钮上的图像 它实际上是帮助问号 在位图样式编辑器中是来自表单的 btnHelp 图像 要从 VCL 样式获取视觉元素 字形 您必须使用GetElementDetails和TCustomSty
  • Delphi XE7 Android 全屏(隐藏软键)

    如何在XE7中全屏显示 隐藏顶部 标题 和底部 软键 工具栏 在 XE6 中 我可以通过在应用程序部分写入来调整 AndroidManifest 以使我的应用程序全屏显示并且没有操作栏 android theme android style
  • Delphi 中表单分发与其生命周期相关的接口对象的安全方法?

    我有一个 Delphi 表单 它提供接口对象背后的功能 代码的其他部分也通过属于该表单的属性获取引用 我无法将接口功能委托给子对象 因为太多的功能是由表单上的控件 组件提供的 我无法使用 TAggregateObject 或 TContai
  • 如果加载 dll 找不到依赖项,有什么方法可以捕获错误吗?

    我正在编写一个 Windows 32 位程序 可以使用多个可能的 dll 之一 所以它尝试依次加载每个 dll 使用SysUtils SafeLoadLibrary如果加载成功 它就会使用该 dll 不幸的是 其中一些 dll 静态链接到其
  • 如何在按键时识别 unicode 键?

    我的应用程序使用 unicode 字符 并且我有几个文本字段 我想限制用户输入特殊字符 例如 begin if not Key in a z A Z 0 9 13 8 then Key 0 if Key 13 then bOk Click
  • 似乎有时 Delphi 是区分大小写的 - “覆盖方法应该与祖先的大小写匹配”

    今天我遇到了一个 奇怪 的提示 覆盖方法 xxxx 应匹配祖先 yyyy 的大小写 解决方案是完全按照祖先中的方式声明方法名称 我相信这是自 Delphi Net 编译器以来编译器中保留的东西 与祖先中完全相同的方法声明方法使编译器 沉默
  • TXMLDocument.Active := False 导致 FastMM4 错误消息“FastMM 检测到块在释放后已被修改”

    我们在 FullDebugMode 下使用 Delphi XE8 和 FastMM4 版本 4 992 会产生奇怪的效果 要重现效果 只需创建一个新的 TForm 应用程序 将 FastMM4 放入 DPR 文件的第一行 在表单上放置一个按
  • Delphi XE4 中是否可以更改应用程序短标题而不使其与项目 dpr 名称相同?

    我正在编写我的第一个由 delphi 驱动的 iPhone 应用程序 我已经创建了它 但我希望将其命名为 dpr 文件名称以外的名称 因为 dpr 文件不能包含空格 例如 EXE 名称并不总是与人们可能分配给应用程序的人类可读名称相同 而在
  • Delphi - 如何使用 iPhone 作为图片源通过 OpenDialog 获取目录

    我有一个 Delphi 应用程序 D2010 它允许用户通过 OpenDialog 选择 JPG 文件 当我从普通 Windows 目录中选择文件时 我的 TOpenDialog Filename 包含该文件的完整路径 并且我的代码可以正常
  • 在网格上拖动时拖动图像更改

    我正在 StartDrag 上创建自定义 DragObject 的实例 procedure TForm1 GridStartDrag Sender TObject var DragObject TDragObject begin DragO

随机推荐

  • 在 Spring Boot 中创建自定义 Jasypt PropertySource

    我正在使用 Spring Boot 创建一个访问数据库的简单 Web 应用程序 我通过设置来利用数据源的自动配置功能spring datasource 属性在application properties 一切都非常顺利 而且速度非常快 干得
  • 在 Libgdx 屏幕之间切换

    我仍在研究这个 libgdx 项目 并且正在尝试找出将屏幕更改为游戏屏幕的最佳方法 现在 当单击按钮时 我需要它转换到游戏屏幕 我已经看到了一些扩展游戏类的实现 但我不确定这里最好的方法是什么 这是主要的应用程序类 public class
  • Bootstrap 模式表单提交后不会关闭

    我需要做的是显示一个弹出窗口 向我的数据库添加一条新记录 我使用 bootstrap 3 我喜欢它 因为我没有使用一行 jquery 而且我有非常好的形式 显然它们是基于 jquery 我正在通过 ajax 验证我的表单 但现在的问题是我的
  • 为什么 .NET 中不检查异常?

    我知道谷歌搜索我可以找到合适的答案 但我更喜欢听听您的个人 也许是技术 意见 Java 和 C 在抛出异常方面存在差异的主要原因是什么 在 Java 中 抛出异常的方法的签名必须使用 throws 关键字 而在 C 中 您不知道在编译时是否
  • MySQL 选择 JOIN 3 个表

    我有三个基本表 tblUsers usrID usrFirst usrLast 1 John Smith 2 Bill Jones 3 Jane Johnson pm data id date sent title sender id th
  • WPF 日历:粗体指定日期?

    我正在创建一个窗口 该窗口使用 WPF 日历来浏览在所示月份的指定日期创建的文档 当日历更改月份时 我会在数据库中搜索该月创建的所有文档 并用它来创建该月内包含文档的日期列表 在日历控件中 我想将包含文档的日期加粗 就像 Outlook 将
  • 在 3D 中拟合直线

    是否有任何算法可以从一组 3D 数据点返回直线方程 我可以找到大量的资料来给出 2D 数据集中的直线方程 但没有一个是 3D 的 如果您试图从其他两个值中预测一个值 那么您应该使用lstsq与a参数作为自变量 加上一列 1 来估计截距 和b
  • 加快从 pyodbc 插入 SQL Server 的速度

    In python 我有一个从一个数据库中选择数据的过程 Redshift via psycopg2 然后将该数据插入到SQL Server via pyodbc 我选择执行读 写而不是读 平面文件 加载 因为行数约为每天 100 000
  • jQuery 插件也适用于动态创建的元素

    我正在编写一个 jquery 插件 它应该处理链接上的额外信息以指定打开行为 例如 我想支持如下标记 a href somewhere class openmode a a href somewhere class openmode a a
  • 用于文档创建的元数据中是否有 Firestore 时间戳?

    我想知道 Cloud Firestore 是否在元数据中为每个文档创建时间戳 如果是 该元数据是否可用 我知道我可以出于任意原因在文档中创建自己的时间戳 但我只对文档本身的创建时间感兴趣 提前致谢 对于最新的 firestore beta
  • SQL SERVER 表变量上的非聚集索引?

    如何在表变量上创建非聚集索引 创建表 risk rskid 整数 在 risk rskid 上创建非聚集索引 r rskid nc 这是行不通的 My proc 我该如何优化它 ALTER PROCEDURE dbo SPR LV004 T
  • PostgreSQL + Rails citext

    我正在尝试迁移到使用 PostgreSQL 8 4 的heroku 它有一个 citext 列类型 这很好 因为该应用程序是为 MySQL 编写的 有没有办法将 citext 与 Rails 一起使用 这样如果迁移在 MySQL 上运行 c
  • 如何使用 UIBarButtonSystemItem 更改 UIBarButtonItem 标识符? (迅速)

    我想用代码从 播放 更改为 暂停 来更改 UIBarButtonItem 的标识符 我怎样才能做到这一点 Thanks 1 初始化一个新按钮 change to play let button UIBarButtonItem barButt
  • 有没有办法在异常时启动 Ruby 调试器?

    有没有办法在代码抛出异常时启动 Ruby 调试器 而无需我像这样包装代码 begin do something rescue debugger end 我希望以这样的方式来实现 do something部分引发异常 调试器将启动 如果不必修
  • Java Filter 将未登录的用户重定向到登录页面

    我试图制作一个过滤器来阻止未登录的用户访问某些页面 为此 我制作了一个包含以下内容的过滤器类doFilter method HttpServletRequest request HttpServletRequest req HttpServ
  • 如何使用 Phonegap 重定向至 Android 或 iOS 中的 GPS 设置窗口以打开或关闭 GPS

    我想在 Phonegap 中实现像 Native android 这样的功能 其中当用户想通过按钮单击启用 GPS 时 它将被重定向到 android 或 IOS 的设置部分 以便用户可以点击 GPS 按钮 因为通过编程方式我们无法直接打开
  • 覆盖保存方法 - “ImageFile”对象没有属性“_commissed”

    我重写了保存方法 如下所示 并使用 get thumbnails 和 sorl 保存 但得到错误 ImageFile object has no attribute committed class HotelPhotos models Mo
  • 耙子中止! :name:Symbol 的未定义方法“map”

    我正在尝试将参数传递给 Rake 任务并访问我的模型 如 如何将命令行参数传递给 rake 任务 and Rails rake 任务是否提供对 ActiveRecord 模型的访问 然而添加 gt environment到这段代码 requ
  • 从 Windows 服务器发送 PHP 邮件

    我的页面上有一个表格 当用户点击 发送 按钮时 它应该发送一封电子邮件 其中包含他在表单中输入的详细信息 直到最近 该表单都托管在 Linux 服务器上 我对它没有任何问题 邮件已发送和接收 最近我不得不转移到共享 Windows 服务器
  • 什么是“有限调试信息”? (完整的“调试信息”会生成巨大的EXE文件)

    我最近安装了Delphi XE7 当我第一次编译一个旧应用程序时 当我看到 EXE 的大小增加了 10MB 时 我惊得下巴都掉了 在 项目选项 中 我发现将 调试信息 设置为 有限调试信息 会将 EXE 大小减小到非常接近 Delphi X