Android调试工具之adbs

5 篇文章 0 订阅
1 篇文章 0 订阅

这两天在看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 






  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 当使用HBuilderX进行真机调试时,有时会遇到连接不上手机的问题。为了解决这个问题,可以尝试以下几个解决方案。首先,检查adb路径是否正确,可以在HBuilderX的顶部栏中找到工具-设置-adb路径,确保路径正确。其次,确认你使用的是正确的HBuilderX路径,有时电脑上可能安装了多个HBuilderX版本。然后,打开HBuilderX的磁盘路径,找到plugins\launcher\tools\adbs文件夹,将其中的三个文件替换成1.0.31版本的同名文件。接下来,关闭电脑上占用adb进程的程序,比如手机管家等,可以在设备管理器中查找相关软件并关闭。最后,如果以上方法仍然无效,可以尝试重启HBuilderX并多次尝试真机运行。另外,对于初学者来说,建议下载一个稳定的HBuilderX版本,可以分开存储不同版本的HBuilderX,这样不会覆盖原来的版本,并且打开后其中的项目会保持一致。最新版本不一定是最好的,有时最新版本可能存在各种异常。建议找一个稳定的版本使用,不要随意更新。希望这些解决方案能帮助你解决HBuilderX真机调试连接不上的问题。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [Hbuilder真机运行连接不到手机的解决](https://blog.csdn.net/weixin_34184158/article/details/91435175)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [使用HbuilderX进行uniapp的真机调试](https://blog.csdn.net/F2691898750/article/details/128767760)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值