使用jdb调试android Java层

以前不知的有这么个玩意,不需要解决import问题,步骤也很简单:

ubuntu上是有jdb的,运行一下就能看到,类似与gdb

1.需要手机端目标进程的PID adb shell ps | grep一下就行


2.设置adb forward

adb forward tcp:9000 jdwp:PID //目标进程的ID

3.指定源码目录,比如Gallery2

export SOURCEPATH=/home/androidcode/android4.4/packages/apps/Gallery2



4.启动jdb

jdb -sourcepath $SOURCEPATH -attach localhost:9000


然后就可以调试了


打断点

stop at 包名.类名:行号


用clear可以查看设置的断点


<1> main[1] clear
Breakpoints set:
    breakpoint com.android.gallery3d.filtershow.crop.CropActivity:305
    breakpoint com.android.gallery3d.filtershow.tools.SaveImage:673
    breakpoint com.android.gallery3d.filtershow.tools.SaveImage:678
<1> main[1]


清除断点:

clear 包名.类名:行号


显示变量:

locals

<23> ProcessingTaskController[1] locals
Method arguments:
oldSelectedFile = instance of java.io.File(id=830084687824)
values = instance of android.content.ContentValues(id=830084688192)
result = instance of android.net.Uri$StringUri(id=830084625344)
Local variables:
context = instance of com.android.gallery3d.filtershow.pipeline.ProcessingService(id=830054410648)
sourceUri = instance of android.net.Uri$StringUri(id=830084625344)
file = instance of java.io.File(id=830084653392)
time = 1387794041594
deleteOriginal = true
fileUri = false


print 打印指定变量


<1> main[1] print sourceUri
 sourceUri = "content://media/external/images/media/1761"


<23> ProcessingTaskController[1] print fileUri
 fileUri = false



另外threads可以用来查看所有的线程

> threads
Group system:
  (java.lang.Thread)0xc141e1a2a8                                   <8> FinalizerWatchdogDaemon cond. waiting
  (java.lang.Thread)0xc141e1a0f8                                   <7> FinalizerDaemon         cond. waiting
  (java.lang.Thread)0xc141e19f90                                   <6> ReferenceQueueDaemon    cond. waiting
  (java.lang.Thread)0xc141e19ea0                                   <5> Compiler                cond. waiting
  (java.lang.Thread)0xc141e19cc0                                   <3> Signal Catcher          cond. waiting
  (java.lang.Thread)0xc141e19be0                                   <2> GC                      cond. waiting
Group main:
  (java.lang.Thread)0xc1418d5ca8                                   <1> main                    running
  (java.lang.Thread)0xc144f4c7c0                                   <24> Binder_7               running
  (java.lang.Thread)0xc144f4c6d0                                   <23> Binder_6               running
  (java.lang.Thread)0xc1422d5dd0                                   <27> AsyncTask #5           cond. waiting
  (java.lang.Thread)0xc1422d31c8                                   <26> AsyncTask #4           cond. waiting
  (java.lang.Thread)0xc1427ba540                                   <20> AsyncTask #3           cond. waiting
  (java.lang.Thread)0xc1426febc8                                   <22> Binder_5               running
  (java.lang.Thread)0xc1426fead8                                   <21> Binder_4               running
  (java.lang.Thread)0xc142632258                                   <19> AsyncTask #2           cond. waiting
  (java.lang.Thread)0xc14265ac50                                   <12> AsyncTask #1           cond. waiting
  (com.android.internal.os.BackgroundThread)0xc141fda0b0           <18> android.bg             running
  (com.android.gallery3d.util.PriorityThreadFactory$1)0xc141f23d40 <17> thread-pool-3          cond. waiting
  (java.lang.Thread)0xc141f2c870                                   <16> Binder_3               running
  (com.android.gallery3d.util.PriorityThreadFactory$1)0xc141f2cdd8 <15> thread-pool-2          cond. waiting
  (com.android.gallery3d.util.PriorityThreadFactory$1)0xc141f2e5c0 <14> thread-pool-1          cond. waiting
  (com.android.gallery3d.util.PriorityThreadFactory$1)0xc141e8c6b8 <13> thread-pool-0          cond. waiting
  (android.opengl.GLSurfaceView$GLThread)0xc141e857e8              <11> GLThread 159           cond. waiting
  (java.lang.Thread)0xc141e34648                                   <10> Binder_2               running
  (java.lang.Thread)0xc141e34558                                   <9> Binder_1                running


thread  线程

  (java.lang.Thread)0xc141e34558                                   <9> Binder_1                running
> thread 0xc141e34558

suspend之后可以wherei查看栈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值