如何告诉 clang 将调试符号放入可执行二进制文件中



我的编译命令在macOS Sierra是

clang -std=c11 -g -Wall -Werror -fsanitize=address -file.c -o file

编译后,它还会生成一个额外的 file.dSYM 文件,其中包含所有调试符号。但是,当我使用 WSL 或其他 *nix 系统时,它不会生成这样的文件,调试符号被嵌入到可执行二进制文件中。所以我只是想知道有没有办法在 macOS 中使用 clang 做同样的事情。

当您一次性编译程序时,clang实际上为您运行dsymutil,它负责创建.dSYM文件。因此,问题的解决方案是分别编译和链接,在这种情况下,clang不会自动调用dsymutil

查看此SO问题以获取更多详细信息!