IDEA使用教程之debug基本操作(二)

本文介绍了IntelliJ IDEA的debug功能,包括如何设置断点、启动debug、控制程序执行的操作,如step over、step into、step out等,并分享了查看内存数据的方法,如通过variables和watches窗口以及代码附加信息来观察变量状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在下认为,IDEA的debug功能非常强大。并且易于上手,快捷键操作方便。下面介绍一些常用的基本debug方法

IDEA版本

在下使用的IDEA版本信息如下:

IntelliJ IDEA 2018.3.6 (Ultimate Edition)

不同的IDEA版本可能会造成界面部分地方不同。但是功能是不会变化的。

基本debug流程
  1. 打断点

    在IDEA中为某一行打上断点有两种方法可以做到。在下常用的是鼠标点击打上断点

    1. 在代码行号的右边点击鼠标左键,这样就能直接打上断点在这里插入图片描述
    2. 使用快捷键Ctrl+F8可以直接在光标所在行打上断点。打上断点之后再次点击可以取消打上的断点 在这里插入图片描述
  2. 启动程序开始debug。启动debug的常用方法有2个

    1. 点击debug图标在这里插入图片描述开始启动debug程序。debug小图标常见的位置有3处。具体操作在下图中给出在这里插入图片描述
    2. 使用快捷键shift+F9可直接启动debug程序
      在这里插入图片描述
  3. 控制程序继续执行的操作有两种方式

    1. 点击debug窗口的各种图标进行操作。所有图标如下所示
      • 整个控制图标栏在这里插入图片描述
      • 在这里插入图片描述step over : 执行一行程序,不进入函数
      • 在这里插入图片描述step into :执行一行程序,遇到可进入的函数则进入函数,不进入库函数
      • 在这里插入图片描述force step into:执行一行程序,遇到可进入的函数则进入函数,进入库函数
      • 在这里插入图片描述step out:执行完当前函数,然后跳转到当前函数的调用函数
      • 在这里插入图片描述drop frame:直接从当前函数返回,并且跳转到上级函数将要调用此函数的地方。并且保持此函数中已进行的内存修改(这个功能很少用到)
      • 在这里插入图片描述run to cursor:执行到光标所指的那行程序
    2. 使用快捷键执行程序.由于所有图标的快捷键都可以将通过鼠标悬停的方式显示,此处不再赘述。

    下面介绍部分使用小技巧

    • 鼠标悬停于按键一段时间后显示快捷键以及功能简单描述: 在这里插入图片描述
    • 按键功能完整描述在界面左下角处,如图所示:
      • 在这里插入图片描述

  1. 查看内存数据
    1. 查看一个特定对象或者一个内置数据类型可以在debugger窗口的variables一栏中寻找。variables会显示程序执行到现在,栈帧中存在的所有变量以及其值。内置类型会直接显示其值,对象可以展开查看内部信息。简单示例图片如下

      1. 在这里插入图片描述
    2. 如果没有看到variables一栏,是因为其没有展开,点击debugger窗口右侧的variable图标 在这里插入图片描述 即可打开variable一栏即可

    3. variables一栏显示的是栈帧上的内存情况,在切换栈帧时,variables中可以展示不同栈帧中的局部变量。在frame一栏中点击不同的函数名即可切换栈帧。如下图所示

      • 在这里插入图片描述
    4. 需要持续观察一个对象时可以使用watches一栏,将变量加入其中便一直能查看该变量。将变量加入有两种方法。

      1. 点击watches的"+"号,然后输入变量名,点击回车键加入。(在输入变量名时代码补全)
      2. 直接从variables一栏中拖拽变量进入watches一栏中
      3. 操作示例:
      • 在这里插入图片描述
    5. IDEA还提供了更方便的查看方法,在程序运行时,编辑器中会附加变量的信息在源代码上,以灰色的字符附加到代码的之后。

      1. 附加信息展示:
        • 在这里插入图片描述
      2. 将鼠标悬停在源代码的变量上时,会弹出变量的信息,并且当变量为对象时,可以查看更加详细的信息
        • 在这里插入图片描述

以上便是IDEA基本debug功能的使用方法。谢谢阅读
以下为测试中涉及的代码

import java.util.ArrayList;
import java.util.List;

public class debug_basic {

  public static void main(String[] args) {
    /*基本数据类型*/
    int a=0;
    double b;
    b=3.5;
    a =(int) b;

    /*对象、集合*/
    List<Integer> list = new ArrayList<>();
    list.add(1);
    list.add(2);
    list.add(a);
    f1(list);
    String s = "this is a string "+list.get(2);

    System.out.println("basic debug");
  }

  private static void f1(List<Integer> list) {
    System.out.println(list.get(0));
    list.set(0, 3);
    System.out.println(list.get(0));
  }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值