• 程序调控和监视(Logcat,Debug)


    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个功能区:

    1. 单步调试区
    2. 断点管理区
    3. 求值表达式
    4. 线程帧栈区
    5. 对象变量区
    6. 变量观察区

     

     

    下面我们对单步调试区进行介绍。

    单步调试区

    该区提供了调试的主要操作,和你所熟知的一样的,主要有: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界面: 

     

     

  • 相关阅读:
    window对象open方法详解
    jse中将数据反转
    jqery实现10X10的表格,双击消失
    Filter实现登录功能限制
    jQuery全选功能
    Fliter设置字符编码,解决中文问题
    innerHTML、innerText和outerHTML、outerText的区别
    Delphi ActiveX Form的使用实例
    Mina 客户端,服务器简单Demo
    Mina 资料
  • 原文地址:https://www.cnblogs.com/sunxiaoyan/p/9012894.html
Copyright © 2020-2023  润新知