zoukankan      html  css  js  c++  java
  • 【工具使用】IDEA 中 使用 Debug

    单线程 Debug




    01_Debug


    • 什么是Debug

      • Debug 程序调试
      • 开发:调试 = 1 : 1.5
    • Debug能帮我们做什么

      • 追踪代码运行流程
      • 异常的定位与调试
      • 线上问题追踪
    • Debug的意义

      • 熟悉执行流程
      • 方便理解复杂程序逻辑
      • 定位问题 提高解决问题的能力



    02_Idea中的Debug


    • 设置断点(F9)
    • 程序调试(按钮x8)
    按钮 快捷方式 说明
    Alt+F10 如果光标在其他行或者其他页面,点击按钮调到当前代码执行的行。
    F8 步过,一步一步往下走,如果这一行上有方法不会进入方法。
    F7 步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方库方法。
    Alt + Shift + F7 强制步入,能进入任何方法,查看底层源码的时候可以用此方法进入官方类库。
    Shift + F8 不出,从步入的方法内退回到方法调用处,此时方法已经执行完毕,只是还没有完成赋值。
    回退断点。
    Alt + F9 运行到光标处,可以将光标定位到需要查看的一行,然后使用这一功能,代码会运行至光标行,而不需要打断点。
    Alt + F8 计算表达式。
    • 03_Debug 的使用
      • 设置断点
      • 进入Debug



    代码实例


      • 步过 跳过本行中的方法单行执行
      • 步入 进入本行中的方法,但不进入官方库方法
      • 强制步入 进入方法,包括官方类库
      • 步出 在步入一个方法后,不执行结束则不会退出该方法,使用步出则可以直接结束该方法,调到该方法的调用处
     	public void a(){
           >System.out.println("---程序执行开始");
           >int c = add(1,2);
            System.out.println("---程序执行结束");
        }
    
    	public int add(int a,int b){
            return a+b;
        }
    

    步过:在 2 号断点,步过 不会进入add方法而直接获得 add方法的返回值;

    步入:在 2 号断点,步入 会进入 add 方法,并一步一步执行,但是在 1 号断点,步入 不会进入 print 方法

    强制步入:在 1 号断点,强制步入会进入 print 方法;

    步出:在 进入 add 方法后,如果不想看后面的代码,可以使用步出,直接回到 a 方法;


    • 回退 & 运行到光标
      • 回退:当 步入一个方法体之后,使用回退可以回到该方法的调用处,进而可以重新执行步入等调试(而不用重启Debug);
      • 运行到光标:不用频繁设置断点,光标指到哪里,就运行到哪里;

    • 计算表达式
    • 查看变量的几种方式
      • 1、 Debug 的 Variables
      • 2、 光标放在方法的 形参上面,然后点击 +号
      • 3、 使用计算表达式功能,输入user,就可以显示用户变量,并且可以修改用户变量值
      • 修改方法:直接输入user.setUserTyp=("员工");点击回车

    public static void main(String[] args){
        User user = new User("张三","123456","超级管理员");
        login(user);
    }
    
    public static void login(User user){
        switch(user.userType){
            case "超级管理员":
                sout("是超级管理员");
        }
    }
    
    //User 类
    @Data
    public class User(){
        String username;
        String password;
        String userType;
    }
        
    

    • 条件断点
    • 使用条件:循环300次的断点,需要连点 300 次 步过;
    • 使用方式:在断点处 右击,在Condititon中输入 i == 300;



    多线程 Debug


  • 相关阅读:
    Windows消息机制
    inherited 为什么可以调用父类的private函数? [问题点数:100分,结帖人:h2plus0]
    C++Buidler6中需要注意的几个问题
    BGA封装芯片拆装全程纪实
    Delphi组件开发教程指南(四)组件生成过程(TWinControl)
    Delphi技巧集六 (等待执行完一个外部程序再执行另一个程序)
    C++ Builder高级应用开发指南
    干掉“Spirale”病毒
    完全看懂新世代x86指令集結構
    Delphi 组件撰写常问问题delphi 在整合环境中如何找出组件所产生的问题
  • 原文地址:https://www.cnblogs.com/hskcool/p/14223477.html
Copyright © 2011-2022 走看看