调试调试调试和附着模式断点
我开始写简单的调试器。 我们先来看看for循环
image.png
单击调试模式运行
image.png
显示调试面板
image.png
一.简单调试
1. step over :步步后退
image.png
当前程序运行的位置,可以看到I的值如程序代码所示。 在黄色代码中,这是AS的功能,对于调试是非常大的福利。
image.png
单击分步调试按钮查看效果
image.png
当您返回“轨迹调试器”面板时,Variables显示面板显示I值为0,而选择器值为0。 然后,可以看到Frames控制面板中当前程序的位置显示在oncreate (第:28、28行)中。
image.png
2. step into :看方法往里走
例如,在我们的for循环中调用了stepnext(inti )方法。 如果你想去这里查看这个方法中的执行过程,你可以这样做,如果你去这个方法,你可以按F7,或者按下图所示的图标
image.png
此时到了stepNext方法。
image.png
我在这里打印了log。 再次点击F8查看Logcat。 这里我打印的log都是教程用的。 调试不需要打日志。 直接看显示面板就可以了
3 .完整查看3. force step into :所有方法
image.png
4. step out :如果有断点,下一步,继续走断点
现在,如果我们的进程中包含调用方法,如果有断点,我们将前往下一个断点。 如果没有断点,并且在调用方法中,请跳出此方法。
image.png
这里很难理解,举个例子吧:
image.png
上面(我现在程序的位置在第一个断点的位置(24行)。 我调用的stepNext方法也有断点。 此时,按step out按钮将到达stepNext断点的位置)第39行)我现在再次按step out将返回调用stepNext方法的下一个可执行代码(到30行)。
image.png
上图(如果程序的位置位于stepNext方法中,此时按step out键将前往调用stepNext方法所调用的下一个可执行代码(30行)
5 .运行到客户:在下一个突破点见面吧
image.png
二.高级调试
1 .断点之间的调试
如果需要设置多个断点并直接跳转到下一个断点,请直接单击下图
image.png
2 .变量的观察
image.png
image.png
如果变量名称很长,请执行以下操作:
选择“变量”的变量名称,单击“右键”,然后选择“添加到Watches”以显示在Watches面板中
image.png
3 .设置变量值
程序有很多条件语句和循环语句,调试也需要时间。 可以通过快速设置变量值来加快调试速度。 您可以:
选择“变量”的变量名称,然后单击“右键”,然后选择“设置值.”,或者选择后立即选择F2 (上图)。 下图为Variables面板。
image.png
4 .显示断点
image.png
单击以显示所有断点和位置代码,还可以设置一些属性
image.png
5 .停止调试]
请注意,此处的“停止调试”将跳过所有调试,而不是停止程序
image.png
到此为止,我们的安卓studio断点调试和高级调试都结束了。
自动模式调试
请想象一下下面的场景。 如果你的APK已经在正常模式(非调试)下运行,突然想调试,不想重新运行浪费时间。 我该怎么办?
我想在普通模式下设置断点进行调试,可以吗?
当然可以。 不仅仅是可能的。 这种方式已经逐渐代替了以前的方案。 果然很方便呢。 那么具体怎么办呢?
一、设置断点后,正常运行APK
image.png
二、点击Attach进行调试
image.png
或者也可以如下打开
image.png
即,执行run-attachdebuggertoandroidprocess
image.png
attach process将前往指定的进程,并且在触发条件后立即进入调试模式