1.Logcat
2.效果图:实现点击Button,提示Logcat信息
(1)activity_main.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:paddingBottom="@dimen/activity_vertical_margin" 7 android:paddingLeft="@dimen/activity_horizontal_margin" 8 android:paddingRight="@dimen/activity_horizontal_margin" 9 android:paddingTop="@dimen/activity_vertical_margin" 10 tools:context="com.example.administrator.hello5.MainActivity" 11 android:orientation="vertical"> 12 13 <Button 14 android:id="@+id/bt" 15 android:layout_width="wrap_content" 16 android:layout_height="wrap_content" 17 android:text="Button" /> 18 </LinearLayout>
(2)MainActivity.java
1 package com.example.administrator.hello5; 2 3 import android.support.v7.app.AppCompatActivity; 4 import android.os.Bundle; 5 import android.util.Log; 6 import android.view.View; 7 import android.widget.Button; 8 9 public class MainActivity extends AppCompatActivity { 10 private Button button; 11 private static final String TAG="Locat"; 12 13 @Override 14 protected void onCreate(Bundle savedInstanceState) { 15 super.onCreate(savedInstanceState); 16 setContentView(R.layout.activity_main); 17 button=(Button)findViewById(R.id.bt); 18 button.setOnClickListener(new View.OnClickListener() { 19 @Override 20 public void onClick(View v) { 21 Log.v("tag","详细信息"); 22 Log.d(TAG,"调试信息"); 23 Log.i(TAG,"通告信息"); 24 Log.w(TAG,"警告信息"); 25 Log.e(TAG,"错误信息"); 26 27 } 28 }); 29 30 31 32 } 33 }
(3)设置过滤器:
2.Debug调试
打开debug调试 :
小瓢虫
设置断点
双击
Debug调试
Android Studio目前已经成为开发Android的主要工具,用熟了可谓相当顺手。作为开发者,调试并发现bug,进而解决,可是我们的看家本领。正所谓,工欲善其事必先利其器,和其他开发工具一样,如Eclipse、Idea,Android Studio也为我们提供了强大的调试技巧,今天我们就来看看Android Studio中有关调试的技巧。
首先,来看看Android studio中为我们提供的调试面板(标准情况下):
点击右上角Restore ‘Threads’View可先展示目前相关的线程信息:
android studio大体为我们提供了7个功能区:
- 单步调试区
- 断点管理区
- 求值表达式
- 线程帧栈区
- 对象变量区
- 变量观察区
下面我们对单步调试区进行介绍。
单步调试区
该区提供了调试的主要操作,和你所熟知的一样的,主要有:Step over、step into、force step into、step out、drop frame。
Show Execution Point
点击该按钮,光标将定位到当前正在调试的位置.
Step Over
单步跳过,点击该按钮将导致程序向下执行一行。如果当前行是一个方法调用,此行调用的方法被执行完毕后再到下一行。比如当前代码是:
如果当前调试的是第二行,当点击step over时,Math.min(num,100)方法先执行完后跳到第三行.
Step Into
单步跳入,执行该操作将导致程序向下执行一行。如果该行有自定义的方法,则进入该方法内部继续执行,需要注意如果是类库中的方法,则不会进入方法内部。
Force Step Into
强制单步跳入,和step into功能类似,主要区别在于:如果当前行有任何方法,则不管该方法是我们自行定义还是类库提供的,都能跳入到方法内部继续执行
Drop Frame
中断执行,并返回到方法执行的初始点,在这个过程中该方法对应的栈帧会从栈中移除.换言之,如果该方法是被调用的,则返回到当前方法被调用处,并且所有上下文变量的值也恢复到该方法未执行时的状态。
Force Run to Cursor (//注意执行到init()的时候使用
)
非常好用的一个功能,可以忽视已经存在的断点,跳转到光标所在处.举个简单例子说明下:
比如现在第10行,此时我想调试18行而又不想一步一步调试,能不能一次到位呢?我们只需要将光标定位到相应的位置,然后执行Force Run to Cursor即可:
Evaluate expression
点击该按钮会在当前调试的语句处嵌入一个交互式解释器,在该解释器中,你可以执行任何你想要执行的表达式进行求值操作。比如,我们在调试时执行到以下代码
此时执行Evaluate Expression,就相当于在调试行之前嵌入了一个交互式解释器,那么在该解释器中我们能做什么呢?在这里,我们可以对result进行求值操作:对着你想要求值得位置点击鼠标右键,选择evaluate Expression.此时会显示如下:
在弹出的输入框中输入求值表达式,比如这里我们输入Math.min(result,50)
,如下图
点击执行,我们发现在Result中已经输出了结果,如下:
断点管理区
Return
点击该按钮会停止目前的应用,并且重新启动.换言之,就是你想要重新调试时,可以使用该操作,嗯,就是重新来过的意思.
Pause Program
点击该按钮将暂停应用的执行.如果想要恢复则可以使用下面提到的Resume Program.
Resume Program
该操作有恢复应用的含义,但是却有两种行为:
1. 在应用处在暂停状态下,点击该按钮将恢复应用运行.
2. 在很多情况下,我们会设置多个断点以便调试。在某些情况下,我们需要从当前断点移动到下一个断点处,两个断点之间的代码自动被执行,这样我们就不需要一步一步调试到下一个断点了,省时又省力。举例说明:
假设我们分别在第2行和第4行添加了断点。如果此时我们调试在第2行,此时点击执行该操作,当前调试位置会自动执行到第4行,也就是第2到第4行之间的代码会自动被执行。
Stop
点击该按钮会通过相关的关闭脚本来终止当前进程.换言之,对不同类型的工程可能有不同的停止行为,比如:对普通的Java项目,点击该按钮意味着退出调试模式,但是应用还会执行完成.而在Android项目中,点击该按钮,则意味这app结束运行.
这里我们以一个普通的JAVA工程为例:
此时如果我们执行停止操作,发现程序退出调试模式,并正常执行完毕,Console中结果如下:
View Breakpoints
点击该按钮会进入断点管理界面,在这里你可以查看所有断点,管理或者配置断点的行为,如:删除,修改属性信息等:
Mute Breakpoints
使用该按钮来切换断点的状态:启动或者禁用.在调试过程中,你可以禁用暂时禁用所有的断点,已实现应用正常的运行.该功能非常有用,比如当你在调试过程中,突然不想让断点干扰你所关心的流程时,可以临时禁用断点.
Get thread dump
获取线程Dump,点击该按钮将进入线程Dump界面: