c - 使用 Clang 进行动态检测

标签 c clang

我试图通过使用 C(可能还有 C++)进行一些动态代码检测来加快使用 Clang 的速度,我在其中获取源文件并生成检测输出。我想在任何 block 的开头添加一个函数调用,并更改所有 bool 表达式以调用某个函数,这样我也可以跟踪它。例如:

foo = a && (b || c);

会变成这样:

foo = EXPR_AND(a, EXPR_OR(b, c));

因此我可以跟踪发生的所有条件组合。

我假设使用 RecursiveASTVisitor 是最好的方法,但是有没有一种简单的方法可以为我访问的每个节点输出 C 代码?

如有任何关于完成此类任务的建议,我们将不胜感激!

注意:经过进一步调查,我刚刚发现 libclang,它看起来可能是我最好的 friend 。加上重写器,我可能正好拥有我需要的东西。任何指向好的示例的指针(我刚刚在 libclang 上找到了优秀的 Apple 开发人员 session 视频)都会很棒。

最佳答案

一个很好的例子见this project .

它使用 clang 来检测调用函数的进入和退出,它还检查传递参数的类型。

关于c - 使用 Clang 进行动态检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8946060/

相关文章:

c - 用重复数据初始化 C 数组

c - 从 ANSI C 代码获取控制流图

c - 错误: function declared 'ms_abi' here was previously declared without calling convention (clang)

c - 符号 `M' 没有定义为 C/C++ 预处理器宏

C++ Clang 无法解析此 Lookbehind 正则表达式

c++ - 为什么 std::generate 可以在没有命名空间限定符的情况下访问?

有人可以帮我让我的大脑休息一下吗 "C Language"

使用参数的 C 计算器不输出任何内容

c - inet_ntoa 问题

python - 使用 libclang 查找匿名枚举