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

X.Y*_*ang 9 c c++ macos llvm clang

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

fil*_*ton 5

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

检查这个SO问题了解更多细节!