我希望编写一个程序,可以根据一些输入属性对输入的C/C++代码进行自动插桩。我正在寻找一个好的学习起点(主要涉及如何进行插桩,何处进行插桩等)。我已经在网上搜索了一段时间,但没有任何好运气。因此,如果有人能够指导我一个好的起点,我将不胜感激。谢谢
如果您还没有找到,这里有一个非常相似的问题,提供了使用自定义LLVM Pass和GCC MELT的好方法:使用LLVM检测C/C++代码 如果您正在寻找更简单的东西,请查看这个基于预处理器的解决方案,用于C++的基本检测和分析框架。
如果您正在使用Linux,并且只需系统API调用,请查看strace,或阅读this question。如果您想要检测自己的代码,则会更加棘手。性能分析器经常这样做,但它们与编译器合作添加仪器。似乎gcc支持一些用户定义仪器的形式。请参见this question。我发现很少需要整个程序都进行仪器测量--通常只需要对一些关键区域进行测量即可。在这种情况下,定义一些仪器宏或添加一些#ifdef MY_TRACE ... #endif部分是有帮助的。