这里解释了clang现在知道如何生成.pdb文件(http://blog.llvm.org/2017/08/llvm-on-windows-now-supports-pdb-debug.html)。
据我所知,至少clang与微软链接器现在预计产生的.pdb文件相当于那些由msvc工具链产生。
这里解释了如何使用主流Visual Studio 2017调试“外部”二进制文件,即不是使用项目/解决方案(https://learn.microsoft.com/en-us/visualstudio/debugger/how-to-debug-an-executable-not-part-of-a-visual-studio-solution)构建的二进制文件。
我用clang -g main.c -o main.exe
编译了一个简单的hello world应用程序,它按预期生成了一个.pdb文件。
但是,当我尝试单步执行时,VisualStudio会抱怨.pdb文件不包含行号信息。
相比之下,使用cl /EHsc /Zi main.c
编译允许使用Visual Studio进行正常调试。
我目前正试图了解clang生态系统是否已经足够好,可以在Windows上开发,如果有人能解释一下,我将不胜感激:
- stable clang和msvc生成的.pdb文件有什么区别?
link
和lld
有什么区别吗?
1.在clang6.0中会发生变化吗?
1条答案
按热度按时间0md85ypi1#
这对我很有效:
选项
-gcodeview
告诉Clang在Microsoft的CodeView format中生成调试信息。然后Visual Studio可以毫无问题地读取结果.pdb
。另一个选择是使用
clang-cl
,你可以将/Zi
传递给它,或者使用MIEngine,它应该允许你在Visual Studio中使用非CodeView调试信息。这是我的main.c:
我用的是Clang 6.0.0。