idea学习系列五之debug及插件的使用

2023-11-10

idea学习系列五之debug及插件的使用

上一篇,介绍了maven及服务器的使用,这里将介绍idea中debug及插件的使用。在实际开发中debug是最常用的了,而且idea相比于eclipse中的debug还新增了一些比较好用的功能。还有就是idea的插件还是挺丰富的功能也很强大,所以安装一下插件还是挺有必要的。

debug的使用

idea中debug的基本使用其实已经有很好的文章了,大家可以参考:

https://blog.csdn.net/qq_27093465/article/details/64124330

所以debug的基本使用这里不再累赘,这里主要就介绍一下在idea中debug的特有功能。也算是一些小技巧吧。
首先来看一下debug的控制台:
在这里插入图片描述
除了一些常用的功能还有一些特殊的:

  • watches

    • 这个用于监控变量。我们可以直接在里面手动添加要监控的变量,还可以将代码中的变量拖拽到watches中
  • 额外操作

    • 我们可以在点击这个按钮之后的弹出框里可以通过代码中的变量,写一些代码以及计算表达式来计算某些数据的值在这里插入图片描述
  • 断点条件

    • 可以通过点击这个按钮或在断点前面点击右键。来弹出断点条件设置框。
      在这里插入图片描述在这里插入图片描述
      • 在这里弹出框里面我们可以在Condition里面设置条件,只有条件满足这个断点才会生效。
      • Pass count 这个表示跳过多少次后开始步入,比如 for 循环中,我们要查看一个变量循环 3 次后的结果就可以使用该方式。
      • Remove once hit 对于某些不重要的断点,只要步入一次就够了,就可以勾选此选项,让它步入之后自动删除
  • 重新布局

    • 在debug界面乱了之后可以通过这个来重新布局
      在这里插入图片描述
  • 跳转到代码执行位置

    • 有时候我们可能在看代码的时候,点到了其他地方。如果我们想直接回到代码执行位置可以通过这个按钮来实现
      在这里插入图片描述
  • 跳转到光标所在位置

    • 跳转到那个光标所在的地方,前提是没断点拦着在这里插入图片描述
  • 重新执行方法

    • 当我们进入到某个方法中。在执行的时候如果点快了导致跳过了某些断点如果我们想重新再到这个断点上面,我们就可以通过这个按钮来重新执行这个方法。
      在这里插入图片描述
  • 修改变量的值

    • 在代码执行的时候我们可以点击变量然后右键通过Set Value来修改变量的值。
      在这里插入图片描述
      这些就是idea中相对于eclipse新增的一些比较好用的debug功能,下面介绍一下插件

插件

插件的安装及使用可以参考:

https://github.com/judasn/IntelliJ-IDEA-Tutorial/blob/master/plugins-settings.md

