Java 调试---如何打印对象数组中的信息到文件

一、适用场景

      对象数组的个数比较多(几百个甚至上千个),核对的数据的时候,一层一层的对比数据,很麻烦,所以,如果我们需要将代码运行过程中的数据进行打印出来,是不是就能更直观的表现出来呢?0.0

二、方法

      调试的时候,我们再“断点” 中可以选择自己想要分析的断点; 

     在出现对象集合的位置下断,这时,监视窗口可以看到对象集合的所有的数据,右键点击 该对象,选择“更改值”,会弹出对话框,显示我们可以键入一些java代码(下面我称之为脚本),可以将自己感兴趣的数据成员输出到自定义文件中,类似windows里面的Hook.

三、关键注意点

      3.1  在脚本的最后一句一定要是返回本对象,如:当前对象为MyClassInstances,脚本最后一句一定要是 return   MyClassInstances。 

      3.2  脚本中所有的数据类型都要用全称,否则识别不了,如 :java.io.FileOutputStream。

      3.3  打印函数是无效的,System.out.println(str);在控制台输出不了信息。

      3.4 脚本中最好使用软件本身的函数(使用jd-gui看)进行获取对象的数据,直接访问对象的成员会报错;

 

四、脚本例子:打印对象的数据到文件中;

     当前对象集合为:MyClassInstances 想要获取它的每个成员 Instance (类型 MyInstance)下的成员变量index的值; 

      java.io.File  f1 = new java.io.File("E:/File/FileName.txt");

      if(f1.exist() == false)

      {

               f1.getParantFile().mkdirs();

      }

      java.io.FileOutputStream   fos = new java.io.FileOutputStream(f1);

      java.io.BufferWriter   rd = new java.io.BufferWriter(new java.io.OutputStreamWriter(fos, "utf-8"));

      int index;

      for(int rowTemp = 0; rowTemp != signals.size(); rowTemp++)

      {

             MyInstance   instance = this.getInstance(rowTemp); //MyInstance  为每个成员的类型

             index = instance .getSlotIndex();//软件自己的获取数据的方式,类似于 MyInstance.index

             java.lang.String sIndex = java.lang.String.value(index);

            System.out.println(sIndex);// 这里控制台是打印不出内容的

            rd.write(sIndex);

      }

      rd.close();

      fos.close();

      return MyClassInstances;  // 返回本对象集合

 

其实脚本就是一个java的字符串输出到文件。

      

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值