使用值分析插件时,可以使用GUI在给定程序位置(使用“值”选项卡)显示变量的值。此选项卡中显示的值包括对应于特定值的调用堆栈。例如:
fn1 -> fn2 -> fn3 | {values}
fn4 -> fn5 -> fn3 | {values}
在命令行上,使用Frama_C_show_each(var)
可以在分析到达程序位置时显示变量的值。但是,不会显示相应的调用堆栈。
是否有一种方法可以告诉Frama-C在给定的程序位置输出调用堆栈,以获得与GUI中一样的形式的信息(调用堆栈,值)?
非常感谢任何指针。
答案 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-help
或frama-c -value-h
访问。
否则,this question包含一个示例脚本,该脚本与Db.Value.get_stmt_state_callstack
结合使用,应可以设计出自定义方式来打印所需的信息。