前言:

本文作者:周才智 转载须注明作者与出处。违者必究。

原文地址:http://segmentfault.com/a/1190000004380690

话说诸葛亮是一个优秀的程序员,每个锦囊都是应对不同的case而编写的。可是优秀的程序员也敌只是更优秀的bug。六出祈山,七进中原,鞠躬尽瘁,死而后已的诸葛亮仅仅由于有一个错误的case-马谡,整个结构就被break了。

BUG真的是一个非常讨人厌烦的东西,它总是在你以为自己已经战胜它的时候跳出来嘲笑你。

怎样才干拿下这些烦人的BUG呢?我想要从DEBUG開始。这里给刚刚接触编程的新手们介绍一下Debug的方法。学会了这些方法后重复练习。当你积累了上万的有效代码量以后自然会发现你的水平将大大精进。

工具介绍:

Android Studio:差点儿全部的编译器都会带上自己的DEBUG调试器,所以先来讲讲这个。我这里就以Android studio为例。Android studio是谷歌推出的专门同来进行Android开发的软件,因为针对性比eclipse强所以里面集成了非常多插件个人认为比eclipse方便不少。如今多数安卓开发人员都在使用这款IDE了。

Android Studio自带模拟器:简单讲Android不像C或者C++甚至是单纯的Java编程。

它从设计到编敲代码到调试。都离不开手机,Android Studio自带一款强大的模拟器,他能在电脑上模拟出一台手机。假设你不考虑程序在真实设备上的兼容性,这款模拟器已经很棒了。一般程序在开发阶段的须要都能用模拟器来满足。

云手机:模拟器也有缺点。它的效率比較低。而且程序在真机上的执行情况。远比模拟器要复杂。所以开发人员的程序写好后还须要用真机来调试。我不太不愿意用自己手机调试,所以会用Testbird的云手机。它们会在云端提供好几百款主流手机,你能够直接用Android Studio等IDE。去远程连接这些机器做调试,简直就是为调试Android程序量身定做的。

i18n=zh-cn&cl=JnYN7g&invite=YjX97B" target="_blank" style="color:rgb(0,154,97); text-decoration:none; outline:0px; background:transparent">Testbird官方注冊地址(如今送价值260元的体验机时 活动时间为1月1日至1月31日)

建立一个初始程序:

首先在建立一个默认的空白project之后。我们先在project里面加点儿东西,这样我们才有东西可调。由于这篇文章是写给新手们看的(调试都不会你敢自称老手?)。大家都知道Android编程里很重要的一个概念就是MVC。MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。当中模型(model)大家能够无论。由于这涉及到结构和数据类型,本例还涉及不到。

View能够这么概括——你在手机上所看见的都是view或者由view组成的,但这句话反过来是错的,View并不都是可见的。至于controller控制器你能够将其理解为你的控制逻辑。

在Android studio默认project里面本来是有一个TextView和一个信封样的button,我们能够对这个默认project作出例如以下改动:加入一个Button按键,在用户按下该按键之前那个TextView显示的内容为默认的“Hello world!”。当用户按下button以后该TextView变成“->按下的次数”。我把详细步骤贴在这儿:

以Design形式打开content_main.xml,拖出一个Button控件。再进入content_main.xml的Text形式,在button里面增加这样一句话:android:onClick="Btn1_Click",然后进入MainActivity.java文件,依次增加以下的语句:

import android.widget.*; // 引入JAVA包



TextView textView;//创建一个TextView对象

Button button; // 创建一个button对象

int count = 0;



在onCreate()方法中加入例如以下语句:

button = (Button)findViewById(R.id.button);

textView = (TextView)findViewById(R.id.textView);//这两句话将View和controller联系了起来,也就是说你对手机上view的操作有了这两句话才干反映到你的控制逻辑也就是程序中来~

`public void Btn1_Click(View view)`//按键后要作出反映的函数。
{
String str = "---->" + count;
textView.setText(str);
count++;
}

然后执行程序就能够了,按一下数字就会添加一个。这里先上一张图(我用的是云手机,大家有条件的能够用自己的手机或者模拟器):

DEBUG:

第一步,设置断点

如今初始程序就算是完毕了。接下来说说调试,Android调试首先你得知道自己在哪儿打断点。它不像C语言那样仅仅有C文件在你想打哪儿打哪儿。Android主要有两种形势的文件,一种是.java文件一种是.xml文件。

打断点仅仅能打在.java文件中面,由于.java文件就是控制逻辑。而.xml文件大家能够理解成视图文件或者叫布局文件,程序走逻辑流程是永远不会走到那儿的,就算到了也没有不论什么的意义。打断点的方式也很easy,仅仅是在某一行代码前用鼠标左键点一下出现了红圆点就表示打断点成功了。例如以下图:

打点是使用DEBUG的第一步,那么接下来就仅仅须要点击run->debug”run”就能够了。

当你的程序执行到断点所在的位置的时候程序就会自己主动暂停,例如以下图:

假设你是通过DEBUG执行程序手机也会有提示。大家能够看看。

然后程序假设执行到断点处你就会看见某行处于被选中的状态。这个时候程序已经暂停了。

这个时候你能够选择继续执行到下一个断点或者自己一步一步的跟踪调试下去:

一步步调试(F8)

直接执行到下一个断点(F9)

Debug的操作核心就仅仅有这简单的三步:打断点。通过DEBUG执行程序,按自己的须要选择调试方式(调试途中也能够打断点)。

