Clang支持“-g1”吗`

Clang支持“-g1”吗`,clang,Clang,我发现了一个关于这个的旧邮件列表线程,但是,没有任何进一步的信息,文档中也没有任何内容 叮当声支持那面旗帜吗?我在一个样本上尝试了-g1、-g2、-g3和-g,但结果总是一样的,所以看起来好像不是 这是有计划的吗?目前clang没有,但没有很好的文档记录。虽然它接受您提到的选项,但它将所有选项都视为-g。从clang源代码中,llvm/tools/clang/lib/Driver/tools.cpp提供了以下代码(大约在205900版的第2825行): 从最后几行可以看出,任何尚未消除的-g选项

我发现了一个关于这个的旧邮件列表线程,但是,没有任何进一步的信息,文档中也没有任何内容

叮当声支持那面旗帜吗?我在一个样本上尝试了
-g1
-g2
-g3
-g
,但结果总是一样的,所以看起来好像不是


这是有计划的吗?

目前
clang
没有,但没有很好的文档记录。虽然它接受您提到的选项,但它将所有选项都视为
-g
。从clang源代码中,
llvm/tools/clang/lib/Driver/tools.cpp
提供了以下代码(大约在205900版的第2825行):

从最后几行可以看出,任何尚未消除的
-g
选项(例如
-g7
)都会在该例程中转换为普通的
-g
,即
Clang::ConstructJob()

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

有关文档化的开关,请参阅,并详细查看选项处理的其余部分

  // 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");
    }
  }