如何使用 lldb 获取 llvm::Value 的类型

How to get the type of llvm::Value with lldb

在使用 LLVM IR 时,我们可以使用 LLVM Raw Stream 来打印每个 llvm::Value 的类型。例如

void someFunction(llvm::IRBuilder* iBuilder) {
    llvm::Value* v = iBuilder->getInt64(0);
    // Print the type of value "v"
    v->getType()->print(llvm::outs()); // line A, get "i64" in stdout
}

但是,如果我们要调试一些相关的代码,我认为修改原始代码(添加print函数调用)并重新编译以获得一些调试并不是一个好的做法值类型的信息。
因此,假设我在 "line A" 处有一个断点,我能否在 lldb 中获取 llvm::Value* v 的一些人类可读的类型信息(类似于 stdout 中的 "i64")?

如@IsmailBadawi 的评论所述,我们可以使用p v->dump() p v->getType()->dump() 来打印目标信息(在stdout 中而不是调试输出)