如何使用 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
中而不是调试输出)
在使用 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
中而不是调试输出)