调试Clang

使用VS code调试Clang

VS code是一款非常好用的开发工具,是远程开发的必备利器。Clang虽是编译器,但对于程序员来说也是一个app,所以自然也可以使用gdb来调试。为了更好的学习Clang的代码,推荐使用VS code + gdb的方式直接debug Clang的代码,结合文档说明做到深入学习理解。

编译Clang

可以参考LLVM官网使用CMake命令编译,由于要debug,所以必须编译Debug版本的Clang。可参考使用下列编译命令:

cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Debug" -DBUILD_SHARED_LIBS=True -DLLVM_USE_SPLIT_DWARF=True -DCMAKE_INSTALL_PREFIX="/home/user/prefix-test" -DLLVM_OPTIMIZED_TABLEGEN=True -DLLVM_BUILD_TESTS=True -DLLVM_TARGETS_TO_BUILD="X86" -DLLVM_ENABLE_PROJECTS="clang;llvm;compiler-rt" -DLLVM_ENABLE_ASSERTIONS=On ../llvm

配置VS code

VS code需要预先安装C++的插件,然后点击“RUN”---->“Open Configrations”,仅需要配置“program”和“args”两项即可

    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/out/stage2-install/bin/clang++",//配置Clang编译结果路径
            "args": ["--target=riscv64 -o ${workspaceFolder}/test_c++.cpp.o -c++ ${workspaceFolder}/test_c++.cpp"], //Clang参数
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",

调试

完成以上步骤,就可以F5直接调试了!
运行前先在Clang的main函数打个断点,位置在
llvm-project/clang/tools/driver/driver.cpp
调试界面