2016-03-15 5 views
0

Я хочу отладить функцию jit. как и исходный код ниже, я хочу отлаживать функцию FibF, но когда я отлаживаю ее gdb, она, похоже, не может работать в области функций. Как отладить его? заранее спасибо.Как отладить jitted functiion в llvm?

// 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); 

ответ

2

Если вы хотите полный опыт отладки, с именем функции, номера строк и имена переменных, вам нужно добавить информацию об отладке, когда вы JIT код. Part 9 of the Kaleidoscope tutorial демонстрирует, как добавить отладочную информацию в JIT-код.

+0

Ссылка кажется мертвой. Также новый ORC JIT, похоже, не поддерживает отладку JIT-кода. Я верю, что информация переместилась в раздел 9: https://llvm.org/docs/tutorial/LangImpl09.html – PaulR

+0

@PaulR действительно, это сейчас в части 9, спасибо за хедз-ап! – Oak