首先,我将解释我想在这里做什么:给定一个C大程序,我想输出一个数据生成器/消费者列表和一个调用/被调用函数列表这个数据的功能。
为了做到这一点,我正在考虑使用什么来计算frama-c的一些模块,比如我自己的插件中的dataflow.ml或callgraph.ml。
然而,当我阅读插件开发者文档时,我无法看到我们如何能够访问这些模块的数据。
是" open.cyl_type"我自己的插件就足够了吗?
此外,这是我的其他问题:
我尝试使用pdg插件的方式用于我的目的,但是当我打电话给它时,它说" pdg graph calculated",我该如何访问它?
是否还有关于"影响"插件比官方网页,深入,它是如何工作的基础? (我不得不说我是在项目前阶段,并且我在ubuntu上使用apt-get安装了frama-c并且我没有使用影响插件工作(我会看到)通过编译来源))
顺便问一下,你认为我用正确的方法达到我的目的吗?答案 0 :(得分:1)
你的问题很不清楚,因此这个答案非常通用。正如开发人员文档中所提到的,有两个主要类型的插件:静态插件,使用内核编译,其API在Db
中的模块(通常与插件的同名)中公开。动态插件(例如Semantic_callgraph
通过Dynamic
模块动态注册其入口点。
如果您在Frama-C源中make doc
(我不确定Ubuntu中是否有相应的包),您可以访问Db
中FRAMAC_SOURCE_DIR/doc/code/html/Db.html
模块的文档}以及FRAMAC_SOURCE_DIR/doc/code/dynamic_plugins/Dynamic_plugins.html
中动态插件注册的函数列表。
答案 1 :(得分:0)
我认为,按照Virgile的建议,你应该得到源代码,因为你大部分时间都需要浏览代码来找到你要找的东西。此外,您可以查看hello_word
插件(在src/dummy/hello_world
中)以获得一个非常简单的插件示例。您还可以在我的网站https://anne.pacalet.fr/Notes/doku.php?id=notes:0061_frama_c_scripts上找到一些示例,以了解如何访问AST中的某些信息。