Package javax.tools.diagnostics.runtime.java

Examples of javax.tools.diagnostics.runtime.java.JavaRuntime


* for implementation specifics.
*
*/
public class TestJavaThread_getStackFrames extends TCKJavaRuntimeTestcase {
  public void setUp () {
    JavaRuntime runtime = getJavaRuntime();
    Iterator threads = runtime.getThreads().iterator();
   
    while (threads.hasNext()) {
      Object next = threads.next();
     
      if (next instanceof JavaThread) {
View Full Code Here


    assertTrue("Found local variable not reported as root.", checkRoot(rootsCheckList, "HeapRootsTestLocalVariableClass"));
  }
*/
 
  private Map getRootsCheckList() {
    JavaRuntime runtime = getJavaRuntime();
    Map rootsCheckList = new HashMap();
    Iterator roots = runtime.getHeapRoots().iterator();
    while (roots.hasNext()) {
      Object next = roots.next();
      if (next instanceof CorruptData) {
        continue;
      }
View Full Code Here

public void testNoSuffixRuntimeFileNameReturnsNull() throws IOException {
   
    FactoryRegistry reg=new FactoryRegistry();
    File f=new File("testfile");
   
    JavaRuntime result=reg.getJavaRuntime(f);
    assertNull(result);
   
  }
View Full Code Here

        ImageProcess process = (ImageProcess) prIt.next( );

        Iterator runTimesIt = process.getRuntimes( ).iterator();
        while ( runTimesIt.hasNext( ) )
        {
          JavaRuntime javaRT = (JavaRuntime) runTimesIt.next( );
          Iterator classLoaders = javaRT.getJavaClassLoaders().iterator();
          while (classLoaders.hasNext()){

            JavaClassLoader javaCL = (JavaClassLoader)classLoaders.next();
            Iterator javaClasses = javaCL.getDefinedClasses().iterator();
View Full Code Here

      {
        ImageProcess process = (ImageProcess) prIt.next( );
        Iterator runTimesIt = process.getRuntimes( ).iterator();
        while ( runTimesIt.hasNext( ) )
        {
          JavaRuntime javaRT = (JavaRuntime) runTimesIt.next( );
          Iterator thds = javaRT.getThreads().iterator();
          while(thds.hasNext()){
            Object tmpobj = thds.next();
            if (tmpobj instanceof CorruptData){
              //ignore this thread
            }else{
View Full Code Here

      {
        ImageProcess process = (ImageProcess) prIt.next( );
        Iterator runTimesIt = process.getRuntimes( ).iterator();
        while ( runTimesIt.hasNext( ) )
        {
          JavaRuntime javaRT = (JavaRuntime) runTimesIt.next( );
          Iterator thds = javaRT.getThreads().iterator();
          while(thds.hasNext()){
            Object tmpobj = thds.next();
            if (tmpobj instanceof CorruptData){
              //ignore this thread
            }else{
View Full Code Here

          ImageProcess process = (ImageProcess) prIt.next( );

          Iterator runTimesIt = process.getRuntimes( ).iterator();
          while ( runTimesIt.hasNext( ) )
          {
            JavaRuntime javaRT = (JavaRuntime) runTimesIt.next( );
            //Since there doesn't seem to be a matching Kato call to get
            //the information for JDWP, lets call NOT_IMPLEMENTED, but really
            //attach some information back
            ReplyPacket rpckt = new ReplyPacket(cpckt.getSequence(), FLAG_REPLY_PACKET, ERROR_NONE);
            String description = "JDI Post Mortem Debugger"; //$NON-NLS-1$
            String vmVersion = javaRT.getVersion();
            String vmName = "JDI PMD"; //$NON-NLS-1$

            int jdwpMajor = 1;
            int jdwpMinor = 4;

            //We now have all the information for the reply.  Put it all together
            Vector<Byte> vctr = new Vector<Byte>();
            addStringToVector(vctr, description);
            addIntToVector(vctr, jdwpMajor);
            addIntToVector(vctr, jdwpMinor);
            addStringToVector(vctr, vmVersion);
            addStringToVector(vctr, vmName);
            rpckt.setData(vectorToByte(vctr));
            return rpckt;

          }
        }
      }

    }else if (cpckt.getCommand() == VIRTUAL_MACHINE_CLASS_PATHS){
     
      logr.log(JDILogger.LEVEL_VERYVERBOSE, "This does not return the actual class path, simply allows JDB to work.");
      Vector<Byte> vctr = new Vector<Byte>();
      addStringToVector(vctr, "");
      addIntToVector(vctr, 0);
      addIntToVector(vctr, 0);
      ReplyPacket rpckt = new ReplyPacket(cpckt.getSequence(), FLAG_REPLY_PACKET, ERROR_NONE);
      rpckt.setData(vectorToByte(vctr));
      return rpckt;
    } else if (cpckt.getCommand() == VIRTUAL_MACHINE_CLASSES_BY_SIGNATURE){
      Vector<Byte> vctr = new Vector<Byte>();
      byte []inData = cpckt.getByteData();
      String signature = getStringFromBytes(inData, 0);
      if (signature.charAt(0) == 'L'){
        signature = signature.substring(1, signature.length() - 1);
      }
      logr.log(JDILogger.LEVEL_VERBOSE, "ClassesBySignature(" + signature + ")"); //$NON-NLS-1$ //$NON-NLS-2$
      int count = 0;
      Iterator <JavaClass> javaClasses = classes.values().iterator();
      while (javaClasses.hasNext()){
        JavaClass javaClass = javaClasses.next();
        String searched = javaClass.getName();

        if (searched.equals(signature)){
          count++;
          if (javaClass.isArray()){
            vctr.add((byte)3);
          }else if (isInterface(javaClass.getID().getAddress())){
            vctr.add((byte)2);
          }else{
            vctr.add((byte)1);
          }
          //vctr.add((byte)1);
          addLongToVector(vctr, javaClass.getID().getAddress());
          //Verified Prepared and Initialized
          addIntToVector(vctr, 1 | 2 | 4);
          logr.log(JDILogger.LEVEL_VERYVERBOSE, "Match: " + javaClass.getName() +" " + Long.toHexString(javaClass.getID().getAddress())); //$NON-NLS-1$
        }else{
          String mangledName = "" + searched + ""; //$NON-NLS-1$ //$NON-NLS-2$
          if (mangledName.equals(signature)){
            count++;
            if (javaClass.isArray()){
              vctr.add((byte)3);
            }else if (isInterface(javaClass.getID().getAddress())){
              vctr.add((byte)2);
            }else{
              vctr.add((byte)1);
            }
            //vctr.add((byte)1);
            addLongToVector(vctr, javaClass.getID().getAddress());
            //Verified Prepared and Initialized
            addIntToVector(vctr, 1 | 2 | 4);
            logr.log(JDILogger.LEVEL_VERYVERBOSE, "Mangled Match: " + javaClass.getName()); //$NON-NLS-1$
          }else{
            String secondMangle = "[" + searched + ";"; //$NON-NLS-1$ //$NON-NLS-2$
            if (secondMangle.equals(signature)){
              count++;
              if (javaClass.isArray()){
                vctr.add((byte)3);
              }else if (isInterface(javaClass.getID().getAddress())){
                vctr.add((byte)2);
              }else{
                vctr.add((byte)1);
              }
              //vctr.add((byte)1);
              addLongToVector(vctr, javaClass.getID().getAddress());
              //Verified Prepared and Initialized
              addIntToVector(vctr, 1 | 2 | 4);
              logr.log(JDILogger.LEVEL_VERYVERBOSE, "Really mangled match: " + javaClass.getName()); //$NON-NLS-1$
            }
          }
        }

      }
      //Add the count to the front of the vector
      addIntToVectorFront(vctr, count);
      logr.log(JDILogger.LEVEL_VERYVERBOSE, count+" matches"); //$NON-NLS-1$
      ReplyPacket rpckt = new ReplyPacket(cpckt.getSequence(), FLAG_REPLY_PACKET, ERROR_NONE);
      rpckt.setData(vectorToByte(vctr));
      return rpckt;
    }else if (cpckt.getCommand() == VIRTUAL_MACHINE_ALL_CLASSES){
      logr.log(JDILogger.LEVEL_VERBOSE, "AllClasses()"); //$NON-NLS-1$
      Vector<Byte> vctr = new Vector<Byte>();
      int count = 0;
      Iterator <JavaClass> classList = classes.values().iterator();
      while(classList.hasNext()){
        JavaClass javaClass = (JavaClass)classList.next();
        long typeID = javaClass.getID().getAddress();
        String signature;

        if (javaClass.isArray()){
          vctr.add((byte)3);
          signature = "" + javaClass.getName() + ""; //$NON-NLS-1$ //$NON-NLS-2$
        }else if (isInterface(typeID)){
          vctr.add((byte)2);
          signature = "L" + javaClass.getName() + ";"; //$NON-NLS-1$ //$NON-NLS-2$
        }else{
          vctr.add((byte)1);
          signature = "L" + javaClass.getName() + ";"; //$NON-NLS-1$ //$NON-NLS-2$
        }
       
        int status = 7;
        addLongToVector(vctr, typeID);
        addStringToVector(vctr, signature);
        addIntToVector(vctr, status);
        count++;
       

      }

      logr.log(JDILogger.LEVEL_VERYVERBOSE, "  " + count +" class(es) found"); //$NON-NLS-1$ //$NON-NLS-2$
      addIntToVectorFront(vctr, count);
      ReplyPacket rpckt = new ReplyPacket(cpckt.getSequence(), FLAG_REPLY_PACKET, ERROR_NONE);
      rpckt.setData(vectorToByte(vctr));
      return rpckt;
    }else if (cpckt.getCommand() == VIRTUAL_MACHINE_ALL_THREADS){
      logr.log(JDILogger.LEVEL_VERBOSE, "AllThreads()"); //$NON-NLS-1$
      Iterator asIt = image.getAddressSpaces( ).iterator();
      while ( asIt.hasNext( ) )
      {
        ImageAddressSpace as = (ImageAddressSpace) asIt.next( );
        Iterator prIt = as.getProcesses( ).iterator();

        while ( prIt.hasNext( ) )
        {
          ImageProcess process = (ImageProcess) prIt.next( );
          Iterator runTimesIt = process.getRuntimes( ).iterator();
          while ( runTimesIt.hasNext( ) )
          {
            JavaRuntime javaRT = (JavaRuntime) runTimesIt.next( );
            Iterator thds = javaRT.getThreads().iterator();
            Vector<Byte> vctr = new Vector<Byte>();
            int count = 0;
            while(thds.hasNext()){
              Object tmpobj = thds.next();
              if (tmpobj instanceof CorruptData){
View Full Code Here

        {
          ImageProcess process = (ImageProcess) prIt.next( );
          Iterator runTimesIt = process.getRuntimes( ).iterator();
          while ( runTimesIt.hasNext( ) )
          {
            JavaRuntime javaRT = (JavaRuntime) runTimesIt.next( );
            Iterator thds = javaRT.getThreads().iterator();
            while(thds.hasNext()){
              Object tmpobj = thds.next();
              if (tmpobj instanceof CorruptData){
                //ignore this thread
              }else{
View Full Code Here

        {
          ImageProcess process = (ImageProcess) prIt.next( );
          Iterator runTimesIt = process.getRuntimes( ).iterator();
          while ( runTimesIt.hasNext( ) )
          {
            JavaRuntime javaRT = (JavaRuntime) runTimesIt.next( );
            Iterator thds = javaRT.getThreads().iterator();
            while(thds.hasNext()){
              Object tmpobj = thds.next();
              if (tmpobj instanceof CorruptData){
                //ignore this thread
              }else{
                JavaThread thd = (JavaThread) tmpobj;
                Iterator frames = thd.getStackFrames().iterator();
                while(frames.hasNext()){
                  JavaStackFrame jStackFrame = (JavaStackFrame)frames.next();
                  JavaLocation jLocation = jStackFrame.getLocation();
                  JavaMethod jMethod = jLocation.getMethod();
                  JavaClass jClass = jMethod.getDeclaringClass();

                  if (getMethodId(refType, jMethod) == methodID && jClass.getID().getAddress() == refType){
                    int line = -1;
                    try{
                      line = jLocation.getLineNumber();
                    }
                    catch(CorruptDataException exxy){
                      logr.log(JDILogger.LEVEL_VERYVERBOSE, "  CorruptData for:"); //$NON-NLS-1$
                    }
                    catch(DataUnavailable exxy){
                      logr.log(JDILogger.LEVEL_VERYVERBOSE, "  DataUnavailable for:"); //$NON-NLS-1$
                    }


                    Vector<Byte> vctr = new Vector<Byte>();
                    if (line > 0){

                      int lowest = findLowestLineRef(refType, methodID) - 1;
                      int highest = findHighestLineRef(refType, methodID) + 1;
                      logr.log(JDILogger.LEVEL_VERYVERBOSE, "  (L)" + jClass.getName() + "." + jMethod.getName() + ":" + lowest + "<" + line + ">" + highest); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
                     
//                      //Code index start
//                      addLongToVector(vctr, lowest);
//                      //Code index end
//                      addLongToVector(vctr, highest);
//                      //Number of lines
//                      addIntToVector(vctr, highest - lowest);
//                      for(int i = lowest; i <= highest; i++){
//                        addLongToVector(vctr, i);
//                        addIntToVector(vctr, i);
//                      }
                     
                      //Code index start
                      addLongToVector(vctr, 0);
                      //Code index end
                      addLongToVector(vctr, 99999999); // TODO go through local variable tables looking for highest reference?
                      //Number of lines
                      addIntToVector(vctr, 1);
                      //for(int i = lowest; i <= highest; i++){
                        addLongToVector(vctr, jLocation.getAddress().getAddress()-1);
                        addIntToVector(vctr, jLocation.getLineNumber());
                      //}
                     
                     
                    }else{
                      logr.log(JDILogger.LEVEL_VERYVERBOSE, "  (N)" + jClass.getName() + "." + jMethod.getName() + ":" + line); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
                      //Code index start
                      addLongToVector(vctr, -1);
                      //Code index end
                      addLongToVector(vctr, -1);
                      //Number of lines
                      //We're native right now.
                      addIntToVector(vctr, 0);
                    }
                    ReplyPacket rpckt = new ReplyPacket(cpckt.getSequence(), FLAG_REPLY_PACKET, ERROR_NONE);
                    rpckt.setData(vectorToByte(vctr));
                    return rpckt;
                  }
                }
              }
            }
          }
        }
      }
     
      Vector<Byte> vctr = new Vector<Byte>();
      addLongToVector(vctr, -1);
      //Code index end
      addLongToVector(vctr, -1);
      //Number of lines
      //We're native right now.
      addIntToVector(vctr, 0);
      ReplyPacket rpckt = new ReplyPacket(cpckt.getSequence(), FLAG_REPLY_PACKET, ERROR_NONE);
      rpckt.setData(vectorToByte(vctr));
      return rpckt;
    }else if (cpckt.getCommand() == 2){
      byte [] inData = cpckt.getByteData();
      long refType = createLongFromBytes(inData, 0, 8);
      long methodID = createLongFromBytes(inData, 8, 8);
      logr.log(JDILogger.LEVEL_VERBOSE, "Method.VariableTable(" + refType + "," + methodID + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
      int slotsUsed = 0;
      Iterator asIt = image.getAddressSpaces( ).iterator();
      while ( asIt.hasNext( ) )
      {
        ImageAddressSpace as = (ImageAddressSpace) asIt.next( );
        Iterator prIt = as.getProcesses( ).iterator();

        while ( prIt.hasNext( ) )
        {
          ImageProcess process = (ImageProcess) prIt.next( );
          Iterator runTimesIt = process.getRuntimes( ).iterator();
          while ( runTimesIt.hasNext( ) )
          {
            JavaRuntime javaRT = (JavaRuntime) runTimesIt.next( );
            Iterator thds = javaRT.getThreads().iterator();
            while(thds.hasNext()){
              Object tmpobj = thds.next();
              if (tmpobj instanceof CorruptData){
                //ignore this thread
              }else{
View Full Code Here

        ImageProcess process = (ImageProcess) prIt.next( );

        Iterator runTimesIt = process.getRuntimes( ).iterator();
        while ( runTimesIt.hasNext( ) )
        {
          JavaRuntime javaRT = (JavaRuntime) runTimesIt.next( );
          try {
            JavaObject jObject = javaRT.getObjectAtAddress(as.getPointer(objectID));
            if (jObject != null){
              return jObject;
            }
          } catch (CorruptDataException e) {
            //e.printStackTrace();
          } catch (IllegalArgumentException e) {
            //e.printStackTrace();
          } catch (MemoryAccessException e) {
            //e.printStackTrace();
          } catch (DataUnavailable e) {
            //e.printStackTrace();
          }
         
          logr.log(JDILogger.LEVEL_VERYVERBOSE, "Could not find class directly, searching through heap");
         
          // Old method for returning java objects
          Iterator heapList = javaRT.getHeaps().iterator();

          while (heapList.hasNext()){
            JavaHeap heap = (JavaHeap) heapList.next();
            Iterator objectList = heap.getObjects().iterator();
            while (objectList.hasNext()){
View Full Code Here

TOP

Related Classes of javax.tools.diagnostics.runtime.java.JavaRuntime

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.