在LLVM中访问调试信息

时间:2018-12-19 23:11:41

标签: llvm llvm-clang dwarf

以前在LLVM版本4和更低版本中,可以通过一些API调用访问程序结构的调试信息。例如,要获取结构的DWARF信息,我可以编写:

MDNode* structNode;
DIType structType(structNode);
assert(strType.getTag() == dwarf::DW_TAG_structure_type);

在当前版本的LLVM中,将删除这些功能。您是否知道访问调试信息的另一种方法,例如上面的示例?

1 个答案:

答案 0 :(得分:0)

我认为它应该以几乎相同的方式工作,只需使用llvm::dyn_cast(就像目前建议的使用LLVM的一般方法一样):

llvm::MDNode* md;

if (const auto di = llvm::dyn_cast<llvm::DINode>(md)) {
  assert(di->getTag() == llvm::dwarf::DW_TAG_structure_type);
}