下面是我安装的插件:

  • Key Promoter X

    • 这个一个快捷键提示插件,安装后在你通过非快捷键方式使用某功能时 为你提供快捷键建议
  • Translation

    • 他是一个翻译插件,但是只能在文件中对文档进行翻译。安装后可以先选中要翻译的文本然后通过Ctrl+Shift+Y进行翻译,当然也可通过右键进行选择
  • Grep Console

    • 他可以给不同的日志添加不同的颜色
  • Free MyBatis plugin

    • 可以实现mybatis中接口和mapping文件之间的快速跳转
  • RestfulToolkit

    • 一套 RESTful 服务开发辅助工具集。

      1.根据 URL 直接跳转到对应的方法定义 ( or Ctrl Alt N );
      2.提供了一个 Services tree 的显示窗口;
      3.一个简单的 http 请求工具;
      4.在请求方法上添加了有用功能: 复制生成 URL;,复制方法参数…
      5.其他功能: java 类上添加 Convert to JSON 功能,格式化 json 数据 ( Windows: Ctrl + Enter; Mac: Command + Enter )。
      安装后,右侧会有RestServices侧边栏,点击打开

  • Maven Helper

    • 分析依赖冲突插件

      此插件可用来方便显示maven的依赖树,在没有此插件时,如果想看maven的依赖树需要输入命令行: mvn dependency:tree 才可查看依赖。如果想看是否有依赖包冲突的话也需要输入命令行等等的操作。而如果安装Maven Helper插件就可免去命令行困扰。通过界面即可操作完成。

      打开项目中的pom文件,在底部会显示一个“Dependency Analyzer”,

      可进行相应操作:

      • Conflicts(查看冲突)
      • All Dependencies as List(列表形式查看所有依赖)
      • All Dependencies as Tree(树形式查看所有依赖)
      • 搜索功能
  • Gsonformat

    • 可根据json数据快速生成java实体类。

      自定义个javaBean(无任何内容,就一个空的类),复制你要解析的Json,然后alt+insert弹出如下界面或者使用快捷键 Alt+S,在里面粘贴刚刚复制的Json,点击OK即可。

  • GenerateAllSetter

    • 可以通过这个插件来快速生成类中的set方法来给对象赋值。
      在这里插入图片描述
  • JRebel for IntelliJ

    • 这是一个很强大的热部署插件。不过安装后需要进行激活。

    • 使用配置。

      • 安装好之后点击View–>Tool Windows–>JRebel,显示出jrebel Panel窗口,在窗口中将行吗启用jrebel。就是和下图一样,把选项选中就可以了。然后他会在项目中生成一个rebel.xml文件。
        在这里插入图片描述
      • 如果我们使用的是外部的容器来运行项目,那么在配置容器的时候On 'Update' actionOn frame deactivation 这两项目一定要选择 Update classes and resources在这里插入图片描述
    • 使用

      • 配置好之后就可以直接使用了,在启动的时候我们需要选择JRebel提供的方式来启动项目,那么这个项目就可以实现热加载
        在这里插入图片描述
  • vue.js

    • 编写vue的一个插件,在安装好插件之后还要在配置一下
    • 配置支持ES6
      在这里插入图片描述
  • FindBugs

    • 这个可以帮我们扫描代码,检查出一些常见的代码问题,从而让代码更健康

    • 安装的话直接搜索然后直接点击安装就可以了,

    • 使用

      • 在安装重启后他会出现一个FindBugs-IDEA窗口,FindBugs所有的操作都在这个窗口中。
        在这里插入图片描述

      • 其实简单的理解就是1-9是用于对代码进行分析的选项,然后10-13是在找到bug之后对于bug的显示方式也就是bug的分组方式,常用的是根据bug类型分组或根据bug严重级别进行分组

      • 如果根据bug类型分组,常见的问题类型

        • Malicious code vulnerability: 恶意代码

          Dodgy code:不符合规范的代码

          Internationalization:国际化相关问题,如错误的字符串转换;

          Bad practice:坏的实践:常见代码错误,序列化错误,用于静态代码检查时进行缺陷模式匹配;

          Multithreaded correctness:多线程的正确性:如多线程编程时常见的同步,线程调度问题;

        Performance:运行时性能问题,如由变量定义,方法调用导致的代码低效问题。

        Correctness:可能导致错误的代码,如空指针引用等;

        Experimental:可能受到的恶意攻击,如访问权限修饰符的定义等;

        Security:安全性

      • 如果根据bug严重级别进行分组,常见的问题类型

        • Of Concren 建议, 如果遵循能更好的完善代码

          Troubling 不好的, 可能会引发不良后果

          Scary 严重问题, 在某种情况下一定会出现问题

          Scariest 非常严重, 已经影响到当前程序功能

  • Alibaba Java Coding Guidelines

    • 阿里的java代码检查工具。
    • 安装后使用起来很简单就两个按钮,而且是中文的。
      在这里插入图片描述
    • 绿色的那个是对代码进行扫描,而蓝色的是在编写代码的时候进行实时检查的开关

好啦,idea系列到这里就结束啦,也写了挺久的。当然在这个系列中有可能一些东西没有做到手把手傻瓜式的操作。不过具体的操作还是得去实践的,这里就当做是抛砖引玉啦,有问题或不明白的地方可以参考官网或留言,谢谢。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

