首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clang支持`-g1‘吗?

Clang支持`-g1‘吗?
EN

Stack Overflow用户
提问于 2014-04-09 14:36:53
回答 1查看 563关注 0票数 0

我找到了一个关于这个这里的旧邮件列表线程,但是,在文档中没有任何进一步的信息或任何内容。

克郎支持那个旗帜吗?我在一个示例中尝试了-g1-g2-g3-g,但是结果总是一样的,所以看起来并非如此。

计划好了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-09 16:00:19

目前clang没有,但它没有很好的文档。虽然它接受您提到的选项,但它把它们都当作是-g。从clang源代码中,llvm/tools/clang/lib/Driver/Tools.cpp获得了以下代码(大约位于rev 205900的第2825行):

代码语言:javascript
复制
  // Use the last option from "-g" group. "-gline-tables-only" and "-gdwarf-x"
  // are preserved, all other debug options are substituted with "-g".
  Args.ClaimAllArgs(options::OPT_g_Group);
  if (Arg *A = Args.getLastArg(options::OPT_g_Group)) {
    if (A->getOption().matches(options::OPT_gline_tables_only)) {
      // FIXME: we should support specifying dwarf version with
      // -gline-tables-only.
      CmdArgs.push_back("-gline-tables-only");
      // Default is dwarf-2 for darwin.
      if (getToolChain().getTriple().isOSDarwin())
        CmdArgs.push_back("-gdwarf-2");
    } else if (A->getOption().matches(options::OPT_gdwarf_2))
      CmdArgs.push_back("-gdwarf-2");
    else if (A->getOption().matches(options::OPT_gdwarf_3))
      CmdArgs.push_back("-gdwarf-3");
    else if (A->getOption().matches(options::OPT_gdwarf_4))
      CmdArgs.push_back("-gdwarf-4");
    else if (!A->getOption().matches(options::OPT_g0) &&
             !A->getOption().matches(options::OPT_ggdb0)) {
      // Default is dwarf-2 for darwin.
      if (getToolChain().getTriple().isOSDarwin())
        CmdArgs.push_back("-gdwarf-2");
      else
        CmdArgs.push_back("-g");
    }
  }

从最后几行可以看到,任何尚未被删除的-g选项(例如-g7)都会在这个例程Clang::ConstructJob()中转换为一个普通的-g

我不知道有什么计划改变这一点,但我也不是一个clang开发人员。你可能想在邮件列表上问一问。

有关文档中的开关,请参阅在线手册,而Tools.cpp的源代码则详细查看选项处理的其余部分。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22965919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档