LLVM

2017-07-02 9 views
3

のローカル変数の実際の値を取得する:LLVM

int a=0, b=0; 

とbはローカル変数であり、そのように、それらの値に任意の変更を行います。私は必要

a++; 
b++; 

MCJITの実行中にこの行コードの値を取得します。

実際の整数または任意の型の値ではなく、値がValueではありません。

+0

あなたはplsはこのために例を与える「私はMCJITを実行している間、このラインコードの値を取得する必要があり、」私がする必要がある – Saranjith

答えて

-1

値を確認するステートメントの実行後にブレークポイントを挿入します。コンソールで(lldb) po <variable name>

あなたの要件にはウォッチポイントが適していると思われますが、watchpoint set variable <variable key path>のような変数のウォッチポイントを追加してください。

+1

もう少し説明実行時の値に応じてIRを変更する –

0

MCITを呼び出すコードからJITed LLVM関数を取得するには、その値をJITed LLVM関数から戻す必要があります。

これをチェックアウトするKaleidoscope example

関連するコードは(HandleTopLevelExpressionである):

if (FunctionAST *F = ParseTopLevelExpr()) { 
    if (Function *LF = F->Codegen()) { 
    // JIT the function, returning a function pointer. 
    void *FPtr = TheHelper->getPointerToFunction(LF); 

    // Cast it to the right type (takes no arguments, returns a double) so we 
    // can call it as a native function. 
    double (*FP)() = (double (*)())(intptr_t)FPtr; 
    fprintf(stderr, "Evaluated to %f\n", FP()); 
    } 
}