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