Android下的JDB调试

2024-05-29 17:08
文章标签 android 调试 jdb

本文主要是介绍Android下的JDB调试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://blog.csdn.net/jinzhuojun/article/details/7399249

第一步在$HOME/.jdbrc里设断点,如:

stop in com.almalence.hdr.MainScreen.FindExpoParameters

第二步让程序在启动时停止等待jdb:

Dev Tools -Development Settings -> 选中要调的程序后点wait for debugger。

(具体可参见http://blog.csdn.net/ariesjzj/article/details/7393573)

注:以上这两步不是必须的,只有在程序一起来就挂掉的情况下才用到,否则等程序启动起来也来得及attach上去和设断点。

第三步启动DDMS,这时程序前面应该有个红色小虫,点上面的开始调试按钮。这步不是必须的,这步的工作其实相当于手动敲:

$ adb -d forward tcp:8700 jdwp:$PID

其中$PID为要调程序的进程号。

第四步启动jdb客户端:

zjin@zjin-desktop:~/debug$ jdb -attach localhost:8700
Set uncaught java.lang.Throwable
Set deferred uncaught java.lang.Throwable
Initializing jdb ...
*** Reading commands from /home/zjin/.jdbrc
Deferring breakpoint com.almalence.hdr.MainScreen.FindExpoParameters.
It will be set after the class is loaded.
> > Set deferred breakpoint com.almalence.hdr.MainScreen.FindExpoParameters

Breakpoint hit: "thread=<1> main", com.almalence.hdr.MainScreen.FindExpoParameters(), line=1,124 bci=0

<1> main[1] where
[1] com.almalence.hdr.MainScreen.FindExpoParameters (MainScreen.java:1,124)
[2] com.almalence.hdr.MainScreen.setupCamera (MainScreen.java:889)
[3] com.almalence.hdr.MainScreen.surfaceChanged (MainScreen.java:579)
[4] android.view.SurfaceView.updateWindow (SurfaceView.java:544)
[5] android.view.SurfaceView.access$000 (SurfaceView.java:81)
[6] android.view.SurfaceView$3.onPreDraw (SurfaceView.java:169)
[7] android.view.ViewTreeObserver.dispatchOnPreDraw (ViewTreeObserver.java:590)
[8] android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1,620)
[9] android.view.ViewRootImpl.handleMessage (ViewRootImpl.java:2,446)
[10] android.os.Handler.dispatchMessage (Handler.java:99)
[11] android.os.Looper.loop (Looper.java:137)
[12] android.app.ActivityThread.main (ActivityThread.java:4,424)
[13] java.lang.reflect.Method.invokeNative (native method)
[14] java.lang.reflect.Method.invoke (Method.java:511)
[15] com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:785)
[16] com.android.internal.os.ZygoteInit.main (ZygoteInit.java:552)
[17] dalvik.system.NativeStart.main (native method)
<1> main[1]

常用命令:

threads:列出所有线程,然后就可以用thread命令选线程来调了。

where:相当于gdb的bt,显示函数调用栈。

up, down:在函数调用栈中上一层和下一层。

monitor:每次停止时执行的命令。如monitor locals后每一次执行next就可以自动打出局部变量。

locals:列出局部变量

classes:列举当前已知的类。

next ,step什么的和gdb里一样。

suspend, resume:线程的suspend和resume,需要加线程号为参数。

set,print:设置,输出表达式的值。

methods, fileds:列举类的方法和成员变量。

catch, watch:跟异常和数据的变化,和gdb里差不多。

trace:跟踪函数的进出。不用在函数头尾手动加printf了。

cont:断点后继续执行。

还有很多其它命令可在提示符下打help查看。

 

这篇关于Android下的JDB调试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1014125

相关文章

Android 12解决push framework.jar无法开机的方法小结

《Android12解决pushframework.jar无法开机的方法小结》:本文主要介绍在Android12中解决pushframework.jar无法开机的方法,包括编译指令、框架层和s... 目录1. android 编译指令1.1 framework层的编译指令1.2 替换framework.ja

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32