Frama-C:在命令行输出中显示调用堆栈

时间:2018-09-28 16:04:01

标签: frama-c

使用值分析插件时,可以使用GUI在给定程序位置(使用“值”选项卡)显示变量的值。此选项卡中显示的值包括对应于特定值的调用堆栈。例如:

fn1 -> fn2 -> fn3 | {values}
fn4 -> fn5 -> fn3 | {values}

在命令行上,使用Frama_C_show_each(var)可以在分析到达程序位置时显示变量的值。但是,不会显示相应的调用堆栈。

是否有一种方法可以告诉Frama-C在给定的程序位置输出调用堆栈,以获得与GUI中一样的形式的信息(调用堆栈,值)?

非常感谢任何指针。

1 个答案:

答案 0 :(得分:4)

Eva(以前的值分析)插件具有打印呼叫栈的选项:

-val-print-callstacks  When printing a message, also show the current call
                       stack (opposite option is -no-val-print-callstacks)

此选项以及其他Eva选项可通过frama-c -value-helpframa-c -value-h访问。

否则,this question包含一个示例脚本,该脚本与Db.Value.get_stmt_state_callstack结合使用,应可以设计出自定义方式来打印所需的信息。