是否有工具列出C函数使用和输出的全局变量?

我想列出函数消耗的全局变量/宏以及函数输出。 例如,对于:

void myfn(void) { out1 = in + 1; out2 = 2; } 

..该工具将输入列为’in’,输出列为’out1’和’out2’。

有谁知道这样的工具?

我们的DMS软件再造工具包是一个可定制的程序分析工具,具有生产质量C前端 。

它解析C,构建AST和符号表,提供控制和数据流分析,构建全局调用图,并具有分析点。 它可以自定义以提取此信息; 事实上,我们向大型汽车制造商提供了一个基于DMS的自定义工具,以构建一个工具来提取几乎所有这些信息。

如果您只关注符号表信息,则可以像示例中一样提取“直接读取或写入”。 如果使用调用图信息,则可以发现由调用其他函数导致的对全局变量的读取或写入。 如果使用points-to analysis,您可以通过间接发现(保守地)读取或写入全局变量。

您也可以尝试CppDepend ,NDepend就像C \ C ++一样

Clang至少可以做到这一点,但它可能不是最简单的方法。 您需要与它的C ++ API进行交互。