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

Android调试工具之adbs

 
阅读更多

这两天在看Android的编译及制作rootfs工具的相关流程,无意中在mydroid/build/tools/中发现了它——adbs!

adbs是一个用python写的命令行工具,利用了adb,addr2line, objdump这三个工具,大家看了这三个工具,可能就能猜到,adbs是用来分析应用程序尤其是与函数库相关的crash问题:)

具体的代码就不多看了,无外乎是一些运行环境的设定。

下面就来看一下如何使用它:
         1. 设定好ANDROID_PRODUCT_OUT环境变量
             ANDROID_PRODUCT_OUT="[your_path]/mydroid/out/target/product/generic",因为adbs需要使用到编译好的symbols,所以你需要编译整个android的source,得到与你调试环境一致的symbols文件
         2.  直接运行adbs
             adbs logcat
   
    我特意准备了一个会crash的jni测试程序,得出的结果如下:
    I/DEBUG   (  170): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG   (  170): Build fingerprint: 'tmous/htc_pyramid/pyramid:2.3.4/GRJ22/125597.1:user/release-keys'
I/DEBUG   (  170): pid: 20715, tid: 20727  >>> [your product name] <<<
I/DEBUG   (  170): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
....
I/DEBUG   (  170):  scr 80000010
I/DEBUG   (  170):
I/DEBUG   (  170):          #00 execle  /[your_path]/mydroid/bionic/libc/unistd/exec.c:84
I/DEBUG   (  170):          #01 tmalloc_small.clone.10<-tmalloc_small  /[your_path]/mydroid/bionic/libc/bionic/dlmalloc.c:3896
I/DEBUG   (  170):          #02 get_malloc_leak_info  /[your_path]/mydroid/bionic/libc/bionic/malloc_debug_common.c:168
./prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-objdump: '/[your_path]/xxxxxx
./prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-addr2line: '[your_path]/xxxxxx
I/DEBUG   (  170):          #03 (unknown)  (unknown)
I/DEBUG   (  170):          #04 dvmPlatformInvoke  DexDataMap.c:0
I/DEBUG   (  170):
    这里明显可以看出adbs给出了有用的黑体部分的信息,即做了一些地址到具体程序函数名和行数的转换,方便我们定位问题。
为了给大家看得更清楚,下面是单纯使用logcat看到的crash信息:
11-02 17:18:40.438: INFO/DEBUG(170): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
11-02 17:18:40.438: INFO/DEBUG(170): Build fingerprint: 'tmous/htc_pyramid/pyramid:2.3.4/GRJ22/125597.1:user/release-keys'
11-02 17:18:40.448: INFO/DEBUG(170): pid: 20715, tid: 20727  >>> [your product name]<<<
11-02 17:18:40.448: INFO/DEBUG(170): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
...
11-02 17:18:40.448: INFO/DEBUG(170):  scr 80000010
11-02 17:18:40.618: INFO/DEBUG(170):          #00  pc 000161c8  /system/lib/libc.so (__libc_android_abort)
11-02 17:18:40.618: INFO/DEBUG(170):          #01  pc 00013bf0  /system/lib/libc.so (dlfree)
11-02 17:18:40.618: INFO/DEBUG(170):          #02  pc 00014a72  /system/lib/libc.so (free)
11-02 17:18:40.618: INFO/DEBUG(170):          #03  pc 0000664e  [your crash app name]
11-02 17:18:40.618: INFO/DEBUG(170):          #04  pc 00011e74  /system/lib/libdvm.so
11-02 17:18:40.618: INFO/DEBUG(170): code around pc:
11-02 17:18:40.618: INFO/DEBUG(170): afd161a8 2c006824 e028d1fb b13368db c064f8df

分享到:
评论

