我试图通过使用 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/