OSX 上没有带 LLDB 的调试信息/源代码
No debug info / source code with LLDB on OSX
尽管尝试了
的建议,但我无法在 lldb 中看到源代码
我已将其归结为一个简单的 C++17 程序,该程序使用以下命令编译。我在 OSX 上 运行,使用我自己从源代码编译的 clang 7.0.1,但我的 lldb 是 XCode 安装的(这可能是个问题?)。
这是我的编译命令:
clang++ -std=c++17 -march=native -Wall -g -O0 main.cpp -o main
请注意,main/main。dSYM/Contents/Resources/DWARF 是在我编译时创建的,看起来没问题。
不过,一个明显的问题是调试信息不在二进制文件中,根本找不到目标文件:
$ dsymutil main
warning: (x86_64) /var/folders/c1/vxvr6h9x10b8dbsxhh6nx05h0000gn/T/main-43ca25.o unable to open object file: No such file or directory
warning: no debug symbols in executable (-arch x86_64)
我的印象是我可以只使用调试信息(通过 -g
)进行编译并拥有一切 "just work" 但事实显然不是这样。
如何让调试符号起作用以便我可以使用 lldb?
我能够通过删除我没有意识到的 -flto
链接器标志来解决这个问题。显然,启用LTO后,调试符号不起作用。
尽管尝试了
我已将其归结为一个简单的 C++17 程序,该程序使用以下命令编译。我在 OSX 上 运行,使用我自己从源代码编译的 clang 7.0.1,但我的 lldb 是 XCode 安装的(这可能是个问题?)。
这是我的编译命令:
clang++ -std=c++17 -march=native -Wall -g -O0 main.cpp -o main
请注意,main/main。dSYM/Contents/Resources/DWARF 是在我编译时创建的,看起来没问题。
不过,一个明显的问题是调试信息不在二进制文件中,根本找不到目标文件:
$ dsymutil main
warning: (x86_64) /var/folders/c1/vxvr6h9x10b8dbsxhh6nx05h0000gn/T/main-43ca25.o unable to open object file: No such file or directory
warning: no debug symbols in executable (-arch x86_64)
我的印象是我可以只使用调试信息(通过 -g
)进行编译并拥有一切 "just work" 但事实显然不是这样。
如何让调试符号起作用以便我可以使用 lldb?
我能够通过删除我没有意识到的 -flto
链接器标志来解决这个问题。显然,启用LTO后,调试符号不起作用。