gpt4 book ai didi

delphi - 有什么方法可以在编译时添加 .map 文件作为项目的资源吗?

转载 作者:行者123 更新时间:2023-12-03 15:12:45 27 4
gpt4 key购买 nike

我想将 map 文件添加为资源,然后在每次执行系统时提取该文件,以确保 map 文件始终正确,并使支持的生活更轻松。在Delphi 7中,我可以使用 map 文件作为资源来编译该项目,但是 map 是错误的,因为当引发异常时,调用堆栈是错误的。在 Delphi Seattle 中,我什至无法编译,因为它尝试在生成 map 之前添加资源。我知道我可以在编译后阶段添加文件,但是有什么方法可以在编译/构建时执行此操作吗?抱歉,如果我不是很具体,这是我的第一个问题。谢谢。

更新

在阅读了一些答案后,我做了一些研究。我已经在我的项目中使用了 JEDI 异常单元,但我不认识 JEDI 调试专家。它完全符合我的要求,甚至更多。JEDI 调试专家将.map 文件转换为.jdbg 文件,这是map 的加密文件(map 只是一个文本文件)。此外,jdbg 文件比 map 小 12% 左右。它还具有将 jdbg 插入二进制文件 (exe) 的选项。为此,我启用了以下选项:

  • 项目 -> JCL 调试专家 -> 生成 .jdbg 文件 -> 对此项目启用

  • 项目 -> JCL 调试专家 -> 将 jdbg 数据插入二进制文件 -> 对此项目启用

  • 项目 -> JCL 调试专家 -> 转换后删除 map 文件 -> 对此项目启用(当然,如果您想删除文件)

要在 IDE 之外使用此工具(例如使用 Jenkins),我必须构建 JEDI\jcl\examples\windows\debug\tools\MakeJclDbg.dpr 中可用的项目。 build后会在jcl的bin目录下生成exe文件。使用方法:

MakeJclDbg -J -E -M map 文件名

J - 创建 .JDBG 文件

E - 将调试数据插入可执行文件

M - 转换后删除 MAP 文件

可执行文件必须与 MAP 文件位于同一目录中。这将创建 jdbg 文件(基于 map 文件),插入到 exe 中并删除 map 。有了这个(以及 JEDI 的异常单元),当引发异常时,我可以使用堆栈跟踪、系统使用的所有 dll 的版本、操作系统信息等,并将所有这些发送到电子邮件。

我意识到 Embarcadero 也有他们的 bpl 的 jdbg 文件,所以我认为他们也使用 JCL 工具。

最佳答案

不是,映射文件是在程序输出链接后生成的。不可能将尚未生成的 map 文件作为资源合并到项目中。

关于delphi - 有什么方法可以在编译时添加 .map 文件作为项目的资源吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40427003/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com