获取与 Db.Pdg.find_decl_var_node 的局部变量声明对应的节点
To get the node corresponding the declaration of a local variable with Db.Pdg.find_decl_var_node
*我写这个脚本是为了获取对应于局部变量声明的节点,在我的例子中 "val" 它在一个小程序 C 中,但我得到错误 Unexpected错误 (Not_found)。我认为我没有为我的方法提供正确的参数,尤其是 localisation 类型 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;
你说val
是main
中的局部变量,所以你不应该在全局范围内寻找它。相反,你应该这样做:
let scope = Cil_types.VLocal kf in
let var=Globals.Vars.find_from_astinfo "val" scope in
*我写这个脚本是为了获取对应于局部变量声明的节点,在我的例子中 "val" 它在一个小程序 C 中,但我得到错误 Unexpected错误 (Not_found)。我认为我没有为我的方法提供正确的参数,尤其是 localisation 类型 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;
你说val
是main
中的局部变量,所以你不应该在全局范围内寻找它。相反,你应该这样做:
let scope = Cil_types.VLocal kf in
let var=Globals.Vars.find_from_astinfo "val" scope in