gdb 7.7
和 gbd 7.11
在调试我的设备 (oppo r7s) 时都错过了一些共享库。 我已经将所有库拉到本地.info shared
显示的完整库列表
(gdb) info shared
From To Syms Read Shared Object Library
0x40000980 0x40009640 Yes (*) Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\linker
0x401c7940 0x401ce6e8 Yes (*) Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\libutils.so
No libstdc++.so
No libm.so
0x4013bbb0 0x4017329c Yes (*) Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\libc.so
No libbinder.so
No liblog.so
No libhardware.so
No libcutils.so
No libc++.so
No libLLVM.so
No libbcinfo.so
No libunwind.so
No libz.so
No libpng.so
No libpowermanager.so
No libcommon_time_client.so
No libstlport.so
No libui.so
No libsync.so
No libgui.so
No libft2.so
No libbcc.so
No libGLESv2.so
No libGLESv1_CM.so
No libEGL.so
No libunwind-ptrace.so
No libgccdemangle.so
No libcrypto.so
No libicuuc.so
No libicui18n.so
No libjpeg.so
No libexpat.so
No libpcre.so
No libharfbuzz_ng.so
No libstagefright_foundation.so
No libsonivox.so
No libnbaio.so
No libcamera_client.so
No libaudioutils.so
No libaudioparameter.so
No libinput.so
No libhardware_legacy.so
No libcamera_metadata.so
No libgabi++.so
No libskia.so
No libRScpp.so
No libRS.so
No libwpa_client.so
No libnetutils.so
No libspeexresampler.so
0x402635b0 0x402724a4 Yes (*) Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\libandroidfw.so
No libGLES_trace.so
No libbacktrace.so
No libusbhost.so
No libssl.so
No libsqlite.so
No libsoundtrigger.so
No libselinux.so
No libprocessgroup.so
No libpdfium.so
No libnetd_client.so
No libnativehelper.so
No libnativebridge.so
No libminikin.so
No libmemtrack.so
No libmedia.so
No libinputflinger.so
No libimg_utils.so
No libhwui.so
No libassert_tip_service.so
No libETC1.so
0x4006d230 0x400ca9dc Yes (*) Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\libandroid_runtime.so
No libNimsWrap.so
No libsigchain.so
No libvendorconn.so
No libbacktrace_libc++.so
0x41d4baa0 0x41f9ee24 Yes (*) Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\libart.so
No libjavacore.so
No memtrack.msm8916.so
No libqti-perfd-client.so
No libtinyxml.so
No libqservice.so
No libmm-abl-oem.so
No libdiag.so
No libmm-abl.so
No libprotecteyes.so
No libgsl.so
No libadreno_utils.so
No libEGL_adreno.so
No libGLESv1_CM_adreno.so
No libGLESv2_adreno.so
0x68246388 0x68249184 Yes (*) Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\libandroid.so
No libcompiler_rt.so
No libjnigraphics.so
No libvorbisidec.so
No libstagefright_yuv.so
No libstagefright_omx.so
No libstagefright_enc_common.so
No libstagefright_avc_common.so
No libopus.so
No libdrmframework.so
No libstagefright_amrnb_common.so
No libstagefright.so
No libmtp.so
No libjhead.so
No libexif.so
No libmedia_jni.so
No libjavacrypto.so
No libsoundpool.so
No libaudioeffect_jni.so
No librs_jni.so
No libthwsplit.so
No libwebviewchromium_loader.so
No eglsubAndroid.so
No libsc-a3xx.so
No libqdutils.so
No libqdMetaData.so
No libmemalloc.so
No gralloc.msm8916.so
No libfmodex.so
No libfmodevent.so
No libstagefright_http_support.so
No libeffects.so
No libwilhelm.so
No libOpenSLES.so
0x7f9ceb40 0x8102f72c Yes Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\libclient.so
No libwebviewchromium.so
No libwebviewchromium_plat_support.so
(*): Shared library is missing debugging information.
但是
oat
文件在调试其他设备如华为(FRD-AL00)时加载。show shared
在此类设备上的输出的摘录。
0x71867000 0x71cc76d6 Yes (*) Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\system@[email protected]
0x721dc000 0x725657c4 Yes (*) Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\system@[email protected]
0x725dc000 0x7262d9cc Yes (*) Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\system@[email protected]
0x726c3000 0x727291ea Yes (*) Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\system@[email protected]
0xea0de584 0xea0e5714 Yes (*) Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\libandroid.so
0xe1b15da0 0xe1cdc3ec Yes (*) Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\libart-compiler.so
No /system/lib/libvixl.so
0xc2b0ab40 0xc416b72c Yes Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\libclient.so
No /data/dalvik-cache/arm/system@app@[email protected]@classes.dex
如果没有加载库,gdb 无法正确展开堆栈,oppo 中的回溯:
(gdb) bt
#0 0x40168698 in __epoll_pwait () from Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\libc.so
#1 0x4013f746 in epoll_pwait () from Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\libc.so
#2 0x4013f754 in epoll_wait () from Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\libc.so
#3 0x401cdf56 in android::Looper::pollInner(int) () from Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\libutils.so
#4 0x401ce180 in android::Looper::pollOnce(int, int*, int*, void**) ()
from Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\libutils.so
#5 0x4009c7dc in android::NativeMessageQueue::pollOnce(_JNIEnv*, int) ()
from Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\libandroid_runtime.so
#6 0x72403cdc in ?? ()
最后的地址在system@[email protected],加载
oat
文件时也能正常工作
谁能给些建议?
您遇到的问题似乎与您的 Oppo R7s 设备上某些共享库缺少调试信息有关。要解决此问题,您可以尝试以下步骤:
启用调试信息:确保共享库是用调试信息构建的。您可以通过确保在编译代码时包含 -g 标志来做到这一点。如果您使用的是 Android NDK,则可以在 Application.mk 文件中设置 APP_OPTIM := debug。
Copy the shared libraries with debugging information:确保将带有调试信息的共享库复制到设备中。您可以使用 adb push 命令将库从本地计算机复制到设备上的相应目录。例如:
perl adb push Z:\program\program arget ndroid_RelWithDebInfo\obj\local rmeabi-v7a\lib*.so /data/local/tmp/
Set the library search path in GDB:告诉GDB在哪里可以找到带有调试信息的共享库。可以在GDB中使用set solib-search-path命令设置搜索路径。例如:
sql (gdb) 设置 solib-search-path /data/local/tmp
手动加载 OAT 文件:如果 OAT 文件没有自动加载,您可以使用 add-symbol-file 命令在 GDB 中手动加载它们。您需要在内存中找到 OAT 文件的基地址,并将其用作命令的参数。您可以使用 info proc mappings 命令列出内存映射并找到 OAT 文件的基地址。然后,使用 add-symbol-file 命令加载符号。例如:
sql (gdb) 添加符号文件 Z:\program\program arget ndroid_RelWithDebInfo\obj\local rmeabi-v7a\system@[email protected] 0x71867000
将 0x71867000 替换为您使用 info proc 映射找到的实际基地址。
重新运行GDB:执行上述步骤后,再次尝试运行GDB并检查问题是否解决。
如果您仍然遇到调试问题,请考虑将您的 GDB 和 Android NDK 更新到可用的最新版本。