`
javahigh1
  • 浏览: 1287431 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

android 上调试动态库方法

 
阅读更多


关于android 上 gdb调试进程的方法请参考前一篇文章。


如果 android应用程序 包含动态库调用,程序异常退出后 给出一堆地址,

I/DEBUG ( 841): signal 11 (SIGSEGV), fault addr deadbaad
I/DEBUG ( 841): r0 00000000 r1 afd1498d r2 00000027 r3 00000070
I/DEBUG ( 841): r4 afd42328 r5 00000000 r6 00000000 r7 4e6fae30
I/DEBUG ( 841): r8 00100000 r9 a811c2f9 10 4e5fb000 fp 0013cdb8
I/DEBUG ( 841): ip 0000173c sp 4e6fa9d8 lr deadbaad pc afd11f40 cpsr 60000030
I/DEBUG ( 841): d0 400000003eaaaaab d1 3ff0000041f00000
I/DEBUG ( 841): d2 0000000050baf6de d3 0000000000000000
I/DEBUG ( 841): d4 00000007000000b4 d5 3fe999999999999a
I/DEBUG ( 841): d6 3fe000000000000binder: release proc 1047, transaction 109259, not freed
0 d7 3eaaaaab3f800000
I/DEBUG ( 841): d8 0000000000000000 d9 0000000000000000
I/DEBUG ( 841): d10 0000000000000000 d11 0000000000000000
I/DEBUG ( 841): d12 0000000000000000 d13 0000000000000000
I/DEBUG ( 841): d14 0000000000000000 d15 0000000000000000
I/DEBUG ( 841): scr 80000012


根据 pc 地址 及crash的 动态库可以推断出现问题的 代码位置,

利用 gcc 的 命令arm-eabi-addr2line ,从地址到代码位置的定位:

具体例子:比如我的 动态库为 hello.so,把此库放在本地 带 symbols 的android lib目录下,执行

arm-eabi-addr2line -C-f -e /path/to/lib/with_sysbols/hello.so afd11f40

上面的afd11f40 为 crash时的pc 地址:

(I/DEBUG ( 841): ip 0000173c sp 4e6fa9d8 lr deadbaad pc afd11f40 cpsr 60000030

注意点:

1. 最好把你的动态苦编译成调试版本(-g)

2. 要把你的动态苦放在android 动态库的 sysbols版本目录下,比如我的机器上目录为:(Eg.)/home/usera/android/out/target/product/generic/symbols/system/lib




分享到:
评论

相关推荐

    FFmpeg4.0_android版动态库和头文件.zip

    9. **调试与日志**:在Android上调试FFmpeg代码时,可以通过设置日志级别和使用ffprobe等工具来获取更多信息,帮助排查问题。 10. **持续学习与更新**:由于FFmpeg不断更新,开发者应关注官方发布的最新版本,以便...

    Android NDK调用第三方的动态库实例-绝对简单易用

    这个是Android NDK上调用第三方的动态库的实例,而且代码简单容易理解,非常适合新手学习参考,因为网上很多资源是C2C(Copy to Copy)的,有些还不能运行,容易误导新手,并且还要设置积分,我免积分提供给网友下载...

    在eclipse上调试android ndkc程序 教程

    NDK提供了交叉编译环境,将本地代码编译为可以在Android设备上运行的.so动态链接库。 **二、Eclipse与Android NDK集成** Eclipse作为曾经主流的Android开发IDE,虽然现在已被Android Studio取代,但仍然有开发者...

    Android 菜单动画(类似QQ空间)Demo-IT计算机-毕业设计.zip

    QQ空间的菜单动画通常包括滑动、淡入淡出、缩放等效果,这些效果可以通过自定义ViewGroup、动画库(如Android的Animation或Animator API)以及手势识别来实现。在这个Demo中,开发者可能已经展示了如何创建一个可...

    Android 常用开发术语

    它可以帮助开发者在模拟器或真实设备上调试应用,特别是在进行性能分析和问题定位时非常有用。 #### 9. Drawable Drawable是Android中的一种资源类型,主要用于存储图像资源,如图标、背景和其他视觉元素。它们是...

    10-04 viewpager顶部选项卡(android studio)

    首先,`ViewPager`是Android支持库中的一个视图容器,它可以管理一组`Fragment`并根据用户的滚动动作进行切换。`Fragment`代表屏幕上的一个可交互区域,适合在大屏幕和小屏幕设备上复用。在顶部选项卡的场景中,每个...

    android make 介绍

    并且,Java 或者 C/C++ 库还可以分为静态的或者动态的,库或可执行文件既可能是针对设备(本文的“设备”指 的是 Android 系统将被安装的设备,例如某个型号的手机或平板)的也可能是针对主机(本文的“主机”指的是...

    java代码动态生成控件

    通常,我们会在布局的根视图(如LinearLayout或RelativeLayout)上调用`addView()`方法。例如: ```java LinearLayout parentLayout = findViewById(R.id.parent_layout); parentLayout.addView(myButton); ``` 这里...

    Android应用源码之JakeWharton-ActionBarSherlock-4.4.0-0-g4a79d53.rar

    库提供了一系列的接口,如`getSupportActionBar()`,使得开发者可以在API级别低于11的设备上调用Action Bar的方法。例如,`getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE | ActionBar....

    安卓Android源码——加载本地图片,绝对不会出现OOM.zip

    - 当不再需要Bitmap时,确保调用`recycle()`方法进行释放,但要注意不要在使用中的Bitmap上调用此方法。 在压缩包的“PhotosWallDemo”中,可能包含了一个示例应用,演示了上述的一些最佳实践。通过查看和学习这个...

    MyReflectionTest:学习android反射机制

    在Android开发中,反射机制是一种强大的工具,它允许我们在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地调用方法或访问私有成员。本项目"MyReflectionTest"专注于探索和理解Android环境下的Java...

    mips和标准android2.1 的bionic区别.pdf

    Android系统作为开源的移动设备操作系统,其核心库Bionic是针对ARM架构设计的,但在MIPS架构上运行时需要进行相应的优化和修改。本文将详细探讨MIPS架构下的Android 2.1 Bionic与标准版本的主要差异,以揭示这些变化...

    Android 圆角 ImageView类可设置弧度(代码简单)

    通过调用`SetRoundValue()`方法,可以动态地设置圆角的半径,更新`roundWidth`和`roundHeight`的值,从而改变圆角ImageView的弧度。 总结来说,`RoundImageView`类通过重写`draw()`方法,结合Paint和Path对象,实现...

    andorid-26

    - 使用Android 8.0的API和库。 - 创建虚拟设备(AVD)运行Android 8.0系统进行测试。 - 在模拟器或真实设备上调试应用,确保兼容性和功能正确性。 总之,Android 8.0 SDK的使用对于开发者来说至关重要,它提供了...

    StyleR:以编程方式设置Android视图样式!

    **StyleR:编程式设置Android视图样式** 在Android应用开发中,我们通常使用XML资源文件来定义和管理UI元素的样式。然而,有时我们可能需要在运行时动态地更改或设置视图的样式,这正是`StyleR`库的目的所在。`...

    安卓欢迎界面引导页面viewpager相关-小红书欢迎引导第二版.zip

    同时,Android 提供了多种动画库,如 Android 自带的 Animation 或第三方库如 Lottie,可以方便地实现复杂的动画效果。 5. **JavaApk源码说明.txt**:这个文件可能包含了关于源代码的详细解释,包括代码结构、关键...

    fragmenttabhost

    1. **添加依赖**:在项目的build.gradle文件中,确保已经包含了对Android Support Library(现在称为AndroidX库)的依赖,例如`implementation 'androidx.fragment:fragment:1.3.0'`。 2. **布局文件**:在XML布局...

    第010章 ADB相关的问题.rarpython面试

    1. ADB介绍:ADB是Android开发者工具包(SDK)的一部分,通过USB或无线网络连接,允许开发者在电脑上调试运行在Android设备上的应用。它提供了三个主要功能:设备管理、文件传输和shell命令执行。 2. ADB安装与配置...

    html5图片分割后animal动画

    在Android设备上调试通过,意味着这个动画不仅在桌面浏览器上表现良好,也能在移动设备上顺畅运行。 对于Android设备,可能需要考虑兼容性问题,因为不同的浏览器可能对HTML5和CSS3的支持程度不同。开发者可能使用...

    RxDogTag,为onerror()调查自动标记rxjava 2原始订阅点。.zip

    接着,在需要进行错误处理的Observable上调用`.dogTag()`方法,它会将RxDogTag的功能注入到当前的Observable流中。一旦发生错误,你就能在Logcat中看到带有详细订阅信息的错误日志。 此外,RxDogTag还支持自定义...

Global site tag (gtag.js) - Google Analytics