我想将地图文件作为资源添加到系统中,并在每次执行系统时提取文件,以确保地图文件始终正确,使支持工作更加轻松。在Delphi 7中,我可以将地图文件作为资源编译项目,但是地图是错误的,因为当引发异常时,调用堆栈也是错误的。在Delphi Seattle中,我甚至无法编译,因为它尝试在生成地图之前添加资源。我知道我可以在后编译任务中添加文件,但是否有任何方法在编译/构建时完成呢?
抱歉如果我不够具体,这是我在这里的第一个问题。谢谢。
更新:
在阅读了一些答案后,我进行了一些研究。我已经在我的项目中使用JEDI异常单元,但我不知道JEDI Debug专家。它恰好做我想要的和更多。
JEDI Debug专家会将.map文件转换为.jdbg文件,这是一个map的加密文件(map只是一个文本文件)。此外,jdbg文件大约比map小12%。它还提供了将jdbg插入二进制(exe)的选项。为此,我启用了以下选项:
项目-> JCL Debug专家->生成.jdbg文件->启用此项目
项目-> JCL Debug专家->将jdbg数据插入二进制文件->启用此项目
项目-> JCL Debug专家->转换后删除map文件->启用此项目(如果您想要删除该文件,当然)
要在IDE之外使用此工具,例如在Jenkins中,我必须构建位于JEDI \ jcl \ examples \ windows \ debug \ tools \ MakeJclDbg.dpr中的可用项目。构建后,它将在jcl的bin目录中生成exe文件。如何使用:
MakeJclDbg -J -E -M map_filename J-创建.JDBG文件
E-将调试数据插入可执行文件中
M-转换后删除MAP文件
可执行文件必须与MAP文件位于同一目录中。这将创建基于地图文件的jdbg文件,并将其插入exe中并删除地图。有了这个(和JEDI的异常单元),当引发异常时,我可以获得堆栈跟踪,系统中使用的所有dll版本,操作系统信息等,并将所有这些内容发送到电子邮件中。
我意识到Embarcadero也拥有他们自己的bpl的jdbg文件,因此我认为他们也使用JCL工具。
抱歉如果我不够具体,这是我在这里的第一个问题。谢谢。
更新:
在阅读了一些答案后,我进行了一些研究。我已经在我的项目中使用JEDI异常单元,但我不知道JEDI Debug专家。它恰好做我想要的和更多。
JEDI Debug专家会将.map文件转换为.jdbg文件,这是一个map的加密文件(map只是一个文本文件)。此外,jdbg文件大约比map小12%。它还提供了将jdbg插入二进制(exe)的选项。为此,我启用了以下选项:
项目-> JCL Debug专家->生成.jdbg文件->启用此项目
项目-> JCL Debug专家->将jdbg数据插入二进制文件->启用此项目
项目-> JCL Debug专家->转换后删除map文件->启用此项目(如果您想要删除该文件,当然)
要在IDE之外使用此工具,例如在Jenkins中,我必须构建位于JEDI \ jcl \ examples \ windows \ debug \ tools \ MakeJclDbg.dpr中的可用项目。构建后,它将在jcl的bin目录中生成exe文件。如何使用:
MakeJclDbg -J -E -M map_filename J-创建.JDBG文件
E-将调试数据插入可执行文件中
M-转换后删除MAP文件
可执行文件必须与MAP文件位于同一目录中。这将创建基于地图文件的jdbg文件,并将其插入exe中并删除地图。有了这个(和JEDI的异常单元),当引发异常时,我可以获得堆栈跟踪,系统中使用的所有dll版本,操作系统信息等,并将所有这些内容发送到电子邮件中。
我意识到Embarcadero也拥有他们自己的bpl的jdbg文件,因此我认为他们也使用JCL工具。
{$R filename.ext}
。 - Ken White{$R ... }
的原始评论,你可能没有看到。无论如何 - 我想说的是,我们不知道 OP 正在做什么,应该更加努力地描述问题以及已经尝试过的内容 - 而不是尚未尝试的内容。 - Jerry Dodge