idea学习系列五之debug及插件的使用 的相关文章

  • Objective-C 相当于 Java 枚举或“静态最终”对象

    我试图找到一个与 Java 枚举类型或 public static final 对象等效的 Objective C 例如 public enum MyEnum private String str private int val FOO f
  • 有效地将三个字母的货币名称转换为符号名称(例如 20 美元到 20 美元)

    我有一个格式化的字符串 它等于USD 20 我想把它转换成 20 我怎样才能高效地做到这一点 我应该使用正则表达式来执行此操作 但由于区域设置发生变化 国家 地区 ISOCode 也会发生变化 你需要的是这个 import java uti
  • Java 8 可选

    我想检查特定对象大小是否大于 0 如果它大于 0 那么我想创建一个可选对象 如果不是 那么我想返回一个可选的空对象 这是java代码的长版本 if fooA size gt 0 return Optional of new Foo else
  • Java 比 Xmx 参数消耗更多内存

    我有一个非常简单的 Web 服务器类 基于 Java SEHttpServer class 当我使用此命令启动编译的类来限制内存使用时 java Xmx5m Xss5m Xrs Xint Xbatch Test 现在如果我使用检查内存top
  • 如何从球衣服务端点发送实体列表?

    我正在从球衣服务器发送实体列表 在客户端 我试图获取这些实体列表 但它给了元帅例外 为什么它在元素名末尾添加 s 即 emps 而不是 emp XmlRootElement public class Emp Server side code
  • 如何确定 JDialog 显示在哪个屏幕上

    我有一个非常大的应用程序 有多个对话框 我的任务是确保不完全可见的对话框 因为用户将其从可见屏幕区域拉出 移回屏幕中心 当我只处理一个屏幕时 这没问题 它工作得很好 但是 该应用程序的大多数用户的桌面上都有两个屏幕 当我尝试找出对话框显示在
  • 简单的Java程序插入USB热点后速度慢100倍

    我有以下Java程序 class Main public static void main String args throws java io IOException long start System nanoTime java io
  • 如何使用Gson将JSONArray转换为List?

    在我的 Android 项目中 我试图将收到的 JSONArray 转换为列表 在 的帮助下这个答案 https stackoverflow com questions 8371274 how to parse json array in
  • Hibernate更新查询问题

    对于此更新查询 update TestDB dbo MyEmp set empname where empid 我在 DAO 课上写的 MyEmployee myEmployee new MyEmployee MyEmployee myEm
  • 如何在不冒 StackOverflowError 风险的情况下使用 CompletableFuture?

    我想遍历异步函数的搜索空间 我将逻辑编码如下 Assuming that a function maps a range of inputs to the same output value minimizes the input valu
  • java多线程中“私有最终对象”锁定有什么用?

    java多线程中 私有最终对象 锁定有什么用 据我的理解 我认为要使一个类成为线程安全的 我们应该使用内部锁定 将所有方法标记为同步并使用 this 将它们锁定在对象的监视器上 或者我们可以用方法中的私有最终对象锁替换类的 this 上标记
  • 是否有适用于 Java 的 CalDAV 客户端库? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想使用 CalDAV 协议与我的日
  • 为什么我无法使用 HttpUrlConnection 上传第一个文件块?

    在我的项目中 我应该从一台服务器逐块下载文件 并将每个块立即上传到另一台服务器 我有一个应该下载的文件的 URL 我们就这样称呼它吧downloadUrl 因此 这就是我逐块下载文件的方式 val chunkSize 1024 1024 B
  • mysql 准备好的语句错误:MySQLSyntaxErrorException

    我使用准备好的语句编写了选择语句 每次尝试运行都会出现此错误 我如何克服这个错误 我的jdbc连接器是mysql connector java 5 1 13 bin jar 我的代码 public Main add ad to getAdD
  • jasper 报告文件中出现错误

    首先 我在 iReport 5 1 0 中创建一个 R D1 jrxml 文件 我执行该报告的 Java 代码如下所示 import java sql Connection import java sql DriverManager imp
  • java.lang.IllegalStateException:FragmentManager 已被销毁

    活动中onResume我称之为 volley request 的方法 它获取项目列表 然后将它们加载到此活动内的 ListFragment 中 当我第一次进入活动时 一切正常 但当我重新进入活动时 ListFragment 为空 并且控制台
  • 不鼓励在Web应用程序中使用线程吗?

    我们与同事就在 Java 的 Web 应用程序中使用线程进行了激烈的讨论 他们的观点是 不建议在 Java Web 应用程序中使用线程 因为它们不受容器管理 一般来说 我对此表示同意 因为线程可能会干扰容器 但是 如果它不是 Java EE
  • 优雅地避免 Java 中的 NullPointerException

    考虑这一行 if object getAttribute someAttr equals true 显然这一行是一个潜在的错误 属性可能是null我们会得到一个NullPointerException 因此我们需要将其重构为以下两个选择之一
  • 如何将字符串解析为map

    有一个像A B C D E F这样的字符串 如何将其解析为map 我会使用拆分 String text A B C D E F Map
  • 如何将元素添加到通用集合

    我想知道如何将专用对象添加到通用集合中 我正在使用以下代码 Collection

