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 application by running it 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 then 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 sends 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 question. 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 then 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 sends 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 question. 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?
Accepted answer
Hi Geoff.
There is a version of SendSignal that works with 64-bit Windows processes that you can download from here:
https://wait.ibm.com/
You'll have to register as a new user, but don't worry - they won't try to sell you anything. ;-)
Once you're in, find the link for the Windows data collector scripts & download the zip file, which includes "SendSignal64.exe".
Let me know if you have problems accessing this site.
-Matt
There is a version of SendSignal that works with 64-bit Windows processes that you can download from here:
https://wait.ibm.com/
You'll have to register as a new user, but don't worry - they won't try to sell you anything. ;-)
Once you're in, find the link for the Windows data collector scripts & download the zip file, which includes "SendSignal64.exe".
Let me know if you have problems accessing this site.
-Matt
Comments
Geoff Alexander
Jan 24 '13, 3:49 p.m.BTW, I start my RTC Eclipse client via the Windows start menu. This is simply a menu shortcut for C:\Program Files (x86)\IBM\TeamConcert_1\eclipse.exe" -product com.ibm.team.concert.product. There's no Command Window associated with the RTC Eclipse client when started in this manner, but I wonder if the RTC Eclipse client has an undisplayed Console. If so, might this prevent Java applications run from within the RTC Eclipse client from having an associated Command Window even when run with java.