今天主要给大家简单的介绍了一下Debug,是基本使用方式,下一节将为大家详细解说DEBUG的使用方法和特性。

Android开发之BUG专讲:入门篇(一)的更多相关文章

  1. 【入门篇】ANDROID开发之BUG专讲

    话说诸葛亮是一个优秀的程序员,每个锦囊都是应对不同的case而编写的.可是优秀的程序员也敌只是更优秀的bug.六出祈山.七进中原,鞠躬尽瘁,死而后已的诸葛亮仅仅由于有一个错误的case-马谡,整个结构 ...

  2. Android开发之Activity(cho1)篇

    一.Activity判断网络是否连通: 首先创建一个Andorid Project项目,然后添加一个on1类,Layout一个button控件和Textview控件. values有一个Color.x ...

  3. 【Android UI】Android开发之View的几种布局方式及实践

    引言 通过前面两篇: Android 开发之旅:又见Hello World! Android 开发之旅:深入分析布局文件&又是“Hello World!” 我们对Android应用程序运行原理 ...

  4. Android开发之旅5:应用程序基础及组件

    引言 上篇Android开发之旅:应用程序基础及组件介绍了应用程序的基础知识及Android的四个组件,本篇将介绍如何激活组关闭组件等.本文的主题如下: 1.激活组件:意图(Intents) 1.1. ...

  5. Android开发之旅3:android架构

    引言 通过前面两篇: Android 开发之旅:环境搭建及HelloWorld Android 开发之旅:HelloWorld项目的目录结构 我们对android有了个大致的了解,知道如何搭建andr ...

  6. Android开发之旅2:HelloWorld项目的目录结构

    引言 前面Android开发之旅:环境搭建及HelloWorld,我们介绍了如何搭建Android开发环境及简单地建立一个HelloWorld项目,本篇将通过HelloWorld项目来介绍Androi ...

  7. 【转】Android开发之ListView+EditText-要命的焦点和软键盘问题解决办法

    Android开发之ListView+EditText-要命的焦点和软键盘问题解决办法 [原文链接] 这篇文章完美的解决了我几个月没结论的bug... 感谢热爱分享的技术达人~ 我是怎么走进这个大坑的 ...

  8. Android开发之旅: Intents和Intent Filters(理论部分)

    引言 大部分移动设备平台上的应用程序都运行在他们自己的沙盒中.他们彼此之间互相隔离,并且严格限制应用程序与硬件和原始组件之间的交互. 我们知道交流是多么的重要,作为一个孤岛没有交流的东西,一定毫无意义 ...

  9. Android开发之ViewPager+ActionBar+Fragment实现响应式可滑动Tab

     今天我们要实现的这个效果呢,在Android的应用中十分地常见,我们可以看到下面两张图,无论是系统内置的联系人应用,还是AnyView的阅读器应用,我们总能找到这样的影子,当我们滑动屏幕时,Tab可 ...

随机推荐

  1. MySQL学习笔记之左连接

     MySQL的左连接 #左连接,以左表为基表 select class1.stuid,class1.stuname,sex,course from class1 left join course on ...

  2. Spark Streaming基础概念

    为了更好地理解Spark Streaming 子框架的处理机制,必须得要自己弄清楚这些最基本概念. 1.离散流(Discretized Stream,DStream):这是Spark Streamin ...

  3. backface-visibility当元素不面向屏幕时是否可见

    html代码 <h1>div1可见</h1> <div class="div1">div---1</div> <h1>d ...

  4. Hadoop学习笔记(一)Hadoop的单节点安装

    要想深入学习Hadoop分布式文件系统,首先需要搭建Hadoop的实验环境,Hadoop有两种安装模式,即单节点集群模式安装(也称为伪分布式)和完全分布式模式安装,本节只介绍单节点模式的安装,参考官方 ...

  5. Electron结合React开发环境遇到的问题

    链接 将create-react-app与electron集成在了一个项目中.但是在React中无法使用electron 当在React中使用require('electron')时就会报TypeEr ...

  6. Caffe+Kubuntu16.04_X64+CUDA 8.0配置

    前言: 经过尝试过几次Caffe,theano,MxNet之后,很长时间没有进行caffe的更新,此次在Ubuntu16.04下安装Caffe,折腾了一天时间,终于安装成功. 参考链接:Caffe+U ...

  7. [Intermediate Algorithm] - Everything Be True

    题目 所有的东西都是真的! 完善编辑器中的every函数,如果集合(collection)中的所有对象都存在对应的属性(pre),并且属性(pre)对应的值为真.函数返回ture.反之,返回false ...

  8. 【转载】使用 IntelliJ IDEA 新建一个 web项目

    IntelliJ IDEA 创建Web项目(全教程)   说明:IntelliJ IDEA 版本为14.JDK 版本为1.7tomcat 版本为apache-tomcat-7.0.70 注:在创建过程 ...

  9. [CodeForces1059E] Split the Tree

    树形DP. 用倍增处理出来每个点往上能延伸出去的最远路径,nlogn 对于每个节点,如果它能被后代使用过的点覆盖,就直接覆盖,这个点就不使用,否则就ans++,让传的Max改成dp[x] #inclu ...

  10. Codeforces 902D/901B - GCD of Polynomials

    传送门:http://codeforces.com/contest/902/problem/D 本题是一个数学问题——多项式整除. 对于两个整数a.b,求最大公约数gcd(a,b)的辗转相除法的函数如 ...