How do I generate a Java (JVM) user system dump for an RTC Eclipse client launched Java application?
We support a Java application using the RTC Eclipse client on Windows 7 64-bit, unit testing the the application by launching the application from within the RTC Eclipse client. I'm trying to debug a memory usage problem in our application and would like to generate user system dumps for the application's JVM.
The usual method for generating a JVM system dump on Windows is to specify an appropriate -Xdump:system:events=user option when starting the application and the entering a ctrl-break in the command window in which the application was started from to generate the system dump.
The problem is that a Java application run from within Eclipse doesn't have an associated command window in which to enter the ctrl-break. In searching the Web, I found mention of Windows SendSignal utility that send a ctrl-break to a running process. However, SendSignal doesn't work for 64-bit processes. I also found the following Eclipse bug, Bug 13524 - Console doesn't send Ctrl-Break to remote program, that addresses this questions. The Bug 13524 solution is to run the Java application using java rather javaw, which should cause the Java application to be launched with an associated Command Window. Bug 13524 was fixed in Eclipse 2.0, so the fix should be available in the RTC Eclipse client. However, when I changed my Java application's run configuration to run the application using java rather than javaw, I still don't get an associated Command Window.
So does anyone know I can generate a Java (JVM) user system dump for an RTC Eclipse client launched Java application?
The usual method for generating a JVM system dump on Windows is to specify an appropriate -Xdump:system:events=user option when starting the application and the entering a ctrl-break in the command window in which the application was started from to generate the system dump.
The problem is that a Java application run from within Eclipse doesn't have an associated command window in which to enter the ctrl-break. In searching the Web, I found mention of Windows SendSignal utility that send a ctrl-break to a running process. However, SendSignal doesn't work for 64-bit processes. I also found the following Eclipse bug, Bug 13524 - Console doesn't send Ctrl-Break to remote program, that addresses this questions. The Bug 13524 solution is to run the Java application using java rather javaw, which should cause the Java application to be launched with an associated Command Window. Bug 13524 was fixed in Eclipse 2.0, so the fix should be available in the RTC Eclipse client. However, when I changed my Java application's run configuration to run the application using java rather than javaw, I still don't get an associated Command Window.
So does anyone know I can generate a Java (JVM) user system dump for an RTC Eclipse client launched Java application?
One answer
Hello Geoff,
1 - edit your eclipse.ini file and ensure you point to java.exe and not javaw.exe
ex: -vm
C:\app\RTC 4.0GA_Client\jdk\jre\bin\java.exe
Save your changes
2 - create a shortcut to RTC - edit shortcut properties - add -consolelog as eclipse.exe parameter
http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fruntime-options.html
3 - start the RTC Client using this shortcut
You should see the console now and be able to generate dumps by hitting Crtl+break
An alternate solution is to use the WAIT Tool - http://snappy.watson.ibm.com/wait/#
Hope it helps.
Eric.
1 - edit your eclipse.ini file and ensure you point to java.exe and not javaw.exe
ex: -vm
C:\app\RTC 4.0GA_Client\jdk\jre\bin\java.exe
Save your changes
2 - create a shortcut to RTC - edit shortcut properties - add -consolelog as eclipse.exe parameter
http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fruntime-options.html
3 - start the RTC Client using this shortcut
You should see the console now and be able to generate dumps by hitting Crtl+break
An alternate solution is to use the WAIT Tool - http://snappy.watson.ibm.com/wait/#
Hope it helps.
Eric.