【问题标题】:How to debug clang using eclipse如何使用eclipse调试clang
【发布时间】:2012-03-13 18:12:53
【问题描述】:

我正在尝试使用 eclipse 调试 clang。我在预处理器的构造函数中的 clang/lib/lex/preprocessor.cpp 中设置了一个断点。

  1. 我在调试配置中设置了一个“test.c”文件作为参数。
  2. 开始运行-> 调试为-> 本地 C/C++ 应用程序。
  3. 它询问“选择要调试的本地应用程序”。我选择了“clang”并单击“确定”。
  4. 它开始构建代码。构建完成。
  5. 在调试窗口的 main() 处停止。 (没有可用于 main() 的源)
  6. 经过一些步骤后,它显示“终止:gdb 调试器(已退出。退出代码=255)”

我不喜欢 clang 代码(预处理器代码)。有人可以告诉我如何调试clang代码吗?我想看看clang中的代码流。以及 clang 是如何构建 AST 的。

【问题讨论】:

    标签: eclipse compiler-construction llvm clang abstract-syntax-tree


    【解决方案1】:

    Clang 二进制文件实际上包含两个应用程序:驱动程序和编译器前端本身。后者通过 -cc1 cmdline 选项执行。因此,只需在 clang 命令行中添加 -v 即可查看工具调用的实际顺序,获取前端命令行(包含 -cc1 的命令行)并使用此命令行进行调试。

    【讨论】:

    • 我没有尝试使用 clang 调试我的代码。我想调试clang的代码。在 Eclipse 中打开 LLVM Source 作为“Makefile Project”并进行调试。
    • 是的,我为 clang 自己写了指令。
    【解决方案2】:

    遇到同样的问题 - 在构建二进制文件时,您缺少 -g 标志(启用调试信息)。 运行 cmake 时,使用 CMAKE_BUILD_TYPE 选项运行它:

    cmake -G "Eclipse <CDT_Version> - Unix Makefiles" -D_ECLIPSE_VERSION=<eclipse_version> -DCMAKE_BUILD_TYPE=Debug  <llvm_source_path>
    

    示例:

    cmake -G "Eclipse CDT4 - Unix Makefiles" -D_ECLIPSE_VERSION=4.4 -DCMAKE_BUILD_TYPE=Debug  ../llvm/
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 2011-08-13
      • 1970-01-01
      相关资源
      最近更新 更多