zoukankan      html  css  js  c++  java
  • AnDbg调试工具

    • 下载andbug
    git clone https://github.com/anbc/AndBug.git
    • 进入下载目录make编译
    • adb shell ps 查看进程PID

    • /andbug shell -p PID号,就可以进入调试。
    • classes  app'name   列出所以关于app的类。
    • methods android.ONDragon.demo  列出类的方法。
    • break  断点
    • break java.io.File


      可以通过break-list命令查看断点设置情况


      9.2 对方法进行断点设置
      通过下面命令对函数进行中断
      >> break java.io.File delete



      9.3 断点触发的情况
      设置断点后,操作apk程序,一旦程序出发了某个设置的断点,整个程序就会挂起,并显示相关信息。通过输出的信息可以知道,apk由于调用了java.io.File.exists()Z:0函数被中断下来。其他信息还包括整个调用java.io.File.exists()Z:0函数的堆栈信息。


      9.4 删除已设置断点
      通过break-remove 536870916
      将之前设置的中断删除掉


      另外:break-remove all表示删除所有当前设置的断点。
      10、恢复运行
      命令:resume
      功能:触发断点整个进程暂停后,通过调用resume命令,继续运行该apk
      注:由于代码中bug的原因,需要连续两次调用resume命令才能恢复apk的运行


      如上图,执行两次resume命令后,恢复apk的运行,由于对整个java.io.File类设置了断点,应用又中断在java.io.File.<init>上。

      11、进程暂停命令
      命令:suspend
      功能:暂停当前apk进程


      由于还没有与该命令配合使用的命令,实际使用中没有太大作用

      12、帮助命令help



      13、class-trace 类跟踪命令
      命令:class-trace java.io.File
      功能:对 java.io.File类的调用情况进行跟踪
      可以看到“thread <15> BackgroundHandler”线程,调用了“java.io.File.renameTo”,调用的参数是:
           -- this=Ljava/io/File; <830018592096>
           -- newPath=Ljava/io/File; <830016257352>
      并且可以看到整个的堆栈调用的情况。



      取消跟踪也可以使用break-remove命令实现。
      14、method-trace 方法跟踪命令
      命令:method-trace java.io.File renameTo
      功能:对java.io.File renameTo函数进行跟踪,跟踪与直接设置断点的差别是,使用跟踪不中断目标进程的执行,只对相应函数的调用信息进行输出。


      获取函数调用的跟踪信息


      15、列举当前线程信息
      命令:threads


      16、对线程进行跟踪
      命令:thread-trace
      将main线程设置为跟踪县城,所有main县城相关的调用都会被跟踪下来,如图所示:


      会列出函数调用的情况,参数,以及堆栈情况。
      17、显示指定类中的静态变量的信息
      命令:statics com.android.internal.view.menu.MenuBuilder


      18、查看对象信息
      通过class-trace命令可以跟踪到目标函数中对象的Id信息,


      通过对象的Id使用inspect命令,可以查处该队形的详细信息。


      由于在break命令设置断点后,触发断点时反馈的信息,没有包含Object Id的信息,导致inspect命令用起来不是很方便。

      19、源码关联命令
      命令:source 与源代码关联起来,可以是smali代码。
      命令:dump 展示指定方法的代码。
      20、Web输出命令
      命令:navi
      注:为了支持navi命令,需要安**ottle库。

      需要bottle库。应该是一个web展示的页面
      需要安**ottle库,来实现。

      21、退出命令
      命令:exit

    • http://bbs.pediy.com/thread-183412.htm   转自看雪论坛。
  • 相关阅读:
    H5及微信中唤起app的解决方案
    html5统计数据上报API:SendBeacon
    基于webpack4的react开发环境配置
    electron-vue开发爬坑指南
    利用git 进行多人协作开发
    js 性能优化利器:prepack
    各种渲染方式对比解析
    Nuxt.js部署应用的方式
    微信小程序--data的赋值与取值
    甘超波:什么是个人定位
  • 原文地址:https://www.cnblogs.com/DeeLMind/p/6844485.html
Copyright © 2011-2022 走看看