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

Frama-C: Display callstacks in the command line output

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

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

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

有没有办法告诉 Frama-C 在给定的程序位置输出调用堆栈,以获取 GUI 中形式的 (callstack, values) 信息?

非常感谢您的指点。

Eva(以前的价值分析)插件有一个打印调用堆栈的选项:

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

可以通过 frama-c -value-helpframa-c -value-h.

访问此选项以及其他 Eva 选项

否则, 包含一个示例脚本,该脚本与 Db.Value.get_stmt_state_callstack 相结合,应该允许创建自定义方式来打印所需信息。