Frama -c生成图形对象而不是点文件

时间:2017-06-22 12:10:46

标签: graph frama-c

我试图找出两个程序是否是伽玛同构的,而不是我正在借助Jgrapht库。现在,我必须生成程序的程序依赖图并将其捕获为图形对象。使用frama-c我们可以生成pdgs。我使用frama-c -pdg -pdg-dot graph -pdg-print program.c生成程序的pdg,输出是点格式。我必须解析点格式才能获得图表。取而代之的是,我能够像图形对象而不是点文件那样掌握图形数据结构。

1 个答案:

答案 0 :(得分:2)

从技术上讲,您应该能够使用Frama-C的Db.Pdg模块中导出的功能提取所需的信息。特别是, Db.Pdg.iter_nodes允许您通过Pdg生成的所有节点(用于所有函数),而Db.Pdg.direct_*dpds系列函数将使您获得给定节点的直接子节点列表,可以是全部节点,也可以是给定节点的直接子节点。有关详细信息,请参阅Frama-C来源的db.mli文件。

那就是说,我必须问你为什么要这样做。至于我的搜索引擎可以告诉我,JGraphT是一个Java库,上次我检查过,如果可能的话,OCaml / Java绑定并不是很容易实现的。此外,在我看来,DOTImporter的类JGraphT应该允许您或多或少地直接使用pdg的输出。