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

Posted

技术标签:

【中文标题】如何告诉 clang 将调试符号放入可执行二进制文件中? [复制]【英文标题】:How to tell clang to put debug symbol into executable binaries? [duplicate] 【发布时间】:2017-03-31 15:32:55 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

查看this SO question了解更多详情!

【讨论】:

以上是关于如何告诉 clang 将调试符号放入可执行二进制文件中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使 clang 编译为 llvm IR

clang 3.1 在 Ubuntu 12.04 上构建的二进制文件无法使用 gdb 进行调试

[Win32]一个调试器的实现调试符号

如何在 VS2015 中调试 Clang 静态链接库

链接器会将哪些类型的符号放入可执行的 ELF 中?

设置调试文件目录后再次搜索符号