JShell เป็นเครื่องมือ REPL รันสนิปเพทโค้ดได้โดยไม่ต้องวางในคลาส ให้วิธีประเมิน declarations statements และ expressions ใน Java ไม่ต้องสร้าง main() method
คำสั่ง "/debug" ใช้แสดง debugging information สำหรับการใช้งาน JShell tool พิมพ์ "/debug" แล้ว debugging mode เปิด หลังเปิด debug mode พิมพ์บางอย่าง เช่น การบวกง่ายๆ หรือ string แล้วจะพิมพ์รายละเอียดออกมา
ตัวอย่าง 1: Debug การบวกเลข
jshell> /debug
| Debugging on
jshell> 5+3
Compiling: 5+3
Kind: EXPRESSION_STATEMENT -- 5 + 3;
compileAndLoad [Unit($1)]
++setCompilationInfo()
Snippet:VariableKey($1)#11-5+3
package REPL;
import java.io.*;import java.math.*;import java.net.*;import java.nio.file.*;import java.util.*;
import java.util.concurrent.*;import java.util.function.*;import java.util.prefs.*;
import java.util.regex.*;import java.util.stream.*;
class $JShell$11 {
public static int $1;
public static Object do_it$() throws Throwable {
return $1 = 5+3;
}
}
-- diags: []
setStatus()
Snippet:VariableKey($1)#11-5+3 - status: VALID
compileAndLoad ins = [Unit($1)]
-- legit = [Unit($1)]
Compiler generating class REPL.$JShell$11
compileAndLoad [Unit($1)]
-- deps: []
success: true
recordCompilation: Snippet:VariableKey($1)#11-5+3 -- status VALID, unresolved []
$1 ==> 8
ตัวอย่าง 2: Debug การกำหนด String
jshell> /debug
| Debugging on
jshell> String s = "Adithya"
Compiling: String s = "Adithya";
Kind: VARIABLE -- String s = "Adithya"
compileAndLoad [Unit(s)]
++setCompilationInfo()
Snippet:VariableKey(s)#12-String s = "Adithya";
package REPL;
import java.io.*;import java.math.*;import java.net.*;import java.nio.file.*;import java.util.*;
import java.util.concurrent.*;import java.util.function.*;import java.util.prefs.*;
import java.util.regex.*;import java.util.stream.*;import static REPL.$JShell$11.$1;
class $JShell$12 {
public static String s;
public static Object do_it$() throws Throwable {
String s_ = "Adithya";
return s = s_;
}
}
-- diags: []
setStatus()
Snippet:VariableKey(s)#12-String s = "Adithya"; - status: VALID
compileAndLoad ins = [Unit(s)]
-- legit = [Unit(s)]
Compiler generating class REPL.$JShell$12
compileAndLoad [Unit(s)]
-- deps: []
success: true
recordCompilation: Snippet:VariableKey(s)#12-String s = "Adithya"; -- status VALID, unresolved []
s ==> "Adithya"
ปิด Debug Mode
พิมพ์ "/debug" อีกครั้งในเซสชันเดียวกัน
jshell> /debug
| Debugging off
Debug mode ช่วยดูรายละเอียดการคอมไพล์ การโหลดคลาส และสถานะของ snippet เหมาะสำหรับการวิเคราะห์ปัญหาใน JShell เอง