*我写了这个脚本是为了让节点对应一个局部变量的声明,在我的情况下是“val”,它在一个小程序C中,但我得到错误意外错误(Not_found)。我认为我没有给我的方法提供正确的论据,特别是本地化,这是类型Cil_types.localisation如果有人可以帮助我...... *
let main () =
let memo_debug = Kernel.Debug.get () in
Kernel.Debug.set 1;
File.pretty_ast ();
Kernel.Debug.set memo_debug ;
let kf = Globals.Functions.find_def_by_name "main" in
let pdg = !Db.Pdg.get kf in
let localisation=Cil_types.VGlobal in
let var=Globals.Vars.find_from_astinfo "val" z in
let node= !Db.Pdg.find_decl_var_node pdg var in
Format.printf "%a@." (!Db.Pdg.pretty_node false) node;
答案 0 :(得分:4)
您说val
是main
中的局部变量,因此您不应该在全局范围内查找它。相反,你应该这样做:
let scope = Cil_types.VLocal kf in
let var=Globals.Vars.find_from_astinfo "val" scope in