gpt4 book ai didi

android - 如何在启用 gdb 跟踪的情况下从源代码为 Android 构建 Libgdx.so?

转载 作者:太空宇宙 更新时间:2023-11-03 10:19:41 25 4
gpt4 key购买 nike

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

我现在有了踪迹,但没有附加源代码来追踪线索。

我下载了 libgdx 源代码。

如何构建它以启用 gdb 跟踪,以便我可以跟踪跟踪引用的代码?

更新:

我从源代码构建了调试 .so libgdx为此,我修改了文件:libgdx/gdx/jni/build-android32.xml

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

这确实会生成一个 dbg libgdx.so 动态库位置libgdx/gdx/libs/armeabi

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

我正在使用 arm-linux-androideabi-addr2line 和函数的十六进制地址,但它打印??

最佳答案

下载 Android 源代码并构建它。

将 DDMS 指向带有调试符号的库。在命令行上:

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

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

从该 shell 启动 DDMS

$ddms

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

我还从源代码构建了 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。

关于android - 如何在启用 gdb 跟踪的情况下从源代码为 Android 构建 Libgdx.so?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26111086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com