[jbosstools-issues] [JBoss JIRA] Commented: (JBIDE-8548) Support auto discovery of remote processes for debugging

Aslak Knutsen (JIRA) jira-events at lists.jboss.org
Thu Mar 10 09:05:45 EST 2011


    [ https://issues.jboss.org/browse/JBIDE-8548?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12587142#comment-12587142 ] 

Aslak Knutsen commented on JBIDE-8548:
--------------------------------------

JConsole seems to use the sun.jvmstat API to discover the processes:

{code}
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import org.junit.Test;

import sun.jvmstat.monitor.HostIdentifier;
import sun.jvmstat.monitor.MonitoredHost;
import sun.jvmstat.monitor.MonitoredVm;
import sun.jvmstat.monitor.MonitoredVmUtil;
import sun.jvmstat.monitor.VmIdentifier;

/**
 * LocalJVMTestCase
 *
 * @author <a href="mailto:aslak at redhat.com">Aslak Knutsen</a>
 * @version $Revision: $
 */
public class LocalJVMTestCase
{

   @Test
   public void shouldBeAbleToFindAllLocalVMs() throws Exception
   {
      
      MonitoredHost host = MonitoredHost.getMonitoredHost(new HostIdentifier((String)null));
      Set<Integer> vmPids = host.activeVms();
      
      for(Integer vmPid : vmPids)
      {
         System.out.println("PID: " + vmPid);
         MonitoredVm vm = host.getMonitoredVm(new VmIdentifier(String.valueOf(vmPid)));
         
         System.out.println("version: " + MonitoredVmUtil.vmVersion(vm));
         System.out.println("jvmArgs: " + MonitoredVmUtil.jvmArgs(vm));
         System.out.println("jvmFlags: " + MonitoredVmUtil.jvmFlags(vm));
         System.out.println("attachable: " + MonitoredVmUtil.isAttachable(vm));

         Map<String, String> arguments = getArguments(MonitoredVmUtil.jvmArgs(vm));
         
         System.out.println("jdwp: " + arguments.get("-Xrunjdwp:transport"));
         
         System.out.println();
      }
   }
   
   private Map<String, String> getArguments(String args)
   {
      Map<String, String> arguments = new HashMap<String, String>();
      
      for(String argument : args.split(" "))
      {
         if(argument.length() == 0)
         {
            continue;
         }
         String[] nameValue = argument.split("=", 2);
         if(nameValue.length == 1)
         {
            arguments.put(nameValue[0], nameValue[0]);
         }
         else
         {
            arguments.put(nameValue[0], nameValue[1]);   
         }
         
      }
      return arguments;
   }
}
{code}

Possible output (JBoss AS 6.0.0.Final VM on Linux): 

*PID*: 4589
*version*: 19.0-b09
*jvmArgs*: -Xms128m -Xmx512m -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n -Djava.net.preferIPv4Stack=true -Dprogram.name=run.sh -Djava.library.path=/home/aslak/dev/servers/jboss-6.0.0.Final/bin/native/lib64 -Djava.endorsed.dirs=/home/aslak/dev/servers/jboss-6.0.0.Final/lib/endorsed
*jvmFlags*: 
*attachable*: true
*jdwp: dt_socket,address=8787,server=y,suspend=n*



> Support auto discovery of remote processes for debugging
> --------------------------------------------------------
>
>                 Key: JBIDE-8548
>                 URL: https://issues.jboss.org/browse/JBIDE-8548
>             Project: Tools (JBoss Tools)
>          Issue Type: Feature Request
>            Reporter: Aslak Knutsen
>
> It would be helpful if Eclipse could provide a 'debug as' with auto discover of local java processes, somewhat like jconsole does. Eclipse should also auto associate the debug session with the current project. 
> 'debug as' -> 'remote process x'

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jbosstools-issues mailing list