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

我在
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地址,但它会打印出来
??

最佳答案 下载Android Source并构建它.

使用调试符号将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.

点赞