Intellij IDEA 2017 debug断点调试技巧与总结详解篇
转载自csdn----------------------------------------------------------------------https://blog.csdn.net/qq_27093465/article/details/64124330
在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。
下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的,有的人keymap是mac版的,有的是Windows版的。
我的就是Windows,而且修改keymap为eclipse的keymap,因为我算是eclipse转过来的吧。
下面直接看图,详细解释,每一个按钮(按钮对应图中的数字)都是什么功能。
下面直接看图,详细解释,每一个按钮(按钮对应图中的数字)都是什么功能。
1,rerun XXX,这个就是直接重新跑某个程序。
2,这个相当于eclipse里面的f8,直接跑完,到下一个断点停下,没有就直接跑完程序。
3,停止项目或者程序。要是自己的main呢,点一下就停下了,要是Java web项目,则点2下,就把服务器给停了。
4,查看所有的断点设置情况。具体详情,下面有示意图,再细细解释。
5,直接取消所有断点,让所有断点无效。
6,要是你一不小心把这个下面的布局给弄乱了,你点这个,就把下面的布局给还原咯。
7,跳转到当前代码所执行的地方,也就是说你在看代码的时候,点到其他地方,一点这个按钮,就到了程序执行到当前哪行的代码的地方。
8,下一步,如果是方法,他是不会跳进去的。就是一行行的往下走。(eclipse里面的快捷键就是f6)
9,跳转到详情,如果下一行调试代码是可执行方法,就可以f5进去,查看这个方法的运行详细情况。重点就是点进去执行
10,从详情跳出去,和上面的9相反。
11,看字面意思就是跳转到那个光标所在的地方,前提是他能路上没断点拦着(这个也很好用的,下面详细解释一下他的好处)。
12,这个点开之后,可以计算你想要看的代码段的值,后面详细上图。
13,看意思,同eclipse里面的watch,查看某个对象的值,自定义的对象。
14,把自定义的查看对象的值,分开到另一个tab页。
15,有时候当我们步入方法体之后,还想回退到方法体外,点这个按钮后,断点重新回到方法体之外。在继续还是可以再次进到方法内(这个很好的,假设你手快,跳过想断点的方法,然后这个drop frame,出去之后,就可以再次debug啦。这个很是着重介绍一下,就算你只打一个断点,一不小心跑了,不怕,点这个,推出,然后再执行,还是会再次进入断点的。这个很管用的,要是不知道的话,就的再从头到尾的执行一遍,很是麻烦哦。所以,再使劲的强调一下这个高科技按钮。)
查看断点处的某个对象的值,可以 如下几个方法:
1,选中对象后,鼠标悬停在对象上 2 秒左右
2,在watch里面添加这个对象,
3,下面也许会自动列出来你代码里面有的
4,使用上面图上标注的12的那个按钮
5,alter + click,按住alter,然后点击想看的变量,就出现啦变量的值
下面就再详细说下 4,12,13,14,11
4,查看所有的断点的详情,点开如下所示。
在图中condition中可以设置断点的条件,当i==4的时候,才停下。查看具体断点内容。
关于设置断点条件,还可以,直接在代码断点处,右键设置,完啦之后,done,设置完成。
12,这个用的也比较多,这个就比较随意。可以根据你的输入,计算你要的结果,不局限代码里面的变量啥的。
这个在debug的时候,使用起来是很方便的。
13,14,这2个点完之后,效果如下图,只是把自定义的变量和代码里面自带的变量分在两个tab页面展示。
你可以点13号按钮,自行添加,你想查看的变量的值。
11,看字面意思就是跳转到那个光标所在的地方,前提是他能路上没断点拦着
一般看到这个图,大概都是在for循环之前打了个断点,当你在一步步的跟踪代码执行的时候,遇到这个for循环,要是还是一步步的继续,那就得点很多下,要是循环集合很大,岂不是很费时,一般估计就会在for循环的后面(比如在我这个图的39行打个断点,来一下子跳过for循环)再打个断点,那么你为了一步步的跟踪代码执行,不得不继续类似的操作,添加了不少没用的断点。你这么做是因为你不知道这run to cursor ,就是直接执行到鼠标光标处。通俗的解释一下,看我图39行,当前鼠标的光标就在这地方,你直接点这个run to cursor 这个debug功能按钮,就会直接跳过for循环,运行到光标所在的位置,停下。这就省去了打n多个不需要的断点啦。这个按钮的功能不错吧。
还有个需求,就是
在调试代码的时候,实时的修改,运行状态的代码变量的值。
仔细看下图,就知道,怎么在实时调试代码的时候,怎么设置某些变量的值,可以看到,我上面在输入a之后,下面就有类似你写代码时候的提示,你就可以在这地方修改变量的值啦
(更新)
上面的描述好像有问题,不应该使用watch去修改变量的值,具体看图吧。
可以看到,我在watch里面写了行代码,给这个list add一个“123456”,然后发现,代码走一行,他就add一次,然后就发现我上面写的不对啦,不是这么来修改正在运行的变量的值的。
应该像这张图这么来修改变量的值,这个是一次性操作的。
这个地方,快捷键是f2,具体的快捷键可能不一样,f2快捷键之后,就会出格框,里面输入你想修改的值,就可以运行的时候,修改变量的值。这个还有你修改的记录。
Intellij IDEA 2017 debug断点调试技巧与总结详解篇的更多相关文章
- (转)Intellij IDEA 2017 debug断点调试技巧与总结详解篇
背景:详细介绍idea的debug调试过程 Intellij IDEA 2017 debug断点调试技巧与总结详解篇
- Intellij IDEA debug断点调试技巧与总结详解篇
1. Rerun . 这个就是结束debug模式,直接以run的方式重新跑某个程序.2. 直接跑完. 到下一个断点停下. 没有就直接跑完程序.3. 停止项目或者程序.要是自己的main呢. 点一下就停 ...
- IDEA debug断点调试技巧
Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化.通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方 ...
- IDEA--IDEA debug断点调试技巧
目录 一.Debug开篇 二.基本用法&快捷键 三.变量查看 四.计算表达式 五.智能步入 六.断点条件设置 七.多线程调试 八.回退断点 九.中断Debug Debug用来追踪代码的运行 ...
- IntelliJ IDEA 2017版 spring-boot加载jsp配置详解(详细图文实例)
一.创建项目 (File--->New-->Project) 2.项目配置内容 3.选择配置项目的Group包名,Artifact项目名称 4.选择项目类型为web类型 5.创建成功,点击 ...
- debug断点调试
debug断点调试 1,虫子启动2,F6 执行断点的下一步,下一个语句 F5 进入方法 F8 执行到结束 查看表达式的值:选中查看的表达式,接着按 ctrl ...
- Chrome JS断点调试技巧
Chrome调试折腾记_(2)JS断点调试技巧 技巧一:格式化压缩代码 技巧二:快速跳转到某个断点的位置 技巧三:查看断点内部的作用范围[很实用] 技巧4:监听事件断点 技巧5:DOM及 XHR监听跳 ...
- VS 2013驱动开发 + Windbg + VM双机调试(亲测+详解)
------------VS 2013驱动开发 + Windbg + VM双机调试(亲测+详解)------------- WIN10已上线,随之而来的是VS2015:微软在 "WDK760 ...
- Javascript 调试利器 Firebug使用详解
Javascript 调试利器 Firebug使用详解 有时候,为了更清楚方便的查看输出信息,我们可能需要将一些调试信息进行分组输出,那么可以使用console.group来对信息进行分组,在组信息输 ...
随机推荐
- MySQL锁(行锁、表锁、页锁、乐观锁、悲观锁等)
锁,在现实生活中是为我们想要隐藏于外界所使用的一种工具.在计算机中,是协调多个进程或县城并发访问某一资源的一种机制.在数据库当中,除了传统的计算资源(CPU.RAM.I/O等等)的争用之外,数据也是一 ...
- setuid、setgid、sticky的权限简单用法
如何设置setuid.setgid.sticky的权限: setuid :置于 u 的 x 位,原位置有执行权限,就置为 s,没有了为 S . chmod 4xxx file chmod u+s xx ...
- JVM & GC 笔记
0. 说明 转载并修改自JVM 1. JVM 1.1 什么是JVM JVM为Java虚拟机(Java Virtual Machine) Runtime data area,运行时数据区. 包含5个区域 ...
- 一个汇编的HelloWorld!
花了一下午时间,感觉最坑的是,书写代码的个数和编译器的坑比较多,还各种版本的编译器! 会让人“眼花缭乱”! 主要代码 将文件保存为*.asm include io32.inc .data ;数据 sr ...
- Java集合和泛型
集合 常用的集合有ArrayList,TreeSet,HashMap,HashSet. ArrayList 最常用的集合,每次插入都在后面追加元素. TreeSet 以有序状态保持并可防止重复.当你需 ...
- Java多线程学习笔记之三内存屏障与Java内存模型
基本内存屏障 处理器支持那种内存重排序,就会提供能够禁止相应内存重排序的的指令,这些指令就被成为基本内存屏障:StroeLoad屏障.StroeLoad屏障.LoadLoad屏障.LoadStore屏 ...
- PyQt5---ChangeIcon
# -*- coding:utf-8 -*- ''' Created on Sep 13, 2018 @author: SaShuangYiBing ''' import sys from PyQt5 ...
- Spring Boot 扩展点应用之工厂加载机制
Spring 工厂加载机制,即 Spring Factories Loader,核心逻辑是使用 SpringFactoriesLoader 加载由用户实现的类,并配置在约定好的META-INF/spr ...
- Dubbo -- 系统学习 笔记 -- 安装手册
安装手册 示例提供者安装 示例消费者安装 Zookeeper注册中心安装 Redis注册中心安装 简易注册中心安装 简易监控中心安装 管理控制台安装 推荐使用Zookeeper注册中心 你可以只运行D ...
- 使用<button></button>标签
使用<button></button>标签一定要记住给它设置type,因为它默认的type=“submit”,会提交表单,设置如下 <button type=" ...