0

首先,我将解释我想在这里做什么:给定一个 C 大程序,我想输出数据的生产者/消费者列表和函数的调用/被调用函数列表,其中数据是。

为此,我正在考虑在我自己的插件中使用什么来计算 frama-c 的某些模块,例如 dataflow.ml 或 callgraph.ml。

但是,当我阅读插件开发者文档时,我无法看到我们如何访问这些模块的数据。

在我自己的插件中,“open.cyl_type”是否足够?

此外,这是我的其他问题:

我尝试将 pdg 插件用于我的目的,但是当我调用它并显示“pdg graph computed”时,我该如何访问它?

有没有比官方网页更多的关于“影响”插件的文档,深入,它是如何工作的?(我不得不说我正处于项目前期阶段,并且我在 ubuntu 上安装了带有 apt-get 的 frama-c,并且我没有得到一个影响插件工作(我将通过编译源代码来查看))

顺便说一句,你认为我使用正确的方法来达到我的目的吗?

4

2 回答 2

1

您的问题很不清楚,因此这个答案非常笼统。正如开发者文档中提到的,有两个主要的插件类:静态插件,使用内核编译,其 API 暴露在Db. 动态插件,例如通过模块Semantic_callgraph动态注册它们的入口点。Dynamic

如果您make doc在 Frama-C 源代码中进行操作(我不确定 Ubuntu 中是否有相应的包),您可以访问Db模块的文档FRAMAC_SOURCE_DIR/doc/code/html/Db.html和动态插件注册的函数列表FRAMAC_SOURCE_DIR/doc/code/dynamic_plugins/Dynamic_plugins.html

于 2014-08-20T15:53:39.887 回答
0

我认为,按照 Virgile 的建议,无论如何您都应该获得源代码,因为您大部分时间都需要浏览代码以找到您要查找的内容。此外,您可以查看hello_word插件 (in src/dummy/hello_world) 以获得一个非常简单的插件示例。您还可以在我的网站https://anne.pacalet.fr/Notes/doku.php?id=notes:0061_frama_c_scripts上找到一些示例,以了解如何访问 AST 中的某些信息。

于 2014-08-21T07:01:18.697 回答