Debug追踪

Posted wurengen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Debug追踪相关的知识,希望对你有一定的参考价值。

测试代码

package demo03;

import java.util.HashMap;
import java.util.Scanner;


public class Demo03MapTest 
    public static void main(String[] args) 
        //1.使用Scanner获取用户输入的字符串
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String str = sc.next();
        //2.创建Map集合,key是字符串中的字符,value是字符的个数
        HashMap<Character, Integer> map = new HashMap<>();
        //3.遍历字符串,获取每一个字符
        for (char c : str.toCharArray()) 
            //4.使用获取到的字符,去Map集合判断key是否存在
            if (map.containsKey(c)) 
                //key存在
                Integer value = map.get(c);
                value++;
                map.put(c, value);
             else 
                //key不存在
                map.put(c, 1);
            
        
        //5.遍历Map集合,输出结果
        for (Character key : map.keySet()) 
            Integer value = map.get(key);
            System.out.println(key + "=" + value);
        
    

 

Debug调试程序:

  • 可以让代码逐行执行,查看代码执行的过程,调试程序中出现的bug

使用步骤 

使用IDEA的断点调试功能,查看程序的运行过程
  • 1. 在有效代码行,点击行号右边的空白区域,设置断点,程序执行到断点将停止,我们可以手动来运行程序
技术图片
  • 2. 点击Debug运行模式
技术图片
  • 3. 程序停止在断点上不再执行,而IDEA最下方打开了Debug调试窗口

技术图片

  • 4. Debug调试窗口介绍

技术图片

  • 5. 快捷键F8,代码向下执行一行,第九行执行完毕,执行到第10行(第10行还未执行)
技术图片
  • 6. 切换到控制台面板,控制台显示 请录入一个字符串: 并且等待键盘录入 
技术图片
  • 7. 快捷键F8,程序继续向后执行,执行键盘录入操作,在控制台录入数据 ababcea 
技术图片
  • 8. 此时到达fifindChar方法,快捷键F7,进入方法fifindChar
技术图片
9. 快捷键F8 接续执行,创建了map对象,变量区域显示 
技术图片
  • 10. 快捷键F8 接续执行,进入到循环中,循环变量i为 0,F8再继续执行,就获取到变量c赋值为字符‘a’ 字节值97 
技术图片
  • 11. 快捷键F8 接续执行,进入到判断语句中,因为该字符 不在Map集合键集中,再按F8执行,进入该判断中 
技术图片
  • 12. 快捷键F8 接续执行,循环结束,进入下次循环,此时map中已经添加一对儿元素
技术图片
  • 13. 快捷键F8 接续执行,进入下次循环,再继续上面的操作,我们就可以看到代码每次是如何执行的了 
技术图片
  • 14. 如果不想继续debug,那么可以使用快捷键F9,程序正常执行到结束,程序结果在控制台显示
技术图片

 

以上是关于Debug追踪的主要内容,如果未能解决你的问题,请参考以下文章

Linux - Debug系列之追踪

Jetty无法debug追踪源码

零基础学Java—Debug追踪(四十四)

shell script 的追踪与 debug

内核追踪技术之 ftrace

Java动态追踪技术探究