我试图通过使用 C(也可能是 C++)进行一些动态代码检测来加快使用 Clang 的速度,其中我获取源文件并生成检测后的输出。我想在任何块的开头添加一个函数调用,并更改所有布尔表达式以调用某个函数,以便我也可以跟踪它。例如:
foo = a && (b || c);
会变成这样:
foo = EXPR_AND(a, EXPR_OR(b, c));
因此我可以跟踪发生的所有条件组合。
我认为使用 RecursiveASTVisitor 将是最好的方法,但是有没有一种简单的方法可以为我访问的每个节点输出 C 代码?
任何关于如何完成这样的事情的建议将不胜感激!
注意:经过进一步的调查,我刚刚发现了 libclang,它看起来可能是我最好的朋友。再加上重写器,我可能就得到了我需要的东西。任何好的例子(我刚刚在 libclang 上找到了优秀的苹果开发者会议视频)都会很棒。
一个很好的例子请参见这个项目 https://github.com/yotamr/traces.
它使用 clang 来检测调用函数的进入和退出,并且还检查传递参数的类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)