Name: mf23781 Date: 08/25/98
*Test case:
J4_3_C1.java
=================
package Chap04;
class J4_3_C1 implements Cloneable //LOC:TC0003.02
{
int val;
}
J4_3_C2.java
==============
package Chap04;
class J4_3_C2
{
int x;
static J4_3_C2 origin = new J4_3_C2(0);
J4_3_C2() { System.out.println("default"); } //LOC:TC0001.02
J4_3_C2(int x) { this.x = x; } //LOC:TC0002.02
public String toString() {
return "(" + x + ")";
}
}
J4_3_References.java
=======================
package Chap04;
public class J4_3_References
{
public static void main(String[] args)
{
// A J4_3_C2 is explicitly created using newInstance:
J4_3_C2 p = null;
try {
p = (Chap04.J4_3_C2)Class.forName("Chap04.J4_3_C2").newInstance(); //LOC:TC0001.01
} catch (Exception e) {
System.out.println(e);
}
// An array is implicitly created by an array constructor:
J4_3_C2 a[] = { new J4_3_C2(0), new J4_3_C2(1) }; //LOC:TC0001.03 //LOC:TC0002.01
// Strings are implicitly created by + operators:
System.out.println("p: " + p);
System.out.println("a: { " + a[0] + ", " + a[1] +" }");
// An array is explicitly created by an array creation expression:
String sa[] = new String[2];
sa[0] = "he"; sa[1] = "llo";
System.out.println(sa[0] + sa[1]);
J4_3_C1 v1 = new J4_3_C1(); //LOC:TC0003.01
v1.val=5;
J4_3_C1 v2 = v1;
v2.val=6; // Monitor v1 and v2
System.out.println("v1.val=="+v1.val+" v2.val=="+ v2.val);
Object obj = new Object(); // Monitor obj //LOC:TC0004.01
obj = v1;
System.out.println(obj.getClass());
System.out.println(obj.toString());
obj = sa;
System.out.println(obj.getClass());
System.out.println(obj.toString());
}
}
*Steps to reproduce this defect:
jdb Chap04.J4_3_References
stop in Chap04.J4_3_References.main
run
stop at Chap04.J4_3_References:10
cont
step
step up
step
list
*Outputs:
1.1.6
========
P:\defects\6438>jdb Chap04.J4_3_References
Initializing jdb...
Warning: JIT compiler "symcjit" not found. Will use interpreter.
0xf8faa0:class(Chap04.J4_3_References)
> stop in Chap04.J4_3_References.main
Breakpoint set in Chap04.J4_3_References.main
> run
run Chap04.J4_3_References
running ...
main[1]
Breakpoint hit: Chap04.J4_3_References.main (J4_3_References:8)
main[1] stop at Chap04.J4_3_References:10
Breakpoint set at Chap04.J4_3_References:10
main[1] cont
main[1]
Breakpoint hit: Chap04.J4_3_References.main (J4_3_References:10)
main[1] step
main[1]
Breakpoint hit: java.lang.String.<init> (String:368)
main[1] step up
main[1]
Breakpoint hit: Chap04.J4_3_References.main (J4_3_References:10)
main[1] step
main[1]
Breakpoint hit: Chap04.J4_3_C2.<clinit> (J4_3_C2:6)
main[1] list
[Internal debug-agent error: operation failed to complete - deadlock
avoided]Internal
exception:
java.lang.InterruptedException
at sun.tools.debug.RemoteAgent.getClassInfo(Compiled Code)
at sun.tools.debug.RemoteClass.getClassInfo(Compiled Code)
at sun.tools.debug.RemoteClass.getSourceFile(RemoteClass.java:157)
at sun.tools.ttydebug.TTY.list(Compiled Code)
at sun.tools.ttydebug.TTY.executeCommand(TTY.java:1405)
at sun.tools.ttydebug.TTY.<init>(Compiled Code)
at sun.tools.ttydebug.TTY.main(Compiled Code)
main[1]
1.1.7H
=========
P:\defects\6438>jdb Chap04.J4_3_References
Initializing jdb...
0xf8ff78:class(Chap04.J4_3_References)
> stop in Chap04.J4_3_References.main
Breakpoint set in Chap04.J4_3_References.main
> run
run Chap04.J4_3_References
running ...
main[1]
Breakpoint hit: Chap04.J4_3_References.main (J4_3_References:8)
main[1] stop at Chap04.J4_3_References:10
Breakpoint set at Chap04.J4_3_References:10
main[1] cont
main[1]
Breakpoint hit: Chap04.J4_3_References.main (J4_3_References:10)
main[1] step
main[1]
Breakpoint hit: java.lang.String.<init> (String:360)
main[1] step up
main[1]
Breakpoint hit: Chap04.J4_3_References.main (J4_3_References:10)
main[1] step
main[1]
Breakpoint hit: Chap04.J4_3_C2.<clinit> (J4_3_C2:6)
main[1] list
[Internal debug-agent error: operation failed to complete - deadlock
avoided]Internal exce
ption:
java.lang.InterruptedException
at sun.tools.debug.RemoteAgent.getClassInfo(Compiled Code)
at sun.tools.debug.RemoteClass.getClassInfo(Compiled Code)
at sun.tools.debug.RemoteClass.getSourceFile(RemoteClass.java:149)
at sun.tools.ttydebug.TTY.list(Compiled Code)
at sun.tools.ttydebug.TTY.executeCommand(TTY.java:1397)
at sun.tools.ttydebug.TTY.<init>(Compiled Code)
at sun.tools.ttydebug.TTY.main(Compiled Code)
main[1]
1.2fcs-E
==========
P:\defects\6438>jdb Chap04.J4_3_References
Initializing jdb...
0xa9:class(Chap04.J4_3_References)
> stop in Chap04.J4_3_References.main
Breakpoint set in Chap04.J4_3_References.main
> run
run Chap04.J4_3_References
running ...
main[1]
Breakpoint hit: Chap04.J4_3_References.main (J4_3_References:8)
main[1] stop at Chap04.J4_3_References:10
Breakpoint set at Chap04.J4_3_References:10
main[1] cont
main[1]
Breakpoint hit: Chap04.J4_3_References.main (J4_3_References:10)
main[1] step
main[1]
Breakpoint hit: java.lang.ClassLoader.loadClass (ClassLoader:202)
main[1] step up
main[1]
Breakpoint hit: Chap04.J4_3_References.main (J4_3_References:10)
main[1] step
main[1]
Breakpoint hit: Chap04.J4_3_C2.<init> (J4_3_C2:8)
main[1] list
4 {
5 int x;
6 static J4_3_C2 origin = new J4_3_C2(0);
7
8 => J4_3_C2() { System.out.println("default"); }
//LOC:TC0001.02
9
10 J4_3_C2(int x) { this.x = x; } //LOC:TC0002.02
11
12 public String toString() {
main[1]
*Notes:
Please note that at this point, if you tell jdb to display
the call stack via 'where', it will work. However, the call to
RemoteClass.typeName() for the first class on the call stack will
result in a similar error at this point. jdb does not use
typeName() so we never see this problem. However, the debugger
that the raiser uses, will need to use typeName() ( or getName())
often.
======================================================================
- relates to
-
JDK-4068874 Hang setting breakpoint in jdb while debugging Sample.java under HotJava
-
- Closed
-