alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Java example source code file (RemoteDebuggerServer.java)

This example Java source code file (RemoteDebuggerServer.java) is included in the alvinalexander.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Learn more about this Java project at its project page.

Java - Java tags/keywords

address, debuggerexception, machinedescription, readresult, remotedebuggerserver, remoteexception, rmi, string, threadcontext, threadproxy, unicastremoteobject

The RemoteDebuggerServer.java Java example source code

/*
 * Copyright (c) 2002, 2009, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 *
 */

package sun.jvm.hotspot.debugger.remote;

import java.rmi.*;
import java.rmi.server.*;

import sun.jvm.hotspot.debugger.*;

/** The implementation of the RemoteDebugger interface. This
    delegates to a local debugger */

public class RemoteDebuggerServer extends UnicastRemoteObject
  implements RemoteDebugger {

  private transient Debugger debugger;

  /** This is the required no-arg constructor */
  public RemoteDebuggerServer() throws RemoteException {
    super();
  }

  /** This is the constructor used on the machine where the debuggee
      process lies */
  public RemoteDebuggerServer(Debugger debugger) throws RemoteException {
    super();
    this.debugger = debugger;
  }

  public String getOS() throws RemoteException {
    return debugger.getOS();
  }

  public String getCPU() throws RemoteException {
    return debugger.getCPU();
  }

  public MachineDescription getMachineDescription() throws RemoteException {
    return debugger.getMachineDescription();
  }

  public long lookupInProcess(String objectName, String symbol) throws RemoteException {
    Address addr = debugger.lookup(objectName, symbol);
    return addr == null? 0L : debugger.getAddressValue(addr);
  }

  public ReadResult readBytesFromProcess(long address, long numBytes) throws RemoteException {
    return debugger.readBytesFromProcess(address, numBytes);
  }

  public boolean hasConsole() throws RemoteException {
    return debugger.hasConsole();
  }

  public String getConsolePrompt() throws RemoteException {
    return debugger.getConsolePrompt();
  }

  public String consoleExecuteCommand(String cmd) throws RemoteException {
    return debugger.consoleExecuteCommand(cmd);
  }

  public long getJBooleanSize() throws RemoteException {
    return debugger.getJBooleanSize();
  }

  public long getJByteSize() throws RemoteException {
    return debugger.getJByteSize();
  }

  public long getJCharSize() throws RemoteException {
    return debugger.getJCharSize();
  }

  public long getJDoubleSize() throws RemoteException {
    return debugger.getJDoubleSize();
  }

  public long getJFloatSize() throws RemoteException {
    return debugger.getJFloatSize();
  }

  public long getJIntSize() throws RemoteException {
    return debugger.getJIntSize();
  }

  public long getJLongSize() throws RemoteException {
    return debugger.getJLongSize();
  }

  public long getJShortSize() throws RemoteException {
    return debugger.getJShortSize();
  }

  public long getHeapOopSize() throws RemoteException {
    return debugger.getHeapOopSize();
  }

  public long getNarrowOopBase() throws RemoteException {
    return debugger.getNarrowOopBase();
  }

  public int  getNarrowOopShift() throws RemoteException {
    return debugger.getNarrowOopShift();
  }

  public long getKlassPtrSize() throws RemoteException {
    return debugger.getHeapOopSize();
  }

  public long getNarrowKlassBase() throws RemoteException {
    return debugger.getNarrowKlassBase();
  }

  public int  getNarrowKlassShift() throws RemoteException {
    return debugger.getNarrowKlassShift();
  }

  public boolean   areThreadsEqual(long addrOrId1, boolean isAddress1,
                                   long addrOrId2, boolean isAddress2) throws RemoteException {
    ThreadProxy t1 = getThreadProxy(addrOrId1, isAddress1);
    ThreadProxy t2 = getThreadProxy(addrOrId2, isAddress2);
    return t1.equals(t2);
  }


  public int       getThreadHashCode(long addrOrId, boolean isAddress) throws RemoteException {
    ThreadProxy t = getThreadProxy(addrOrId, isAddress);
    return t.hashCode();
  }

  public long[]    getThreadIntegerRegisterSet(long addrOrId, boolean isAddress) throws RemoteException {
    ThreadProxy t = getThreadProxy(addrOrId, isAddress);
    ThreadContext tc = t.getContext();
    long[] regs = new long[tc.getNumRegisters()];
    for (int r = 0; r < regs.length; r++) {
       regs[r] = tc.getRegister(r);
    }
    return regs;
  }

  private ThreadProxy getThreadProxy(long addrOrId, boolean isAddress) throws DebuggerException {
     if (isAddress) {
        Address addr = debugger.parseAddress("0x" + Long.toHexString(addrOrId));
        return debugger.getThreadForIdentifierAddress(addr);
     } else {
        return debugger.getThreadForThreadId(addrOrId);
     }
  }
}

Other Java examples (source code examples)

Here is a short list of links related to this Java RemoteDebuggerServer.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.