简单的调试功能
简单的代码做例子
package serialize;import java.io.Serializable;public class User implements Serializable{private String name;public void setName(String name) {this.name = name;}public String getName() {return name;}}
package serialize;import org.jetbrains.annotations.NotNull;import java.io.*;public class Main {public static void main(String[] args) throws Exception{User user = new User();user.setName(("m0re"));byte[] serializeData = serialize(user); // 创建是一个字节型的数据FileOutputStream f_out = new FileOutputStream("user.bin");f_out.write(serializeData);f_out.close();User user2 = (User)unserialize(serializeData);System.out.println(user2.getName());}public static byte @NotNull [] serialize(final Object obj) throws Exception {ByteArrayOutputStream byte_out = new ByteArrayOutputStream(); // 创建一个32字节(默认大小)的缓冲区ObjectOutputStream objOut = new ObjectOutputStream(byte_out); // 通过传入byte字节流来存储写入的对象objOut.writeObject(obj); // 将对象写入流中return byte_out.toByteArray(); // 创建一个新分配的字节数组。数组的大小和当前输出流的大小,内容是当前输出流的拷贝。}public static Object unserialize(final byte[] serialized) throws Exception {ByteArrayInputStream bytein = new ByteArrayInputStream(serialized); // 接收字节数组作为参数创建ObjectInputStream objIn = new ObjectInputStream(bytein); // 从输入流中读取Java对象return objIn.readObject();}}
设置断点,为了看清楚整个执行过程,故断点设置在第一句代码处
然后开启Debug
1. 表示一步步的向下运行代码,不会走到任何方法中。
- 表示一步步的向下运行代码,不会走到任何系统类库的方法中,但是会走入自定义的方法中。
- 表示一步步的向下运行代码,会走入系统类库的方法中,也会走入自定义的方法中。
- 表示跳出方法。
- 运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。
然后再看这边的调试过程
可以看到走到了第二步,user的值是空的,说明这里还没开始执行下一行,user还没完成赋值。此时如果需要测试其他的值,可以手动赋值,同时不会影响代码。但是实际执行是根据调试时提交的值继续进行下一步的。

修改值
上面的值是不影响的。继续走
到最后一步,仍然是admin当参数来执行的。
…..
