如何在可执行文件附近生成 dsym 文件,而不是在捆绑包之外,最好没有安装后脚本?

Posted

技术标签:

【中文标题】如何在可执行文件附近生成 dsym 文件,而不是在捆绑包之外,最好没有安装后脚本?【英文标题】:How to generate dsym files near the executable, not outside the bundle, preferably without a post install script? 【发布时间】:2020-10-17 07:44:24 【问题描述】:

我在 Xcode 中使用 LLVM Clang,并且地址清理程序没有创建文件:行报告。我阅读了文档,它说在启动应用程序之前在二进制文件上运行dsymutil

http://clang.llvm.org/docs/AddressSanitizer.html#symbolizing-the-reports

我可以通过添加运行脚本构建阶段来实现,但它很笨重。对 unix-makefile 做同样的事情,我认为install(SCRIPT <script.cmake>) 会更好。

有没有办法避免这一切,让 Xcode 在构建过程中运行 dsymutil,可能是通过我不知道的构建设置?

我尝试使用 dsym 将调试信息格式设置为 dwarf,但 llvm-symbolizer 不使用它。我想不同之处在于 dsymutil 在可执行文件附近创建 .dsym 文件,包中:MyExec.dsym。 Xcode 在 包之外创建它:MyExec.app.dsym

【问题讨论】:

【参考方案1】:

在 Xcode 的 Build Settings 中,将调试格式从“DWARF”更改为“DWARF with dSYM”。

【讨论】:

创建 dsym 文件,但我猜在错误的地方。请参阅已编辑的问题。如果 llvm-symbolizer 远离二进制文件,靠近包,则看不到 dsym 文件。

以上是关于如何在可执行文件附近生成 dsym 文件,而不是在捆绑包之外,最好没有安装后脚本?的主要内容,如果未能解决你的问题,请参考以下文章

xcode配置dsym文件生成

如何在可执行文件中包含带有 pyinstaller 的特定 .jar 文件?

dsym 文件的结构是啥?

新的 Xcode 10 生成 dsym 文件问题

在 Windows cmd 中,如何在当前目录中运行可执行文件(而不是在 %PATH% 中具有相同名称的可执行文件)而不参考完整路径? [关闭]

从命令行生成的 .dSYM 文件 (Mac)