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