IDEA中DEBUG技巧

Debug 介绍

Debug 设置

  • 如上图标注 1 所示,表示设置 Debug 连接方式,默认是 SocketShared memory 是 Windows 特有的一个属性,一般在 Windows 系统下建议使用此设置,相对于 Socket 会快点。

## Debug 常用快捷键

Win 快捷键Mac 快捷键介绍
F7F7进入下一步,如果当前行断点是一个方法,则进入当前方法体内,如果该方法体还有方法,则不会进入该内嵌的方法中 必备
F8F8进入下一步,如果当前行断点是一个方法,则不进入当前方法体内 必备
F9Command + Option + R恢复程序运行,直至下个断点或程序运行结束 必备
Alt + F8Option + F8选中对象,弹出可输入计算表达式调试框,查看该输入内容的调试结果 必备
Ctrl + F8Command + F8设置光标当前行为断点,如果当前已经是断点则去掉断点
Shift + F7Shift + F7智能步入。断点所在行上有多个方法调用,会弹出进入哪个方法
Shift + F8Shift + F8跳出,表现出来的效果跟 F9 一样
Ctrl + Shift + F8Command + Shift + F8指定断点进入条件
Alt + Shift + F7Option + Shift + F7进入下一步,如果当前行断点是一个方法,则进入当前方法体内,如果方法体还有方法,则会进入该内嵌的方法中,依此循环进入
Alt + Shift + F8Option + Shift + F8返回上一步
Drop FrameDrop Frame这个不是一个快捷键,而是一个 Debug 面板上的按钮。该按钮可以用来退回到当前停住的断点的上一层方法上,可以让过掉的断点重新来过
  • 有时候我们可以这样粗鲁地认为 Debug 的使用就是等同于这几个快捷键的使用,所以上面的 必备 快捷键是我们必须牢记的,这些也是开发很常用的。

Debug 特殊技能使用

  • 如上图 Gif 所示,查看所选对象的方法常用有三种方式:

  • 选中对象后,使用快捷键 Alt + F8

  • 选中对象后,拖动对象到 Watches

  • 选中对象后,鼠标悬停在对象上 2 秒左右。

  • 如上图 Gif 所示,在弹出表达式输入框中 IntelliJ IDEA 也是能帮我们智能提示。

  • 如上图 Gif 所示,当我们需要过掉后面的所有断点的时候,我们不需要去掉这些断点,只需要点击左下角那个小圆点,点击小圆点之后,所有断点变成灰色,然后我们再在按快捷键 F9 即可过掉当前和后面所有的断点。

 

  • 我们可以给断点设置进入的条件。如上图 Gif 所示,因为变量 temp3 不等于 200 所以该断点没有被进入直接跳过。

  • 如上图,我们可以给断点设置更复杂的步入条件

  • 红框中的 Pass count 表示跳过多少次后开始步入,比如 for 循环中,我们要查看一个变量循环 3 次后的结果就可以使用该方式。

  • 如上图,对于某些不重要的断点,只要步入一次就够了,就可以勾选此选项,让它步入之后自动删除。

  • 如上图,对于某些场景的断点,需要其他断点先触发之后再进行触发,可以选择此项。默认选择的是: None

  • 有时候当我们步入方法体之后,还想回退到方法体外。如 Gif 演示,断点进入 addNum 方法后,点击 Drop Frame 按钮之后,断点重新回到方法体之外。

  • 上图 IntelliJ IDEA 版本:2017.1.3

  • 如上图左侧红框内容,可以看到当前断点线程执行的堆栈情况,最上面的为当前断点位置,下面的是断点前面执行的方法,如果需要看断点前面走过的路,可以查看该区域。并且可以用图上箭头按钮进行限制显示框架类代码的执行过程,而不是包括依赖 jar 里面的执行过程。

  • 如上图右侧红框内容,可以用来展示单点断点位置的内存情况,对于判断内存溢出相关问题很有帮助。

  • 学习于github

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/80041.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分享一个Python 写的监控日志log txt文档 的代码

监控log文件的需求 某些特殊原因,想一直看到.log 的最后一行打印,所以写了一些代码监控log (有个奇怪需求,就是log 因为重复启动原因,会一直加,不是同一个log) 监控界面 涉及的Python代码&…

VS版本下载

VS 版本下载: 怎样才能从微软官网下载VS系列开发工具? - 知乎

华为OD机考算法题:告警抑制

题目部分 题目华为OD机考算法题:告警抑制难度易题目说明告警抑制,是指高优先级告警抑制低优先级告警的规则。高优先级告警产生后,低优先级告警不再产生。请根据原始告警列表和告警抑制关系,给出实际产生的告警列表。 注&#xff…

Unity SteamVR 开发教程:用摇杆/触摸板控制人物持续移动(2.x 以上版本)

文章目录 📕教程说明📕场景搭建📕创建移动的动作📕移动脚本⭐移动⭐实时调整 CharacterController 的高度 📕取消手部和 CharacterController 的碰撞 持续移动是 VR 开发中的一个常用功能。一般是用户推动手柄摇杆&…

WSL2 内存只有 Windows 的一半?可以设置 .wslconfig 解决

偶然 htop 发现 WSL 里面的内存只有 16GB,而我的 Windows 是 32GB 的,才了解到默认的设置就是 50% 的 RAM 占用,可以通过设置 .wslconfig 解决这个问题。 .wslconfig 的路径 在 C:\Users\YourUsername\.wslconfig,如果发现没有这…

CNN(八):Inception V1算法实战与解析

🍨 本文为🔗365天深度学习训练营 中的学习记录博客 🍖 原作者:K同学啊|接辅导、项目定制 1 Inception V1 Inception v1论文 1.1 理论知识 GoogLeNet首次出现在2014年ILSVRC比赛中获得冠军。这次的版本通常称其为Inception V1。…

strncpy

strncpy: 函数介绍: 函数原型: char *strncpy(char *dest, const char *src, int n) 返回值:dest字符串起始地址 说明: 1、当src字符串长度小于n时,则拷贝完字符串后,剩余部分将用空字节填…

建站系列(八)--- 本地开发环境搭建(WNMP)

目录 相关系列文章前言一、准备工作二、Nginx安装三、MySQL安装四、PHP安装及Nginx配置五、总结 相关系列文章 建站系列(一)— 网站基本常识 建站系列(二)— 域名、IP地址、URL、端口详解 建站系列(三)— …

Linux防火的常用命令

文章目录 防火墙查看状态防火墙启动关闭命令防火墙配置添加规则移除规则 防火墙查看状态 防火墙重新载入(必须重新载入后才能生效) firewall-cmd --reload防火墙查看基础状态 systemctl status firewalld #查看状态查看 防火墙所有规则 firewall-cmd --list-all查看rich-ru…

【设计模式】二、UML 类图概述

文章目录 常见含义含义依赖关系(Dependence)泛化关系(Generalization)实现关系(Implementation)关联关系(Association)聚合关系(Aggregation)组合关系&#x…

【JavaScript保姆级教程】输出函数和初识变量

文章目录 前言一、输出内容1.1 document.write()函数1.2 console.log()函数查看终端输出信息 1.3 alert()函数 二、变量的使用1.1 变量的声明1.3变量的赋值1.4 变量的声明和赋值 三、输入提示框的使用总结 前言 JavaScript是一种强大的脚本语言,广泛应用于网页开发…

C++DAY10 结构体·定义与使用

结构体的作用&#xff1a; 结构体属于用户自定义的数据类型&#xff0c;允许用户储存不同的数据类型。 #include<iostream> using namespace std;//结构体的语法 //struct 结构体名 { 结构体成员列表 }; struct Student {//成员列表//姓名string name;//年龄int age;/…

git 提交冲突

提示&#xff1a;您有偏离的分支&#xff0c;需要指定如何调和它们。您可以在执行下一次 提示&#xff1a;pull 操作之前执行下面一条命令来抑制本消息&#xff1a; 提示&#xff1a; 提示&#xff1a; git config pull.rebase false # 合并 提示&#xff1a; git config pull.…

文件批量重命名:自定义命名与扩展名更改

你是否曾经需要批量更改文件名称和类型&#xff1f;如果你有大量文件需要重命名和更改类型&#xff0c;那么今天我们将向你介绍一种简单的方法来轻松批量更改文件名称和类型。无论你是需要将一个文件夹中的所有图片改为另一种格式&#xff0c;还是需要将一个文件夹中的所有文档…

【基于多输出方向的同步异步日志系统】

本项目涉及的到所有源码见以下链接&#xff1a; https://gitee.com/ace-zhe/wz_log 一、项目简介 1.日志的概念&#xff08;白话版&#xff09; 日志类似于日记&#xff0c;通常是指对完成某件事情的过程中状态等的记录&#xff0c;而计算机中的日志是指日志数据&#xff0c…

轻松学习 Spring 事务

文章目录 一. Spring事务简介二. Spring事务使用1. 编程式事务2. 声明式事务 三. Transactional的使用1. 参数作用2. 事务失效的场景3. Transactional工作原理 四. Spring 事务的隔离级别五. Spring事务传播机制 一. Spring事务简介 在之前的博客已经介绍了在 Spring 环境中整…

结构体变量的初始化和引用

任务描述 本关任务&#xff1a;从键盘输入两个学生的学号&#xff0c;姓名和成绩&#xff08;整数&#xff09;&#xff0c;分别存入结构体中&#xff0c;输出成绩较高的学生的学号&#xff0c;姓名和成绩。 相关知识 结构体类型用于描述由多个不同数据类型的数据构成的复合…

浅析安防监控系统/AI视频智能分析算法:河道水文水位超标算法应用

传统的水位水尺刻度尺位监测中&#xff0c;所采用的人工读数方式&#xff0c;效率较为低下且 人工成本较高&#xff0c;不利于作业流程的数字化。尽管感应器检测会自动对水位的模拟输入进行筛选&#xff0c;但是由于成本、使用场景要求高、后续日常维护复杂等多种因素&#xff…

Pytorch实现图像语义分割(初体验)

Pytorch实现图像语义分割&#xff08;初体验&#xff09; 这些天在学习图像语义分割相关的知识&#xff0c;并简单写了篇概述。原本想先看几篇经典论文&#xff0c;如全卷积网络FCN&#xff0c;奈何英语水平有限&#xff0c;翻译起来实在费劲。想来不如先直接体验一下语义分割…

vscode c++解决包含头文件红色波浪线问题

安装c/c插件后&#xff0c;按ctrlshiftp&#xff0c; 点击打开了c_cpp_properties.json文件&#xff0c;对其中的IncludePath进行编辑&#xff0c;示例如下&#xff1a; "includePath": ["${workspaceFolder}/**","${workspaceFolder}/include/**&q…