相关推荐

    google adbs手机解锁工具

    ADB(Android Debug Bridge)是Google提供的一款强大的命令行工具,它允许用户通过USB或者无线网络连接电脑与Android设备,进行数据传输、设备控制以及系统调试。在这个压缩包中,包含了以下关键文件: 1. ...

    稳定版的1.0.36版本adb,手机adb命令操作工具

    adb,全称Android Debug Bridge,是Google为Android开发者提供的一款强大的命令行工具,它允许用户通过USB或Wi-Fi连接电脑与Android设备进行通信。在1.0.36这个稳定版中,它优化了功能,提高了操作的稳定性和效率,...

    安华高的OFN IC资料 ADBS-A320

    ### 安华高的OFN IC资料 ADBS-A320 #### 技术背景与应用 随着智能手机功能的不断扩展和技术的飞速发展,新型的交互方式不断涌现。其中,“手指鼠标”作为一项新兴技术,在手机导航领域得到了广泛应用。安华高...

    记录下hbuilderX+vue开发app 真机调试的问题

    hbuilderx连接手机调试 一.找到hbuilderx的安装目录并找到plugins 二.找到launcher 三.找到tools目录 四.找到adbs并复制地址 五.添加到系统变量path window+R 输入:set path = %path%;D:\soft\HBuilderX\...

    adbs959:回购项目代码

    1. 版本控制:如Git,是用于管理和跟踪代码变更的重要工具。`adbs959-main`很可能是一个Git仓库的主要分支,如“master”或“main”,代表了项目的主线代码。 2. 代码审查:在回购代码后,需要进行详尽的代码审查,...

    NYU_ADBS:高级数据库系统最终项目(与 Kun Liu 合作)

    选择Java作为开发语言,是因为Java提供了丰富的库和工具支持网络通信、线程管理和序列化,这些都是构建分布式系统的关键要素。此外,Java的跨平台兼容性使得NYU_ADBS可以在多种硬件和操作系统上部署,增加了系统的...

    基于Avago ADBS-A320芯片光查找导航传感器解决方案-电路方案

    该光查找导航传感器基于Avago 公司的ADBS-A320(ADBS-A320数据手册)芯片设计,采用了新的低功耗架构和自动功率管理模式,适合高达15ips的高速运动的检测。由于集成了振荡器和LED,从而使外接元件最小化。自调整帧速...

    ADB_Shell:用于在 Android 设备上执行命令的独立二进制包,带有方便的 shell 和最流行的 ADB 命令的速记

    提示:您可以为adbshell.bat创建一个 Windows 快捷方式,将adbshell.bat命名为adb或adbs并将其放置在%PATH%中的某个位置。 因此,您将始终拥有 ADB shell 和WinKey + R &gt; adb &gt; Enter 。添加速记这些是通常包含一行...

    基于GaAs / AlGaAs的不对称DBS(ADBS)RTD

    基于GaAs / AlGaAs的不对称DBS(ADBS)RTD

    FengShui2_FightTracker2:风水格斗追踪器的第二版,使用aureliaJS受益于ECMA6和强大的绑定

    风水2_FightTracker2 一个小型前端网络应用程序,用于跟踪风水游戏中的敌人。 它提供了基本功能,可创建特色敌人(或老板...)和木偶的列表,遵循其大部分统计数据,最重要的是,使他们使用快照来滚动AV(您甚至...

    计算机外文 计算机专业

    它要求数据库系统提供一套完整的工具和界面,使得管理员可以轻松地管理和维护规则集。这还包括规则冲突的检测和解决,以及规则执行效率的优化。 ### 三、结论 SAMOS作为一款先进的活性面向对象数据库系统,通过...

    matlab导入excel代码-rcsviz:用于绘制RC+S数据的存储库

    它包括用于以交互形式绘制数据的GUI工具的集合以及用于获取原始数据的命令行(Matlab)工具。 它还具有一些代码以允许同步到Delsys数据。 数据记录提示 此回购中提供了用于在家中,诊所和aDBS中记录的样本数据文件。...

    从传统数据库到云数据库架构的演进.pdf

    根据Gartner和IDC的报告,阿里云在亚太地区甚至全球的市场份额均表现优异,其数据库服务如RDS、PolarDB、ADBS等,为众多企业提供了稳定、高效且安全的数据解决方案。 总结来说,从传统数据库到云数据库的演进,是...

Global site tag (gtag.js) - Google Analytics