如何在可执行文件附近生成 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 文件,而不是在捆绑包之外,最好没有安装后脚本?的主要内容,如果未能解决你的问题,请参考以下文章
如何在可执行文件中包含带有 pyinstaller 的特定 .jar 文件?
在 Windows cmd 中,如何在当前目录中运行可执行文件(而不是在 %PATH% 中具有相同名称的可执行文件)而不参考完整路径? [关闭]