JDK 21 | JDK 23 | JDK 24 |
---|---|---|
21.0.5-oracleFixed | 23Fixed | 24 b04Fixed |
Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
Steps to reproduce: - use the code: class A { static void foo(int k) { if (k == 2) { System.out.println("HIT = " + k); // set breakpoint here } } } public class HelloWorld { public static void main(String[] args) throws InterruptedException { System.out.println("Start"); for (int i = 1; i <= 100; i++) { int k = i; Thread t = new Thread(() -> { System.out.println("i = " + k); A.foo(k); }); t.start(); } Thread.sleep(2000); System.out.println("Finish"); } } - compile - use jdb to set a breakpoint and run: >jdb HelloWorld Initializing jdb ... > stop at A:4 Deferring breakpoint A:4. It will be set after the class is loaded. > run run HelloWorld Set uncaught java.lang.Throwable Set deferred uncaught java.lang.Throwable > VM Started: Start i = 21 i = 45 i = 11 i = 16 i = 23 i = 7 i = 51 i = 39 i = 20 i = 40 i = 31 i = 5 i = 6 i = 4 i = 41 i = 53 i = 9 i = 2 i = 13 i = 1 i = 3 i = 15 i = 22 HIT = 2 i = 10 i = 8 i = 14 i = 12 i = 17 i = 52 i = 19 i = 24 i = 44 i = 18 i = 55 i = 25 i = 56 i = 26 i = 34 i = 43 i = 37 i = 33 i = 28 i = 30 i = 32 i = 35 i = 38 i = 27 i = 47 i = 49 i = 59 i = 60 i = 48 i = 62 i = 54 i = 58 i = 64 i = 67 i = 68 i = 70 i = 73 i = 69 i = 29 i = 75 i = 77 i = 76 i = 74 i = 84 i = 81 i = 80 i = 85 i = 36 i = 86 i = 87 i = 91 i = 93 i = 92 i = 95 i = 99 i = 90 i = 96 Set deferred breakpoint A:4 i = 46 i = 61 i = 42 i = 50 i = 57 i = 63 i = 65 i = 66 i = 71 i = 72 i = 79 i = 78 i = 83 i = 82 i = 88 i = 89 i = 94 i = 98 i = 97 i = 100 Finish The application exited The breakpoint is fully skipped. This was working in version before 20.
|