调试和错误处理

by admin on 2020年1月17日

1设置断点:

android调试debug快捷键  

 1. 【Ctrl+Shift+B】:在当前行设置断点或取消设置的断点。  

 2. 【F11】:调试最后一次执行的程序。  

 3. 【Ctrl+F11】:运行最后一次执行的程序。 

 4.
【F5】:跟踪到方法中,当程序执行到某方法时,可以按【F5】键跟踪到方法中。  

 5. 【F6】:单步执行程序。

  6. 【F7】:执行完方法,返回到调用此方法的后一条语句。  

 7. 【F8】:继续执行,到下一个断点或程序结束。

01.正常模式下的调试

把光标放到你想停止的那一行打上红勾,之后按F5进行调试,(或者按在光标那一行按F4直接设置断点)此时断点那行会由红色变为蓝色。注意当使用了函数的时候,需要在函数内部设置断点,单步执行才会在函数内部执行,否则只会在main函数中执行。当所需变量是由scanf之类输入,而断点设置在scanf函数的后面,程序在调试之前会首先要求我们输入所需变量的值。

android studio大体为我们提供了6个功能区:

1、单步调试区

2、断点管理区

3、求值表达式

4、线程帧栈区

5、对象变量区

6、变量观察区

下面我们分别对这6个区域进行介绍

 

2单步执行与跳到下一个断点:

一、单步调试区

图片 1

该区提供了调试的主要操作,主要有:Step over、step into、force step
into、step out、drop frame。

1、Show    Execution Point

图片 2

点击该按钮,光标将定位到当前正在调试的位置.

2、Stem Over

图片 3

(进入下一行,不会进入方法内部)

单步跳过,点击该按钮将导致程序向下执行一行。如果当前行是一个方法调用,此行调用的方法被执行完毕后再到下一行。(注意不会进入方法内部)

3、Step Into

图片 4

(进入下一行,进入方法内部或者进入底层源码)

单步跳入,执行该操作将导致程序向下执行一行。如果该行有自定义的方法,则进入该方法内部继续执行,需要注意如果是类库中的方法,则不会进入方法内部。

4、Force Step Into

图片 5

(手动进入方法内部,或者源码内部)

强制单步跳入,和step
into功能类似,主要区别在于:如果当前行有任何方法,则不管该方法是我们自行定义还是类库提供的,都能跳入到方法内部继续执行

5、Drop Frame

图片 6

中断执行,并返回到方法执行的初始点,在这个过程中该方法对应的栈帧会从栈中移除.换言之,如果该方法是被调用的,则返回到当前方法被调用处,并且所有上下文变量的值也恢复到该方法未执行时的状态。

6、Force Run to Cursor

图片 7

很好用的一个功能,可以忽略所有的断点,跳转到当前光标所在的位置调试;假如我们现在在第8行有断点,第10行有断点,目前程序停留在第8行断点上,我们将光标定位到第9行,单击该按钮,程序将跑到第9行;

7、Evaluate expression

图片 8

点击该按钮会在当前调试的语句处嵌入一个交互式解释器,在该解释器中,你可以执行任何你想要执行的表达式进行求值操作。假如我们当前断点处有一个result的返回值;我们单击该按钮会弹出一个对话框,在该对话框中我们可以对该result进行各种表达式操作;

正常模式指的是不会影响程序的正常运行。

按F7即可进行单步执行,此时还会输出到目前为止的结果。你可以通过输出的结果发现你编程的问题所在。按“跳过”即直接到下一个断点。

二、断点管理区

图片 9

1、Return

图片 10

点击该按钮会停止目前的应用,并且重新启动.换言之,就是你想要重新调试时,可以使用该操作,嗯,就是重新来过的意思.

2、Resume Program

图片 11

跳转到下一个断点处,可以理解为下一个断点;如果没有断点,则运行结束;

3、Stop

图片 12

停止调试;结束运行;

4、View BreakPoints

图片 13

单击该按钮将会进入断点管理页面,在这里你可以查看所有断点,管理或者配置断点的行为,如:删除,修改属性信息等;

5、Mute BreakPoints

图片 14

该按钮用来禁用/启动所有断点,假如我们在某个断点处得到了我们想要的结果,并不想看其他后续断点可以点击该按钮禁用所有断点,然后程序会正常执行结束;

1,在VS中我们使用Console.Write(或者WriteLine)方法向控制台输出变量的值,通过这个我们可以查看变量的值是否符合我们的预期来调试错误。

3如何查看变量的值:

三、变量观察区

图片 15

我们在调试的时候,希望看某个变量的值,所以我们只需要简单设置一下就可以在变量观察区看到该变量的值,如下所示

图片 16

这里有一个技巧,如果我们在调试过程中,突然想要看看这个变量换一个值后的运行结果;可以在调试的过程中修改该变量的值,具体操作如下:

图片 17

如上图所示,右击变量num2选择set
value可以弹出对话框重新设置num2的值,如下所示

图片 18

可以看出num2的值原先为10,我们修改为50,回车即可生效;

图片 19

运行结果发生变化;

上面已经介绍了单点调试、变量管理和变量观察三个区域,接下来我们根据断点的分类来介绍其他区域;

断点的分类

断点是调试器的功能之一,可以让程序暂停在需要的地方,帮助我们进行分析程序的运行过程。

