-1

我想在大型 C++ 代码库上使用ShinyPROFILE_FUNC() ,但我不想将所需的调用添加到我的源代码中。我认为为每个源文件编写一个脚本很容易,正则表达式搜索函数定义,在左括号之后添加一个宏调用并将结果传递给 g++;但这似乎是一个非常明显的源代码检测案例,以至于我很难相信没有人已经提出了更好的解决方案。

不幸的是,四处搜索我只能找到对 LLVM / clang 仪器和奇怪的研究工具的引用,对于我相对简单的问题,它们看起来像是过于复杂的解决方案。事实上,似乎没有直接的方法可以在编译之前对 C/C++ 代码执行简单的自动代码编辑。

是这样吗?还是我错过了什么?

更新:我忘了提到这个“C++ 代码库”是我要移植到 Android 的本机应用程序。所以我既不能使用 gprof(在 Android 上不可用)、Valgrind(它需要比我正在使用的旧版本的 NDK)也不能使用 android-ndk-profiler(用于由 Android 活动加载的动态库,Java 或本机,而不是普通的可执行文件)。因此,我研究了 Shiny。

更新 2:尽管之前声称我实际上设法在 Android NDK r8e 上构建了 Valgrind,所以我决定使用它而不是 Shiny。但是我仍然认为最初的问题是有效的:是否有任何直接的工具可以对 C / C++ 源文件进行简单的编译时编辑——某种类型的宏预处理器?

4

2 回答 2

0

您可以考虑gprofvalgrind。如果没记错的话,gprof 使用检测工具,而 valgrind 是一个基于采样的分析器。它们都不需要您注释源代码。

于 2013-07-11T17:11:48.397 回答
0

您可以使用 android ndk 分析器来分析 C/C++ 代码更多信息在这里

http://code.google.com/p/android-ndk-profiler/

您使用 gprof 分析结果

于 2013-07-15T20:32:38.733 回答