android - 使用 pg 选项在 Android 上进行分析

标签 android gcc android-ndk profiling

我正在使用最新版本的 NDK android-ndk-r8b
我有一些文件是通过 NDK 的 Android 编译器构建的。 i686-android-linux-gcc
现在我想分析这些文件。
我尝试使用 -pg 选项重建它,但收到错误消息:

/tmp/ccixJFcx.o: In function `main':
test1.C:(.text+0x17): undefined reference to `mcount'
collect2: ld returned 1 exit status

我想尝试使用 i686-android-linux-gprof 但是没有使用 -pg 选项成功编译我不能这样做。

例如,让 test1.C 的源代码为:

int main()
{
   return 0;
}

我可以使用这些选项使用标准 gcc 编译文件:
-g -O2 -m32 -Wa,--32 -Wl,-melf_i386 -pg 并将此文件与 i686-android-linux-gprof

一起使用

但是我不能在 i686-android-linux-gcc 中使用 pg key ,有人知道为什么吗?我该如何使用它,也许我必须在 NDK 重建过程中使用一些额外的库/编译选项?

最佳答案

您必须对您的 Android.mk 添加一些修改:

#include android-ndk-profiler.mk

LOCAL_CFLAGS := -pg
LOCAL_STATIC_LIBRARIES := andprof

LOCAL_LDLIBS += -llog

引用http://code.google.com/p/android-ndk-profiler/wiki/Usage了解更多分步详细信息。

P.S. x86 运行时似乎根本不包含 mcount。在代码的其他地方定义它:

#if !( defined(_M_ARM) || defined(__arm__) )
   int mcount = 0;
#endif

关于android - 使用 pg 选项在 Android 上进行分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12472011/

相关文章:

android - 如何捕获位置权限的 SecurityException

c++ - 与 GCC/MSVC 中的 lambda 转换构造函数不一致

Android CMake 构建默认添加 no-exceptions 和 no-rtti

C程序不断崩溃

android - 为 Android 编译 libnice

android - 我可以下载最新的 Android NDK 并以 Android 2.2 为目标吗?

android - NotificationChannel 在 Oreo 中播放错误的声音

具有全宽度的 Android 一个选项卡 TabLayout 一开始不工作

android - 使用 Cordova 的 Azure 通知中心

gcc - g++ 'nullptr' 未在此范围内声明