在Android Studio中,断点又被以下五类:

条件断点

日志断点

异常断点

方法断点

属性断点

2,在Unity中我们使用Debug.Log(“”) Debug.LogError(“”)
Debug.LogWarn(“”),向unity的Console窗口输出信息,帮助我们调试错误。

点击“添加查看”,在其上填入你想看的变量的名字,即可查看该变量在执行过程中值得变化。

1、条件断点

所谓的条件断点就是在特定条件发生的断点,也就是,我们可将某个断点设置为只对某种事件感兴趣,最典型的应用就是在列表循环中,我们希望在某特定的元素出现时暂停程序运行。假如我们有一个数组里面有1、2、3、4、5五个值,我们想在值等于3的时候停下来,可以设置条件断点;

图片 20

右击断点,在弹出的对话框中设置相应的条件即可,我们运行一下看下效果

图片 21

可以看到在num==3的时候,程序停了下来;

 

2、日志断点

很多时候我们调试的时候更多的是打印日志定位异常代码,缩小范围之后再使用断点解决问题;所以经常做的事情就是在代码里面添加日志信息,输出函数参数,返回信息,输出我们感兴趣的变量信息等。但是这样做的问题在于我们需要重新编译运行程序,并且添加了很多无谓的代码且不好管理,这个时候我们可以使用日志断点;该类型的断点不会使程序停下来,而是在输出我们要它输出的日志信息,然后继续执行。

举例说明:

图片 22

同样是右击断点,在上图的对话框中进行设置我们来看一下运行效果:

图片 23

是不是比你在代码中添加输出语句方便多了。

02.中断模式下的调试

3、异常断点

在有些情况下,我们只对某些特定的异常感兴趣,或者我们只对异常感兴趣;我们希望只要程序发生异常程序就能断下来;这好像保存现场一样,这样就会留下的线索比较多,可以使我们快速的找到问题得根源;

举例说明,首先我们添加一个异常断点,单击

图片 24

然后在弹出的对话框中进行如下设置

图片 25

假如我们只关心空指针异常可以进行如下设置

图片 26

选中空指针异常即可,我们人为设置一个空指针异常来看下运行效果:

图片 27

图中的bt_ride是一个空值的Button,可以看到,当程序发生空指针异常后会将光标直接定位的发生异常的位置;

中断模式指我们可以暂停程序的执行,然后查看程序中的状态,也可以让程序继续执行。

4、方法断点

传统的调试方式是以行为单位的,所谓单步调试;但是很多时候我们关心的是某个函数的参数,返回值;(回想一下我们使用日志的时候打印的最多的信息难道不是函数的参数和返回值吗?)使用方法断点,我们可以在函数级别进行调试;如果经常跳进跳出函数或者只对某个函数的参数感兴趣,这种类型的断点非常实用。具体使用方法有两种方式;最简单的是在你感兴趣的方法头那一行打上断点,这时候你会发现断点图标有点不一样,这就是方法断点了,如下图:

图片 28

5、Field WatchPoint

有没有这样一种场景:你发现某个值莫名其妙滴不知道什么时候被谁给修改了,罪魁祸首是谁?那么我们怎么揪出这个修改我们值的捣蛋鬼呢?那就是这个
Field
WatchPoint的功能了;使用它我们可以在某个Field被访问或者修改的时候让程序断下来;完美解决这个问题。我们可以直接在这个变量旁边单击就可以添加Field
WatchPoint

图片 29

我们可以右击从弹出的菜单中设置默认该变量被修改的时候断下来,也可以设置每次访问该值都断下来;

转自链接:

如何让程序中断? 断点

断点是什么?
断点是源代码中自动进入中断模式的一个标记,当遇到断点的时候,程序会进入中断模式。

如何插入断点?

1,右击代码行,选择breakpoint(断点) -> insert breakpoint(插入断点)

2,光标定位到代码行,选择菜单上的Debug(调试)->Toggle
Breakpoint(切换断点)

3,光标定位到代码行,按下F9键,在此按下F9是取消断点

4,在需要添加断点的行首位置,直接单击,再次单击取消断点

       我们可以通过
(调试-窗口-断点),打开断点窗口,这个窗口显示了当前项目中添加了的所有的断点,我们可以在这里定位断点的位置,也可以去删除断点。

03.监视变量的内容(进入中断模式下)

在中断模式下查看变量值最简单的方式,就是把鼠标指向源代码中的变量名,此时会出现一个工具提示,显示该变量的信息。

中断模式下的窗口(左下角),有三个选项卡 错误列表
-程序运行中发生的所有错误的列表 局部变量
-当前运行环境中所有的局部变量的值 监视 -监视某个变量的值的变化
在上面的几个窗口中不但可以观察变量值的变化,还可以直接去修改变量中存储的值

        在中断模式下,可以在右下角看到调用堆栈和即时窗口
在调用堆栈窗口下我们可以观察到当前代码执行到哪一行了,并且可以看到这个代码的是被什么语句调用的
即时窗口我们可以在这里输入一些命令,查看变量的值,修改变量的值,可以输入表达式查看结果

       在中断模式下我们可以单步执行代码,单步执行带有有两种
逐过程和逐语句,他们两个都是一条语句一跳语句的执行,区别在于逐过程遇到函数,不会进入函数内部,而把函数当成一条语句去执行。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图