前言:本文的核心是记录debug的使用,与具体的操作系统无关。

1.什么是Debug


Debug是程序的一种运行模式。用来发掘程序的走向,以及程序在运行过程中参数的变化。

2.Debug的作用


debug用来追溯代码的运行流程,通常在程序运行跟预期结果不符合的时(程序运行时出现异常),那么启动debug模式可以分析定位异常发生的位置,帮助程序员更好的fix bug

3.Debug的使用


主要讲解intellj中debug的使用 ,此篇不会讲解debug时可用的快捷键。
配合idea中图形界面来进行讲解。

3.1.程序打上断点
首先为程序打上断点,我采用的是spring demo,因为这样可以演示给第三方spring jar包如何打上断点。
主程序上断点如下图所示:

程序打上断点.png

第三方jar包反编译源代码断点如下图所示:

屏幕快照 2016-10-26 下午3.09.44.png

3.2单步调试
3.2.1 Step Over:
点击红色箭头指向的按钮,程序向下执行一行。

屏幕快照 2016-10-26 下午3.21.02.png

但有一种情况需要注意,如果在一个顺序执行的程序文件中打上断点,而第一行被打上断点的代码调用了其他方法,而且这个被调用的方法上也有断点,那么这样单步执行的顺序是,先祝程序文件中第一行被打断点的程序运行,接下来是被调用方法中打了断点的那一行代码,最后接着顺序运行此主程序文件中其它被打了断点的代码。
3.2.2 Step Into:
点击红色箭头指向的按钮,程序向下执行一行。如果该行有自定义方法,则运行进入自定义方法,如果有第三方类库方法,则在idea 中可以进入第三方代码中。具体步骤如下:

屏幕快照 2016-10-26 下午3.41.02.png

在程序第十三行设置断点,然后点击上图中红色箭头指向的按钮,程序运行至第三方类库当中代码,代码如下图所示:

屏幕快照 2016-10-26 下午3.45.08.png

3.2.3 step out

屏幕快照 2016-10-26 下午3.48.30.png

如果在调试的时候你进入了一个方法,并觉得该方法没有问题,你就可以使用stepout跳出该方法,返回到该方法被调用处的下一行语句。值得注意的是,该方法已执行完毕。
3.2.4 Drop frame

屏幕快照 2016-10-26 下午3.50.50.png

点击该按钮后,你将返回到当前方法的调用处(如上图,程序会回到main()中)重新执行,并且所有上下文变量的值也回到那个时候。只要调用链中还有上级方法,可以跳到其中的任何一个方法。
3.2.5 纯断点运行
所谓纯断点运行表示:程序只在断点处停留。

屏幕快照 2016-10-26 下午3.55.53.png

发现上述两个按钮都可以实现效果
3.2.6 查看断点
按如下按钮可以查看程序中所有的断点:

屏幕快照 2016-10-26 下午3.58.03.png

效果图如下所示:

屏幕快照 2016-10-26 下午3.59.29.png

你可以从中删除不想要的断点。重新debug
3.2.7 变量值查看
idea中变量值的查看非常简单如下图:

Mac Intellij Debug 模式的更多相关文章

  1. Intellij debug模式使用

    1.这里以一个web工程为例,点击图中按钮开始运行web工程. 2.设置断点 3.使用postman发送http请求 4.请求发送之后会自动跳到断点处,并且在断点之前会有数据结果显示 5.按F8 在 ...

  2. intellij debug模式提示 Method breakpoints may dramatically slow down debugging

    之前不小心打了一个断点,然后项目长时间不能启动,保持一个加载的状态,并且提示Method breakpoints may dramatically slow down debugging,百度之后才知 ...

  3. Intellij IDEA debug模式下项目启动慢/无法启动的事件解决过程记录

    项目无法启动了 简单的介绍一下事件过程:周一的早上,收到前端同事抛过来的一个任务,说是一个接口无法正常返回数据,于是就让他把参数发过来,我想试着在本地重现一下并且将问题修复掉,这种情况肯定是要通过de ...

  4. 【Idea】Intellij Idea debug 模式如果发现异常,即添加异常断点在发生异常处

    前用eclipse的时候,可以根据所抛出的异常进行调试,比如:出现了空指针异常,我想知道是哪一行抛出的,在eclipse中我只需在debug模式下把空指针异常这个名字设置进去,当遇到空指针异常时,ec ...

  5. Intellij Idea debug 模式如果发现异常,即添加异常断点在发生异常处

    以前用eclipse的时候,可以根据所抛出的异常进行调试,比如:出现了空指针异常,我想知道是哪一行抛出的,在eclipse中我只需在debug模式下把空指针异常这个名字设置进去,当遇到空指针异常时,e ...

  6. IntelliJ IDEA. Debug模式

    资料收集: https://www.bilibili.com/video/av6749471/?p=16 eclipse debug模式. 基础 Intellij Idea--Debug使用 Inte ...

  7. Intellij IDEA Spring Boot 项目Debug模式启动缓慢问题

    问题 Intellij IDEA Spring Boot 项目Debug模式启动缓慢 环境 os: windows10 idea :2018.1 解决方法 去除所有断点就正常了,很诡异,原因未知.

  8. IntelliJ IDEA Debug模式启动项目

    导入项目,没有看到debug模式 点击 next  next next next

  9. IDea 工具debug模式详细使用说明

    IDea 工具debug模式详细使用说明 IDEA中如何使用debug调试项目 一步一步详细教程 Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生 ...

随机推荐

  1. 自定义Git之配置别名

    有没有经常敲错命令?比如git status?status这个单词真心不好记. 如果敲git st就表示git status那就简单多了,当然这种偷懒的办法我们是极力赞成的. 我们只需要敲一行命令,告 ...

  2. Spring+SpringMVC+MyBatis+easyUI整合进阶篇(一)设计一套好的RESTful API

    写在前面的话 看了一下博客目录,距离上次更新这个系列的博文已经有两个多月,并不是因为不想继续写博客,由于中间这段时间更新了几篇其他系列的文章就暂时停止了,如今已经讲述的差不多,也就继续抽时间更新< ...

  3. POJ-1915 Knight Moves (BFS)

    Knight Moves Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 26952   Accepted: 12721 De ...

  4. 字符串匹配之KMP,C++实现

    文字介绍KMP我就不讲了,相信大家看了不少别的文章也没看懂,我肯定也不能用文字表达清楚. 最好的办法就是看严老师的视频,讲的很清晰. 请百度 KMP 严蔚敏: 在这里我用C++实现一下: #inclu ...

  5. Java微信公众平台开发之扫码支付模式一

    官方文档点击查看准备工作:已通过微信认证的公众号,必须通过ICP备案域名(否则会报支付失败)借鉴了很多大神的文章,在此先谢过了大体过程:先扫码(还没有确定实际要支付的金额),这个码是商品的二维码,再生 ...

  6. DoNet 高效开发必备开发工具

    工欲善其事,必先利其器,没有好的工具,怎么能高效的开发出高质量的代码呢? 本文为 ASP.NET 开发者介绍一些高效实用的工具,包括 SQL 管理,VS插件,内存管理,诊断工具等,涉及开发过程的各个环 ...

  7. Webapi文档描述-swagger优化

    一.前言 最近做的项目使用WebApi,采取前后端分离的方式,后台提供API接口给前端开发人员.这个过程中遇到一个问题后台开发人员怎么提供接口说明文档给前端开发人员,最初打算使用word.Xmind思 ...

  8. shell 编程之 for while until 循环

    shell 的for循环 的格式如下: for 变量  in 列表 do ... done 列表是一组值的序列 每个值通过空格隔开 每循环一次,列表中的下一个值赋给变量 in 列表是可选的,如果不用他 ...

  9. Oracle进程与系统进程

    --Oracle进程与系统进程 --------------------------2013/11/25 这里讨论Linux/Unix环境下,oracle v$process与操作系统对应的关系. 系 ...

  10. error MSB8008: 指定的平台工具集(v110)未安装或无效。请确保选择受支持的 PlatformToolset 值

    如果你的电脑上有两个不同版本的VS,或者你的程序拷贝到别人的电脑上去运行,或者你是从别人那里拷贝来的项目,而你们俩用的VS版本不一样,就会在运行的时候出现这个问题,这个错误中的v110是VS2012使 ...