public class sun.jvm.hotspot.DebugServer
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.jvm.hotspot.DebugServer
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.jvm.hotspot.DebugServer this
         0: .line 31
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // sun.jvm.hotspot.DebugServer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/jvm/hotspot/DebugServer;

  private void usage();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // sun.jvm.hotspot.DebugServer this
         0: .line 33
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "usage: java "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " <pid> [server id]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 34
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "   or: java "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " <executable> <core> [server id]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         2: .line 35
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\"pid\" must be the process ID of a HotSpot process."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         3: .line 36
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "If reading a core file, \"executable\" must (currently) be the"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         4: .line 37
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "full path name to the precise java executable which generated"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         5: .line 38
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "the core file (not, on Solaris, the \"java\" wrapper script in"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         6: .line 39
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "the \"bin\" subdirectory of the JDK.)"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         7: .line 40
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "The \"server id\" is a unique name for a specific remote debuggee."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         8: .line 41
            iconst_1
            invokestatic java.lang.System.exit:(I)V
         9: .line 42
            return
        end local 0 // sun.jvm.hotspot.DebugServer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lsun/jvm/hotspot/DebugServer;

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String[] args
         0: .line 45
            new sun.jvm.hotspot.DebugServer
            dup
            invokespecial sun.jvm.hotspot.DebugServer.<init>:()V
            aload 0 /* args */
            invokevirtual sun.jvm.hotspot.DebugServer.run:([Ljava/lang/String;)V
         1: .line 46
            return
        end local 0 // java.lang.String[] args
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  args  [Ljava/lang/String;
    MethodParameters:
      Name  Flags
      args  

  private void run(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=9, args_size=2
        start local 0 // sun.jvm.hotspot.DebugServer this
        start local 1 // java.lang.String[] args
         0: .line 49
            aload 1 /* args */
            arraylength
            iconst_1
            if_icmplt 1
            aload 1 /* args */
            arraylength
            iconst_3
            if_icmple 2
         1: .line 50
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.jvm.hotspot.DebugServer.usage:()V
         2: .line 54
      StackMap locals:
      StackMap stack:
            aload 1 /* args */
            iconst_0
            aaload
            ldc "-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 55
            aload 0 /* this */
            invokevirtual sun.jvm.hotspot.DebugServer.usage:()V
         4: .line 58
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 2 /* pid */
        start local 2 // int pid
         5: .line 59
            iconst_0
            istore 3 /* usePid */
        start local 3 // boolean usePid
         6: .line 60
            aconst_null
            astore 4 /* coreFileName */
        start local 4 // java.lang.String coreFileName
         7: .line 64
            aconst_null
            astore 5 /* javaExecutableName */
        start local 5 // java.lang.String javaExecutableName
         8: .line 65
            aconst_null
            astore 6 /* serverID */
        start local 6 // java.lang.String serverID
         9: .line 67
            aload 1 /* args */
            arraylength
            tableswitch { // 1 - 3
                    1: 10
                    2: 16
                    3: 26
              default: 30
          }
        10: .line 70
      StackMap locals: sun.jvm.hotspot.DebugServer java.lang.String[] int int java.lang.String java.lang.String java.lang.String
      StackMap stack:
            aload 1 /* args */
            iconst_0
            aaload
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 2 /* pid */
        11: .line 71
            iconst_1
            istore 3 /* usePid */
        12: .line 72
            goto 30
      StackMap locals:
      StackMap stack: java.lang.NumberFormatException
        13: pop
        14: .line 73
            aload 0 /* this */
            invokevirtual sun.jvm.hotspot.DebugServer.usage:()V
        15: .line 75
            goto 30
        16: .line 80
      StackMap locals:
      StackMap stack:
            aload 1 /* args */
            iconst_0
            aaload
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 2 /* pid */
        17: .line 81
            iconst_1
            istore 3 /* usePid */
        18: .line 82
            aload 1 /* args */
            iconst_1
            aaload
            astore 6 /* serverID */
        19: .line 83
            goto 30
      StackMap locals:
      StackMap stack: java.lang.NumberFormatException
        20: pop
        21: .line 84
            iconst_m1
            istore 2 /* pid */
        22: .line 85
            iconst_0
            istore 3 /* usePid */
        23: .line 86
            aload 1 /* args */
            iconst_0
            aaload
            astore 5 /* javaExecutableName */
        24: .line 87
            aload 1 /* args */
            iconst_1
            aaload
            astore 4 /* coreFileName */
        25: .line 89
            goto 30
        26: .line 92
      StackMap locals:
      StackMap stack:
            aload 1 /* args */
            iconst_0
            aaload
            astore 5 /* javaExecutableName */
        27: .line 93
            aload 1 /* args */
            iconst_1
            aaload
            astore 4 /* coreFileName */
        28: .line 94
            aload 1 /* args */
            iconst_2
            aaload
            astore 6 /* serverID */
        29: .line 95
            goto 30
        30: .line 102
      StackMap locals:
      StackMap stack:
            new sun.jvm.hotspot.HotSpotAgent
            dup
            invokespecial sun.jvm.hotspot.HotSpotAgent.<init>:()V
            astore 7 /* agent */
        start local 7 // sun.jvm.hotspot.HotSpotAgent agent
        31: .line 104
            iload 3 /* usePid */
            ifeq 35
        32: .line 105
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Attaching to process ID "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* pid */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " and starting RMI services, please wait..."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        33: .line 106
            aload 7 /* agent */
            iload 2 /* pid */
            aload 6 /* serverID */
            invokevirtual sun.jvm.hotspot.HotSpotAgent.startServer:(ILjava/lang/String;)V
        34: .line 107
            goto 47
        35: .line 108
      StackMap locals: sun.jvm.hotspot.HotSpotAgent
      StackMap stack:
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Attaching to core "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* coreFileName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        36: .line 109
            ldc " from executable "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* javaExecutableName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " and starting RMI services, please wait..."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        37: .line 108
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        38: .line 110
            aload 7 /* agent */
            aload 5 /* javaExecutableName */
            aload 4 /* coreFileName */
            aload 6 /* serverID */
            invokevirtual sun.jvm.hotspot.HotSpotAgent.startServer:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
        39: .line 112
            goto 47
        40: .line 113
      StackMap locals:
      StackMap stack: sun.jvm.hotspot.debugger.DebuggerException
            astore 8 /* e */
        start local 8 // sun.jvm.hotspot.debugger.DebuggerException e
        41: .line 114
            iload 3 /* usePid */
            ifeq 44
        42: .line 115
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "Error attaching to process or starting server: "
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        43: .line 116
            goto 45
        44: .line 117
      StackMap locals: sun.jvm.hotspot.debugger.DebuggerException
      StackMap stack:
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "Error attaching to core file or starting server: "
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        45: .line 119
      StackMap locals:
      StackMap stack:
            aload 8 /* e */
            invokevirtual sun.jvm.hotspot.debugger.DebuggerException.printStackTrace:()V
        46: .line 120
            iconst_1
            invokestatic java.lang.System.exit:(I)V
        end local 8 // sun.jvm.hotspot.debugger.DebuggerException e
        47: .line 124
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
            new java.lang.Thread
            dup
        48: .line 125
            new sun.jvm.hotspot.DebugServer$1
            dup
            aload 0 /* this */
            aload 7 /* agent */
            invokespecial sun.jvm.hotspot.DebugServer$1.<init>:(Lsun/jvm/hotspot/DebugServer;Lsun/jvm/hotspot/HotSpotAgent;)V
            invokespecial java.lang.Thread.<init>:(Ljava/lang/Runnable;)V
        49: .line 124
            invokevirtual java.lang.Runtime.addShutdownHook:(Ljava/lang/Thread;)V
        50: .line 130
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "Debugger attached and RMI services started."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        51: .line 131
            return
        end local 7 // sun.jvm.hotspot.HotSpotAgent agent
        end local 6 // java.lang.String serverID
        end local 5 // java.lang.String javaExecutableName
        end local 4 // java.lang.String coreFileName
        end local 3 // boolean usePid
        end local 2 // int pid
        end local 1 // java.lang.String[] args
        end local 0 // sun.jvm.hotspot.DebugServer this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   52     0                this  Lsun/jvm/hotspot/DebugServer;
            0   52     1                args  [Ljava/lang/String;
            5   52     2                 pid  I
            6   52     3              usePid  Z
            7   52     4        coreFileName  Ljava/lang/String;
            8   52     5  javaExecutableName  Ljava/lang/String;
            9   52     6            serverID  Ljava/lang/String;
           31   52     7               agent  Lsun/jvm/hotspot/HotSpotAgent;
           41   47     8                   e  Lsun/jvm/hotspot/debugger/DebuggerException;
      Exception table:
        from    to  target  type
          10    12      13  Class java.lang.NumberFormatException
          16    19      20  Class java.lang.NumberFormatException
          31    39      40  Class sun.jvm.hotspot.debugger.DebuggerException
    MethodParameters:
      Name  Flags
      args  
}
SourceFile: "DebugServer.java"
NestMembers:
  sun.jvm.hotspot.DebugServer$1
InnerClasses:
  sun.jvm.hotspot.DebugServer$1