随机推荐

  • 微信小程序练手项目(云开发)

    入门回顾 微信开放社区 https developers weixin qq com community develop doc 000c2e7a3d0c501c95b9c3c935640d 1 小程序 注册 使用 配置 2 小程序的逻辑层
  • Unity5.3资源热更新

    转载自 http blog csdn net l jinxiong article details 50877926 Unity5以下的版本 要导出AssetBundle需要自己写一大坨导出的代码 BuildPipeline 想正确处理好资
  • 教妹学Java(十七):do-while 循环

    大家好 我是沉默王二 一个和黄家驹一样身高 和刘德华一样颜值的程序员 本篇文章通过我和三妹对话的形式来谈一谈 do while 循环 教妹学 Java 没见过这么有趣的标题吧 语不惊人死不休 没错 本篇文章的标题就是这么酷炫 接受不了的同学
  • JS遍历对象的七种方法

    一 for in let obj name cheng sex man Object defineProperty obj age value 18 enumerable true for item in obj console log i
  • 苹果商店上架流程_App上架苹果流程及注意事项

    APP上架是 APP应用从提交审核到上架整个过程 目的是让应用展示在APP Store上获取流量及用户 一 IOS上架整个流程 1 申请开发者账号 2 创建APP ID及申请证书 3 itunes connect 创建APP 4 打包 上传
  • 小程序 video 组件播放本地视频(黑屏无法播放,报错:MEDIA_ERR_SRC_NOT_SUPPORTED)

    小程序播放本地视频 黑屏无法播放 报错 MEDIA ERR SRC NOT SUPPORTED
  • VS9(vs2008) 下 Debug 显示 UTF8 字符串

    默认的 VC调试器只能正常显示ANSI字符串及UNICODE字符串 而UTF 8字符串及其他格式则无法显示 这里无需编写插件及修改配置文件 只需要将要显示的字符串拉到Watch中 并在变量后面添加 s8即可显示 gt 同样类型的功能也应该很
  • Anaconda-tensorflow-keras安装方法学习

    目录 开发工具 Anaconda 下载 安装与配置 Anaconda 下载 Anaconda 安装 Anaconda 安装问题 Anaconda 添加清华镜像源 安装tensorflow 接着安装keras 使用Jupyter notebo
  • FI 总账科目(GL),应付款方(供应商),应收款方(客户)的主要数据库表流向及说明

    学习FI模块也有几天了 今天的视频冲击 现在基本有点模型了 现将整理好的成果依次发布出 首先说下该模块中主要数据流向 BSIK 是供应商的未清项表 BSAK 是供应商的已清项表 BSID 是客户的未清项表 BSAD 是客户的已清项表 BSI
  • CentOS利用expect批量推送ssh public key的脚本

    方法1 bin bash Author Razor QQ 254456122 Date 2021 10 29 FileName sshkey sh URL https blog csdn net mandarin meng spm 1019
  • 使用预训练模型运行DiffusionDetection

    工程链接 https github com ShoufaChen DiffusionDet DIffusionDet需要的基础环境及各种包都配置好了 接下来我们开始用Pre trained Model来运行demo py 1 打包下载工程
  • Shell脚本之read用法

    read 默认接受键盘的输入 回车符代表输入结束 read命令选项 p 打印信息 t 限定时间 s 不回显 n 输入字符个数 bin bash clear echo n e Login read acc read p Login acc e
  • python函数练习题讲解

    自学的知识 用来记录一下 练习 1 写一个打印一条横线的函数 提示 横线是若干个 组成 2 写一个函数 可以通过输入的参数 打印出自定义行数的横线 提示 调用上面的函数 3 写一个函数求三个数的和 4 写一个函数求三个数的平均值 提示 调用
  • va_start和va_end详解

    1 在C中 当无法列出传递函数的所有实参的类型和数目时 可以用省略号指定参数表 例如 void foo void foo parm list 2 函数参数的传递原理 函数参数是以栈的形式存取 从右至左入栈 参数的内存存放格式 参数存放在内存
  • 如何查看海思SDK的版本

    命令 cat proc umap vpss 效果如下 第一行的version就是版本信息
  • html学习——表格标签

    表格 1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3 table border 1px tr td 1 1 td td 1 2 td td 1 3 td tr tr td 2 1 td td 2 2 td td 2
  • css3直线运动_CSS3实现动画线条运动效果实例集合(一)

    在我们日常的开发中 有时候有的图片 布局块需要加一下边框运动效果 对于这些效果 我们可以使用CSS3动画属性animation 再配合css的一些技巧制作出来 下面是收藏的一些效果实例 1 边框流动效果 html css3效果的内容部分 c
  • 手写一个react-redux,原理一目了然

    react redux的功能如下 Provider 为后代组件提供store connect 为组件提供数据和变更方法 数据变化时自动更新组件 了解react redux的功能移步这里 下面我们开始实现react redux的几个功能 my
  • curl命令忽略不受信任的https安全限制

    用curl命令没有得到返回 还报了个提示 curl 60 Issuer certificate is invalid More details here http curl haxx se docs sslcerts html curl p
  • idea学习系列五之debug及插件的使用

    idea学习系列五之debug及插件的使用 上一篇 介绍了maven及服务器的使用 这里将介绍idea中debug及插件的使用 在实际开发中debug是最常用的了 而且idea相比于eclipse中的debug还新增了一些比较好用的功能 还