笔者有话说 导读 前天面试了一个985高校的实习生,问了他平时用什么开发工具,他想也没想的说IDEA,于是我抛砖引玉的问了一下IDEA的调试用过吧,你说说怎么设置断点条件? 作为一名资深的老司机,IDEA调试可以说是家常便饭,如果不会debug,我都不信你读过源码,就别和我说原理了,直接pass掉。 基本界面 ? ④ 调试按钮:一共有8个按钮,调试的主要功能就对应着这几个按钮,鼠标悬停在按钮上可以查看对应的快捷键。 ⑤ 服务按钮:可以在这里关闭/启动服务,设置断点等。 在IDEA中可以改变一下阻塞级别,有两种方法: 断点上右键—>选择Thread—->Make Default,如下图: ? 强制抛异常 这是IDEA 2018年加入的新功能,可以直接在调试中抛出指定的异常。
现在很多项目都是直接部署到服务器上,通常都是没有GUI界面的,也就是说没有办法进行本地调试。 在日常工作中远程调试是非常重要的一个技能,虽然说这个没办法解决线上问题,但是可以在测试环境下进行远程调试从而找到线上问题的解决方法,因为这种方式比日志更加清晰,操作难度更低。 weblogic是有自己的调试方式的,但是我没有深究,这个对于我要表述的内容关系不大,因此没有说明。 此时我们输出启动脚本命令startWebLogic即可看到服务已经停住了,在等待IDEA进入Debug模式。 IDEA设置 按照如图所示步骤即可配置好调试模式,名字改不改其实关系不大。 没导入之前可以看到红色框选部分是只有jar包的,IDEA扫描完成之后会跳出这个界面,这里是因为我的Library中已经存在了一个modeles,也就是导入过了。
远程调试的原理 本机和远程主机的两个 VM 之间使用 Debug 协议通过 Socket 通信,传递调试指令和调试信息。 被调试程序的远程虚拟机:作为 Debug 服务端,监听 Debug 调试指令。 调试程序的本地虚拟机:IDEA 中配置的 Remote Server,指定 Debug 服务器的Host:Port,以供 Debug 客户端程序连接。 如何进行远程调试 idea设置 [在这里插入图片描述] 远程项目设置 idea设置好了,复制命令行参数,我们需要去启动项目的地方设置,启动项目有通过tomcat启动的,也有通过springboot内置tomcat JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" 到此就设置好了,在idea 中打上断点,然后启动Remote来进行调试吧。
IDEA 远程调试,像运行本地代码一样调试远程主机上的程序,以排查远程程序的BUG或代码执行流程。 概述 原理:本机和远程主机的两个 VM 之间使用 Debug 协议通过 Socket 通信,传递调试指令和调试信息。 被调试程序的远程虚拟机:作为 Debug 服务端,监听 Debug 调试指令。 调试程序的本地虚拟机:IDEA 中配置的 Remote Server,指定 Debug 服务器的Host:Port,以供 Debug 客户端程序连接。 启动脚本中添加选项,并重启: JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=20400" IDEA
配置IDEA远程调试 菜单Run - Edit Configurations… 增加远程配置 填写远程服务IP,调试端口,选择待调试的模块路径 复制用于remote JVM的命令行参数 2. 启动远程调试 选择远程调试项目 执行调试 启动调试输出如下 Connected to the target VM, address: '10.1.2.221:5005', transport: 'socket
前言 实际开发中由于项目是部署在Linux服务器上,本地开发可以通过debug进行调试,然而在服务器上运行时出现问题无法直接定位到具体是哪行代码出现了bug,加大问题的排查,好在在idea中可以实现远程调试 java -Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar meas.jar 启动本地的远程调试 agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 开放5005端口 启动本地调试 该问题尚未解决: 参考视频网址:
一、Debug开篇 首先看下IDEA中Debug模式下的界面。 如下是在IDEA中启动Debug模式,进入断点后的界面,我这里是Windows,可能和Mac的图标等会有些不一样。 ④ 调试按钮:一共有8个按钮,调试的主要功能就对应着这几个按钮,鼠标悬停在按钮上可以查看对应的快捷键。在菜单栏Run里可以找到同样的对应的功能,如图1.4。 下面的On frame deactivation,在IDEA窗口失去焦点时触发,即一般你从idea切换到浏览器的时候,idea会自动帮你做的事情,一般可以设置Do nothing,频繁切换会比较消耗资源的 [图6.6] [图6.7] [图6.8] 七、多线程调试 一般情况下我们调试的时候是在一个线程中的,一步一步往下走。 那是因为IDEA在Debug时默认阻塞级别是ALL,会阻塞其它线程,只有在当前调试线程走完时才会走其它线程。
现在IDEA编译成功topo后,使用WinSCP将打包好的包传到主节点 注意:打包之前–要讲 [ 本地模式 ] 改为 [ 集群模式 ] //本地测试模式 LocalCluster
myRunnable, "线程3"); thread1.start(); thread2.start(); thread3.start(); } } 调试问题重现 [在这里插入图片描述] [在这里插入图片描述] [在这里插入图片描述] 可以看到调试的时候会在多线程之间乱跳,很不利于问题的排查。 设置断点每个线程都会走 右键断点,点选Thread [在这里插入图片描述] 设置只调试一条线程 右键断点,点选Thread,同时加上currentThread.getName().equals("线程1
来源:cnblogs.com/yjmyzz/p/idea-advanced-debug-tips.html 一、条件断点 循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值 四、远程调试 这也是一个装B的利器,本机不用启动项目,只要有源代码,可以在本机直接远程调试服务器上的代码,打开姿势如下: 4.1 项目启动时,先允许远程调试 java -server -Xms512m ,就是在本机与远程建立scoket通讯,所以端口不要冲突,而且本机要允许访问远程端口,另外这一段参数,放要在-jar 或 ${main_class}的前面 4.2 idea中设置远程调试 然后就可以调试了 ,现在IntelliJ IDEA提供了一种可视化的调试技巧。 forEach(System.out::print); } 在流的最后行打个断点: 开始debug模式启动: 进入debug界面模式:在下图箭头所指的图标处点击(无图标升级一下IntelliJ IDEA
File–>Project Structure —>SDKS—>Sourcepath—>选择自己jdk目录下面的src.zip文件 File–>settings 取消java.和jav
idea 远程调试 背景 在编写代码时, 总会遇到这样或者那样的bug. 这有些bug 特别是业务逻辑的bug . 在生产或测试环境好复现而在开发环境不好复现. 现在提供的一种思路, 就是远程调试: 我们可以在本地直接调试生产环境或者测试环境的代码. 只需我们本地代码和远程部署的代码一致. 远程主机就会通过socket 将程序执行情况同步到本地 操作 下面以idea 为例 注意事项 如果服务器配置了 iptables/防火墙 , 需要放开对应的端口 如果使用的是云服务器, 则也需要放开对应 socket端口的安全组 如果使用开发工具的是eclipse , 远程调试见这位大佬的博客 传送门 如果使用docker 部署的jar, 则需要进行如下配置 docker 项目进行远程调试 本质和上面步骤差不多 , 但是需要在docker 中, 添加一个内部端口和外部端口的映射 以便我们本地能够通过这个映射访问docker 项目部署的容器 步骤: 关于远程调试原理和配置参数解释.
sbt&play没有main函数,每次使用sbt命令启动,但是就无法使用IDEA调试,本文介绍使用远程调试的方式实现 远程调试 sbt启动调试端口9999 sbt -jvm-debug 9999 run 创建远程调试 其他 sbt添加javaoption 使用-J前缀,会把参数传递给JVM sbt -J-javaagent:skywalking-agent.jar -jvm-debug 9999 run 参考 Run project with java options via sbt Debugging SBT project with Play in IntelliJ IDEA
两年前写过一篇关于idea的高级用法,今天再来一篇关于调试方面的技巧讲解: 一、条件断点 循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值。 三、多线程调试 多线程同时运行时,谁先执行,谁后执行,完全是看CPU心情的,无法控制先后,运行时可能没什么问题,但是调试时就比较麻烦了,最明显的就是断点乱跳,一会儿停这个线程,一会儿停在另一个线程,比如下图 四、远程调试 这也是一个装B的利器,本机不用启动项目,只要有源代码,可以在本机直接远程调试服务器上的代码,打开姿势如下: 4.1 项目启动时,先允许远程调试 java -server -Xms512m ,就是在本机与远程建立scoket通讯,所以端口不要冲突,而且本机要允许访问远程端口,另外这一段参数,放要在-jar 或 ${main_class}的前面 4.2 idea中设置远程调试 然后就可以调试了 善用上述调试技巧,相当大家撸起代码来会更有感觉,祝大家周末愉快!
1.在idea做如下设置并保存 ? 2.远程jar开启调试模式(就是在平时的java -jar后面接上上面复制出来的一句话): java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend
一、idea设置 1.在idea工具栏,Edit Configurations 2.添加remote 3.部署远程服务 1: 将项目打成jar包上传到服务器上,然后使用命令启动。 SNAPSHOT.jar -Dspring.profiles.active=local & 2:远程使用上面拼接的部署命令启动项目 3:本地debug启动(本地代码需要与服务器部署的保持一致) Tips: 服务器上独立给idea
本文将结合着远程调试weblogic来讲解如何使用IDEA调试远程应用,如果你还不清楚,建议收藏,方便查阅。 0x03 IDEA配置远程调试 现在目标应用已经运行在调试模式,且我们也知道其监听的端口了,现在就是需要在IDEA上进行配置了。 同样以Weblogic为例 用IDEA随便新建一个工程 然后IDEA的右上角,配置一下 ? 创建一个remote server ? 配置remote server ? 最后选择在右上角我们刚刚创建的remote server,然后点击这个小虫子可以从控制台看到,我们的idea已经成功连接到远端的应用 ? 你以为这就结束了吗? 然后选择对应的目录就行了,一般就是把包含jar包的目录加进来,添加完过后就可以在IDEA中访问到很多jar包了,并且IDEA会自动反编译这些jar包中的class文件,我们还可以在对应的文件处下断点,然后就可以开始愉快的调试了
倘若是测试环境,我们还多了一项可供选择的手段——远程调试——将程序在测试环境中以debug模式启动,在本机使用IDEA在工程中设置断点进行调试。 suspend=n,address=9087 具体参数详解: -Xdebug 通知JVM工作在DEBUG模式下; -Xrunjdwp 通知JVM使用(Java debug wire protocol)运行调试环境 该参数同时包含了一系列的调试选项; transport 指定了调试数据的传送方式,dt_socket是指用SOCKET模式,另有dt_shmem指用共享内存方式,其中,dt_shmem只适用于Windows 平台; address 调试服务器的端口号,客户端用来连接服务器的端口号; server=y/n VM 是否需要作为调试服务器执行; suspend=y/n 是否在调试客户端建立连接之后启动 VM
本文简单介绍 IDEA 编辑器的调试功能,主要包括断点调试、单点调试、高级调试。可以收藏本文章,使用到的时候方便查找。 1.设置断点 ? 选定要设置断点的代码行,在行号的区域后面单击鼠标左键即可。 2.开启调试会话 ? 点击红色箭头指向的小虫子,开始进入调试。 ? IDE下方出现 Debug 视图,红色的箭头指向的是现在调试程序停留的代码行,方法 f2() 中,程序的第11行。 具体步骤如下: 在自定义方法发f1()处设置断点,执行调试 ? 点击 ? ? 3.3 Force step into ? 该按钮在调试的时候能进入任何方法。 3.4 step out ? 高级调试 4.1 跨断点调试 设置多个断点,开启调试。 ? 想移动到下一个断点,点击如下图: ? 程序将运行一个断点到下一个断点之间需要执行的代码。 结束调试后,应该在箭头1处把所设的断点删除(选择要删除的断点后,点击上方的红色减号)。 4.3 设置变量值 ?
一个被低估的功能:IDEA REST Client 接口调试不用我多解释了,这是每一位程序员必备的技能。 IDEA REST Client 可以满足你所有开发和调试的需求,并且支持环境配置区分以及接口响应断言和脚本化处理,请求配置也可以用文件配置描述。 IDEA REST Client控制台 打开 IDEA,点击顶部菜单栏的 Tools --> HTTP Client --> Test RESTFUL Web Service,打开 IDEA REST Authorization :Basic这种方式认证的话,可以点击下图所示的按钮,会弹出填充用户名和密码的窗口出来,填完后会自动补充到 Authorization 的 header 里面去. [2.png] 历史请求记录 IDEA 会自动地将近期执行的50个请求保存至 http-requests-log.http 文件中,然后将该文件存储在项目的 .idea / httpRequests / 目录下。