如何在启用gdb跟踪的Android源代码中构建Libgdx.so?

时间:2014-09-30 00:50:35

标签: android memory-leaks libgdx native

我在Android设备上设置了调试ROM,并启用了DDMS Native Heap来搜索libgdx内存泄漏。

我现在有一个跟踪,但没有附加源代码跟随领导。

我下载了libgdx源代码。

如何构建它以启用gdb跟踪,以便我可以按照跟踪引用的代码进行操作?

更新

我从源代码构建了调试.so libgdx 为此,我修改了文件: libgdx / GDX / JNI /集结android32.xml

添加到compile-natives目标 我还将APP_OPTIM:= debug添加到同一文件夹中的Application.mk 并将'-g'添加到同一文件夹中的Android.mk文件中: LOCAL_CFLAGS:= -g $(LOCAL_C_INCLUDES:%= - I%) - 02 -Wall -D__ANDROID__

实际上,这会产生一个dbg libgdx.so动态库 libgdx / GDX /库/ armeabi

虽然我越来越近了,但仍然无法获得正在加载内存的函数的名称。

我正在使用arm-linux-androideabi-addr2line和函数的Hex地址,但它打印出来 ??

1 个答案:

答案 0 :(得分:2)

下载Android资源并构建它。

使用调试符号将DDMS指向lib。在命令行上:

export ANDROID_SYMBOLS = $ ANDROID_SOURCE / out / target / product / flo / symbols / system / lib

请注意,$ ANDROID_SOURCE是指您构建Android源代码的位置。

从该shell启动DDMS

$ DDMS

现在您应该在ddms上看到本机跟踪。

我还从源代码构建了libgdx并添加了$ LIBGDX_SOURCE / libgdx / gdx / obj / local / armeabi / libgdx.so 到$ ANDROID_SOURCE / out / target / product / flo / symbols / system / lib以查看libgdx.so的方法名称。

预赛

您需要将设备设置为调试内存

adb root
adb shell setprop libc.debug.malloc 1
adb shell stop
adb shell start

设备必须是root或带有dbg ROM。