贯穿程序员一生的必备开发技能——debug

1.什么是debug

debug是一种运行模式,用来跟踪程序的走向,以及跟踪程序运行过程中参数的值的变化。

2.debug的作用

debug一般用来跟踪代码的运行过程,通常在程序运行结果不符合预期或者出现异常的情况下使用。所以使用debug模式可以很好的跟踪问题,帮助程序员处理bug。对每个程序员而言,基本上每天都要用到debug功能。

3.debug的使用

各种开发工具的debug基本上都大同小异,下面以Intellij Idea的debug使用为例。

3.1debug模式运行程序

bug的中文意思就是小虫子,图中的小虫子图标就是debug模式启动程序,eclipse的运行按钮旁边一样的有一个小虫子图标。

3.2程序中打上断点

上图中的红色的小圆点就是断点,用鼠标在那一行的前面点击一下就行了,取消断点再次点击就行了。

3.3step over单步调试

在debug视图中点击step over单步执行,快捷键为f8。单步执行的意义在于执行打断点的那一行,后续每执行一步可以再按一下f8。可以在这一步查看每一个执行步骤的变量的值,变量的值可以在Variables里面查看,在代码的视图窗口中每个变量的后面也会显示变量的值。

3.4step into进入方法

点击step into,程序向下执行一步,如果当前行代码中有待执行的函数,这一步将会进入到函数内部去执行,然后又可以进行单步执行调试。这一步的快捷键是f7。右便蓝色向上的那个step out的按钮就是跳出当前方法的调试,返回到之前的断点执行到的地方。

3.5纯断点执行

纯断点执行就是只程序只在断点的地方进入调试模式,中间的执行过程直接执行过去,这样可以方便多个断点的调试。

3.6查看程序中所有的断点

点击那两个红点合起来的按钮,就可以查看程序中所有的断点,复选框选中就是使断点生效,不勾选则失效。

3.7查看变量的值

已经执行到过的代码每一行将会将行内的变量的值显示在当前行的后面,Variables视图窗口中也可以查看每个变量的值。

到此,idea的debug基本上就说完了,几乎所有的程序员都会使用的这个技能。如果你还不会,赶紧打几个断点调试一下吧。

最后,如果你有仍何开发上面的问题都可以和我交流沟通。

原文发布于微信公众号 - java工会(javagonghui)

原文发表时间:2018-03-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端新视界

关于 JS 拖拽功能的冲突问题及解决方法

前言 我在之前写过关于 JS 拖拽的文章,实现方式和网上能搜到的方法大致相同,别无二致,但是在一次偶然的测试中发现,这种绑定事件的方式可能会和其它的拖拽事件产生...

40811
来自专栏42度空间

使用min-content实现容器宽度自适应于内部元素

HTML原生就是响应式的(HTML内容在视口内流式的分布)。随着CSS的广泛应用,设计者创建了许多固定布局的“盒子”并把内容强制的放在盒子之中,这有悖于HTML...

773
来自专栏强仔仔

利用JQuery实现鼠标移动到图片上方的时候显示二维码,离开的时候不显示二维码

今天给大家介绍一下怎样利用JQuery实现鼠标移动到图片上方的时候显示二维码,离开的时候不显示二维码的功能。 其实主要注意几点细节就可以轻松实现这样的功能了,第...

1799
来自专栏从零开始学自动化测试

Selenium2+python自动化34-获取输入框联想词

前言 最近有小伙伴问百度输入后,输入框下方的联想词如何定位到,这个其实难度不大,用前面所讲的元素定位完全可以定位到的。 本篇以百度输入框输入关键字匹配后,打印出...

3165
来自专栏自动化测试实战

Appium+python (3) 异常处理

2875
来自专栏青蛙要fly的专栏

超详细的生命周期图-你能回答全吗

超详细的Activity与Fragment的生命周期图,可能大家会说你这篇文章也太水了吧。就这么一个破图。可是我觉得它写的很详细,有些方法是哪些情况下会运行,哪...

862
来自专栏AndroidTv

【Android】再来一篇Fragment的懒加载(只加载一次哦)

2017-7-14更新: 目前有人使用后出现了诸如首次打开显示空白界面,但点击有反应;或来回切换又变空白界面的问题。这些问题我暂时还不知道该怎么解决,后期有时...

3637
来自专栏带你撸出一手好代码

px转vw和vh的工具(对前端同学有用)

CSS3中有两个新尺寸单位vw和vh, 这两个单位非常适合于开发移动端自适应页面。 假如说有一个设计师做了一张1136x750px的页面,这长页面是针对iPho...

4268
来自专栏落花落雨不落叶

a:link a:visited a:hover a:active四种伪类选择器的区别

27112
来自专栏每日一篇技术文章

weex-17-组件list

我们根据数组动态的添加子区域,这里我们要使用到组件cell,当列表上数据比较多时,使用cell能够更高效的管理内存和组件重用

522

扫码关注云+社区