Visual Studio clang 5.0 pdb支持截至2017年

fwzugrvs  于 2023-03-24  发布在  其他
关注(0)|答案(1)|浏览(148)

这里解释了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上开发,如果有人能解释一下,我将不胜感激:

  1. stable clang和msvc生成的.pdb文件有什么区别?
  2. linklld有什么区别吗?
    1.在clang6.0中会发生变化吗?
0md85ypi

0md85ypi1#

这对我很有效:

clang -g -gcodeview main.c -o main.exe

选项-gcodeview告诉Clang在Microsoft的CodeView format中生成调试信息。然后Visual Studio可以毫无问题地读取结果.pdb
另一个选择是使用clang-cl,你可以将/Zi传递给它,或者使用MIEngine,它应该允许你在Visual Studio中使用非CodeView调试信息。
这是我的main.c

#include <stdio.h>

int main() {
    getc(stdin); // pause to allow attaching the debugger
    return 0;
}

我用的是Clang 6.0.0

相关问题