Rod*_*ano 5 delphi resources delphi-7 map-files delphi-10-seattle
我想将地图文件添加为资源,然后在每次执行系统时提取文件,以确保地图文件始终正确,并使支持的生命更容易.在Delphi 7中,我可以使用map文件作为资源来编译项目,但是映射是错误的,因为当引发异常时,调用堆栈是错误的.在Delphi Seattle中,我甚至无法编译,因为它会在生成映射之前尝试添加资源.我知道我可以在后编译thask中添加该文件,但有没有办法在编译/构建时间中执行此操作?对不起,如果我不是很具体,这是我的第一个问题.谢谢.
UPDATE
在我读了一些答案之后,我做了一些研究.我在我的项目中已经使用了JEDI异常单元,但我不知道JEDI Debug专家.它完全符合我的要求和更多.JEDI Debug专家将.map文件转换为.jdbg文件,这是一个加密的map文件(map只是一个文本文件).此外,jdbg文件比地图小约12%.它还具有将jdbg插入二进制(exe)的选项.为此,我启用了选项:
项目 - > JCL调试专家 - >生成.jdbg文件 - >为此项目启用
项目 - > JCL调试专家 - >将jdbg数据插入二进制 - >为此项目启用
项目 - > JCL调试专家 - >转换后删除地图文件 - >启用此项目(如果要删除文件,当然)
要在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工具.