我想调试一个jit函数。就像下面的源代码一样,我想调试FibF函数,但是当我通过gdb调试它时,似乎无法进入函数范围。怎么调试呢?提前谢谢你。
// We are about to create the "fib" function:
Function *FibF = CreateFibFunction(M.get(), Context);
// Now we going to create JIT
std::string errStr;
ExecutionEngine *EE =
EngineBuilder(M.get())
.setErrorStr(&errStr)
.setEngineKind(EngineKind::JIT)
.create();
if (!EE) {
errs() << argv[0] << ": Failed to construct ExecutionEngine: " << errStr
<< "\n";
return 1;
}
errs() << "verifying... ";
if (verifyModule(*M)) {
errs() << argv[0] << ": Error constructing function!\n";
return 1;
}
// Call the Fibonacci function with argument n:
std::vector<GenericValue> Args(1);
Args[0].IntVal = APInt(32, n);
GenericValue GV = EE->runFunction(FibF, Args);
答案 0 :(得分:2)
如果您喜欢完整的调试体验,包括函数名,行号和变量名,则需要在JIT代码时添加调试信息。 Part 9 of the Kaleidoscope tutorial演示了如何向JITted代码添加调试信息。