您好、欢迎来到现金彩票网!
当前位置:二四六天天好彩手机版 > 条件断点 >

IDEA--IDEA debug断点调试技巧

发布时间:2019-07-03 08:16 来源:未知 编辑:admin

  用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。

  如下是在IDEA中启动Debug模式,进入断点后的界面,我这里是Windows,可能和Mac的图标等会有些不一样。就简单说下图中标注的8个地方:

  ①以Debug模式启动服务,左边的一个按钮则是以Run模式启动。在开发中,我一般会直接启动Debug模式,方便随时调试代码。

  ②断点:在左边行号栏单击左键,或者快捷键Ctrl+F8 打上/取消断点,断点行的颜色可自己去设置。

  ③Debug窗口:访问请求到达第一个断点后,会自动激活Debug窗口。如果没有自动激活,可以去设置里设置,如图1.2。

  ④调试按钮:一共有8个按钮,调试的主要功能就对应着这几个按钮,鼠标悬停在按钮上可以查看对应的快捷键。在菜单栏Run里可以找到同样的对应的功能,如图1.4。

  ⑥方法调用栈:这里显示了该线程调试所经过的所有方法,勾选右上角的[Show All Frames]按钮,就不会显示其它类库的方法了,否则这里会有一大堆的方法。

  [图1.3]:如果你的IDEA底部没有显示工具栏或状态栏,可以在View里打开,显示出工具栏会方便我们使用。可以自己去尝试下这四个选项。

  [图1.4]:在菜单栏Run里有调试对应的功能,同时可以查看对应的快捷键。

   Step Over (F8):步过,一行一行地往下走,如果这一行上有方法不会进入方法。

   Step Into (F7):步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法,如第25行的put方法。

   Step Out (Shift + F8):步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。

   Run to Cursor (Alt + F9):运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。

   Rerun xxxx:重新运行程序,会关闭服务后重新启动程序。

   Update tech application (Ctrl + F5):更新程序,一般在你的代码有改动后可执行这个功能。而这个功能对应的操作则是在服务配置里,如图2.3。

   Resume Program (F9):恢复程序,比如,你在第20行和25行有两个断点,当前运行至第20行,按F9,则运行到下一个断点(即第25行),再按F9,则运行完整个流程,因为后面已经没有断点了。

   Stop xxx (Ctrl + F2):连续按两下,关闭程序。有时候你会发现关闭服务再启动时,报端口被占用,这是因为没完全关闭服务的原因,你就需要查杀所有JVM进程了。

   Mute Breakpoints:哑的断点,选择这个后,所有断点变为灰色,断点失效,按F9则可以直接运行完程序。再次点击,断点变为红色,有效。如果只想使某一个断点失效,可以在断点上右键取消Enabled,如图2.4,则该行断点失效。

  下面的On frame deactivation,在IDEA窗口失去焦点时触发,即一般你从idea切换到浏览器的时候,idea会自动帮你做的事情,一般可以设置Do nothing,频繁切换会比较消耗资源的。

  在Debug过程中,跟踪查看变量的变化是非常必要的,这里就简单说下IDEA中可以查看变量的几个地方。

  2、光标悬停到参数上,显示当前变量信息。点击打开详情如图3.3。我一般会使用这种方式,快捷方便。

  在前面提到的计算表达式如图4.1的按钮,Evaluate Expression (Alt + F8) 。可以使用这个操作在调试过程中计算某个表达式的值,而不用再去打印信息。

  1、按Alt + F8或按钮,或者,你可以选中某个表达式再Alt + F8,弹出计算表达式的窗口,如下,回车或点击Evaluate计算表达式的值。

  这个表达式不仅可以是一般变量或参数,也可以是方法,当你的一行代码中调用了几个方法时,就可以通过这种方式查看查看某个方法的返回值。

  2、设置变量,在计算表达式的框里,可以改变变量的值,这样有时候就能很方便我们去调试各种值的情况了不是。

  想想,一行代码里有好几个方法,怎么只选择某一个方法进入。之前提到过使用Step Into (Alt + F7) 或者 Force Step Into (Alt + Shift + F7)进入到方法内部,但这两个操作会根据方法调用顺序依次进入,这比较麻烦。

  按Shift + F7,会自动定位到当前断点行,并列出需要进入的方法,如图5.2,点击方法进入方法内部。

  通常,当我们在遍历一个比较大的集合或数组时,在循环内设置了一个断点,难道我们要一个一个去看变量的值?那肯定很累,说不定你还错过这个值得重新来一次。

  1、在断点上右键直接设置当前断点的条件,如图6.1,我设置exist为true时断点才生效。

  勾选Evaluate and log,可以在执行这行代码是计算表达式的值,并将结果输出到控制台。

  3、再说说右边的Filters过滤,这些一般情况下不常用,简单说下意思。

  Instance filters:实例过滤,输入实例ID(如图6.5中的实例ID),但是我这里没有成功,不知道什么原因,知道的朋友留个言。

  Pass count:用于循环中,如果断点在循环中,可以设置该值,循环多少次后停在断点处,之后的循环都会停在断点处。

  4、异常断点,通过设置异常断点,在程序中出现需要拦截的异常时,会自动定位到异常行。

  我这里添加了一个NullPointerException异常断点,如图6.8,出现空指针异常后,自动定位在空指针异常行。

  一般情况下我们调试的时候是在一个线程中的,一步一步往下走。但有时候你会发现在Debug的时候,想发起另外一个请求都无法进行了?

  那是因为IDEA在Debug时默认阻塞级别是ALL,会阻塞其它线程,只有在当前调试线程走完时才会走其它线程。可以在View Breakpoints里选择Thread,如图7.1,然后点击Make Default设置为默认选项。

  切换线中Frames的下拉列表里,可以切换当前的线程,如下我这里有两个Debug的线程,切换另外一个则进入另一个Debug的线]

  1、首先认识下这个方法调用栈,如图8.1,首先请求进入DemoController的insertDemo方法,然后调用insert方法,其它的invoke我们且先不管,最上面的方法是当前断点所在的方法。

  所谓的断点回退,其实就是回退到上一个方法调用的开始处,在IDEA里测试无法一行一行地回退或回到到上一个断点处,而是回到上一个方法。

  回退的方式有两种,一种是Drop Frame按钮(图8.2),按调用的方法逐步回退,包括三方类库的其它方法(取消Show All Frames按钮会显示三方类库的方法,如图8.3)。

  第二种方式,在调用栈方法上选择要回退的方法,右键选择Drop Frame(图8.4),回退到该方法的上一个方法调用处,此时再按F9(Resume Program),可以看到程序进入到该方法的断点处了。

  但有一点需要注意,断点回退只能重新走一下流程,之前的某些参数/数据的状态已经改变了的是无法回退到之前的状态的,如对象、集合、更新了数据库数据等等。

  有些时候,我们看到传入的参数有误后,不想走后面的流程了,怎么中断这次请求呢(后面的流程要删除数据库数据呢....),难道要关闭服务重新启动程序?嗯,我以前也是这么干的。

  确切的说,我也没发现可以直接中断请求的方式(除了关闭服务),但可以通过Force Return,即强制返回来避免后续的流程,如图9.1。

  IntelliJIDEA使用教程(总目录篇)在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。下面不要在意,这个快捷键具体是啥,因为,...

  强连通分量:简言之就是找环(每条边只走一次,两两可达)孤立的一个点也是一个连通分量 使用tarjan算法在嵌套的多个环中优先得到最大环(最小环就是每个孤立点) 定义:intTime,DFN[N],Lo...

  jquery/js实现一个网页同时调用多个倒计时(最新的)最近需要网页添加多个倒计时.查阅网络,基本上都是千遍一律的不好用.自己按需写了个.希望对大家有用.有用请赞一个哦!//js//js2varpl...

  相机成像原理:世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换...

  转载自:用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异...

  IDEA调试总结(设置断点进行调试)先编译好要调试的程序。1.设置断点选定要设置断点的代码行,在行号的区域后面单击鼠标左键即可。 2.开启调试会话点击红色箭头指向的小虫子,开始进入调试。 IDE下方出...

  断点调试在IDEA中如果是服务器那么可以debug启动,java类那么也可以debug调试启动;测试类也如此。调试的步骤就是在任何java代码行的左边点击设置断点即可。然后可以使用:F8下一步,F9到...

  reids是一个key-value存储系统,为了保证效率,缓存在内存中,但是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,以保证数据的持久化。 所以:redis是一个支持持...

  快捷键功能描述F8单步调试,不进入函数内部F7单步调试,进入函数内部Shift+F7选择要进入的函数Shift+F8...

  在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的,有的人ke...

  相信学习编程的同学,或多或少都接触到算法的时间复杂度和空间复杂度了,那我来讲讲怎么计算。    常用的算法的时间复杂度和空间复杂度一,求解算法的时间复杂度,其具体步骤是:⑴ 找出算法中的基本语句;...

  原创文章,转载请注明出处。最近IDE从eclipse转IDEA,结果第一次debug就遇到断点无效的情况。自己尝试解决无果,然后各种百度,试了网上所有方法(禁用IDEA的JAVA_OPTS啊,检查代码...

  最近在用yolo来做视频中的人员检测,选择YOLO是从速度考虑,在训练数据集的过程中碰到很多坑,并且现在yolo又到了v2的版本,在网络和命令中都有区别...

  1、设置断点条件,当符合条件时,调试时才会在该断点出停止;如下图,当符合条件isMultipart==false时,才会在153行的断点处停止;2、条件断点的设置在断点处右键,即弹出条件设置窗口......

  转自于:先编译好要调试的程序。1.设置断点选定要设置断点的代码行,在行号的区域后面单击鼠标左...

  在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的,有的人ke...

  问题描述:1)代码上没有任何警告或错误的提醒,但是make会提示错误信息;2)部分快捷键失效,比如导入java包快捷键。如下图所示:解决方案(目前共有三种情况): 情况一勾选了powers...

  1.什么是MQTT协议MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输)是IBM开发的一个即时通讯协议。有可能成为物联网的重要组成部分。该协议支持所有平台,...

  目录一、视图查看二、定位1、项目之间的跳转2、文件之间的跳转3、位置的跳转4、其他的跳转5、搜索6、光标移动和选中三、Alt+Enter1、提供代码提示2、自动创建函数3、listreplace4、实...

  转自:用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug...

  mute-静音story:在调试代码的时候打了很多断点,执行到断点10的时候,突然想重新请求api从头观察断点执行情况,也就是需要在页面上重新点击按钮,但是断点10后面还有10个断点,前端按钮根本点不...

  点击图中按钮开始运行web工程启动成功:设置断点通过浏览器发送请求*请求发送之后会自动跳到断点处,并且在断点之前会有数据结果显示按F8在Debug模式下,进入下一步,如果当前行断点是一个方法,则不进入...

  方便自己,更方便大家。在转载的基础上稍作修改;原地址:将项目运行至debug环境下,并找到i...

  最近才开始使用Idea,所以很不熟练,就一步一步记下值得收藏的小技巧了。1、关于断点的使用:开发完成,调试联调肯定是要进行的,所以在出现问题的时候断点是必不可少的,断点都会打,去除单个断点也很简单,但...

  本地断点调试相信大家已经都已经玩的很溜了,但远程断点可能对有些人来说还有点陌生。在实际开发过程中我们可能会有几套不同的环境,比如开发环境、测试环境、生产环境。测试环境我们一般会部署在远程机上,有时我们...

  Debug的时候调试功能必不可少,各个集成环境调试的思想和步骤肯定是一样的,只不过快捷键和图标不太一样而已借着记录IntellijIdea的调试快捷键和图标含义,总结一下常用的调试功能Intellij...

  前言之前使用IntellijIdea断点调试都是极其简单的,都是下一步下一步下一步这样子…..还有最坑爹的以为:IDEA只能调试一次。调试完就要重启Tomcat服务器…..因此花了大量的冤枉时间…为此...

  快捷键 功能描述 F6 单步调试,不进入函数内部 F5 单步调试,进入函数内部 Shift+F7 选择要进入的函数 Shift+F8 跳出函数 Alt+F9 运行到断...

  iDEA与eclipseDebug模式是有一定区别的eclipse进入Debug模式把手标放到对应的代码上就会自动显示结果Idea则是把手标放到你想显示结果的代码上,按Ctrl+F1就显示结果。如果你...

  最常见的断点方式是行断点,而有时候我们需要在debug的时候,当一个变量的值发生变化时,程序中断,这样就需要变量断点这种方式的断点了。但是查了下中文的资料,发现并没有相关的文中讲IDEA如何设置变量断...

  IDEA打了断点却无效问题(没有打对勾)解决办法:1、查看是否强制关闭断点2.查看是否关闭断点类型(我的是关闭了JavaExceptionBreakpoints,选择之后保存就能正常断点)......

  1:StepOver,进入下一步,如果是方法,那就直接跳过(F8)2:StepInto,进入下一步,如果是方法,就进入方法内部,但是不会进入jdk封装的方法。(F7)3:ForceStepInto:强...

  intellijidea如何一键清除所有断点我之前写了一个百度经验,但是搜不到,现在复制一遍,自己留个记录.注:此方法适用intellijidea2016.2.5版本,其他版本我没用过,暂时不知道1....

  这一篇,代码折腾的时间较长,完成之后都是一些小细节,主要有三:n1、引入的依赖错误;n2、启动配置错误;n3、xml文件的mapper命名空间错误。n一、完整的pom.xmlnn...

  本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。1、 Esp8266之 搭建开发环境,开始一个“hellow worl...

  扫二维码关注,获取更多技术分享nnn 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...

  采用EasyUI 1.4.x 版本,默认default风格,异步加载页面,多Tab页展示,使用JSON文件模拟从后台动态获取数据。...

  接着上次的图书管理系统rnrn修改完问题后把SpringBoot成功部署到了服务器上rn测试了下api接口,能正常访问rn那么下面就是在服务器上部署前端的vue.js了rnrnrn这里的话我们要明确一...

  weixin_45084838:我就是培训出来的 讲真的很多培训的同学也是计算机专业额,没感觉多厉害,大家基本上水平差不太多。

  :谢谢,听了感触很大,我是一个自学者,是听视频看书学习的,基础真的太重要了,常常学的很快,但是有时候很迷茫不知到学什么好。真的是踏踏实实才是最重要的

http://mundosl.net/tiaojianduandian/498.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有