[
https://issues.jboss.org/browse/JBIDE-8548?page=com.atlassian.jira.plugin...
]
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@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