在 Android Studio
中,最基本的以 debug
模式运行程序并打断点进行调试,相比大家都会,不过,如果遇到一些特殊的调试场景,则需要运用一些特殊的调试技巧来进行调试。
有时候,我们需要对已经运行的程序进行调试,这时候应该使用 Android Studio
的 Attach
功能:
Attach
点击工具栏中的 Attach Debugger to Android Process
按钮,会显示出可以 Attach
的进程:
如果未勾选 Show All Processes
选项,则只会显示当前项目对应的进程,勾选 Show All Processes
选项之后,则会显示当前机器上跑着的所有进程(需要 root
权限)。
在调试之前先打好断点,然后在这里选择目标进程之后,即可成功断上。
在某些场景下,部分代码可能在程序一启动就执行完了,这种情况下,可以使用 “等待调试” 功能来让程序暂时停住,等待调试器 Attach
之后再开始执行。
第一种方法是直接在代码中添加:
import android.os.Debug;
// .....
Debug.waitingForDebugger();
编译运行后,当代码执行到这一句话之后,便会显示 Wait For Debugger
字样并且暂停执行,等待用户手动 Attach
之后才会接着执行,此时,就能断住之前执行太快断不住的代码进行调试了。
另外一种方法是使用 adb
指令:
adb shell am set-debug-app -w <packageName>
来设置待调试应用,设置了这一条语句之后启动对应应用之后则会停住,等待调试器 Attach
,这种方法的好处是可以不用修改代码就让应用等待调试。
在一些特殊的场景,需要调试 Android SDK
源码中产生的异常,通过 Android SDK
源码中产生的现象发现自己写的代码逻辑的问题。
这种情况下,需要使用原生 Android ROM
来进行调试,因为通常来说,第三方产商自己的 ROM
都进行了不同程度的定制,一般第三方 ROM
的字节码都与 Android Studio
提供的 SDK
源码行号对应不上,导致无法调试。最简单的方法,就是使用模拟器进行调试,因为模拟器的 ROM
是官方提供的 AOSP
系统,行号能够对应。
另外一点需要注意的是,如果需要调试 Android SDK
源码,需要保证 build.gralde
中配置的 minSdkVersion
与系统的版本相对应,如果临时需要调试 Android SDK
源码,可以先将 build.gradle
中的 minSdkVersion
调整到目标版本,完成调试之后再改回来。
另外,调试某个版本的 Android SDK
源码,需要先下载源码,然后通过 IDE
的跳转功能进入源码,然后就像对普通正常代码一样进行调试即可:
Android Sources
调试 NDK
代码其实与调试 Java
代码一样,只需要在调试前将 Run Configuration
中的 Debugger
标签页中的 Debug Type
一栏修改为 Auto
或者 Native
即可:
Run Configuration
完成修改后像对普通代码一样调试即可。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有