<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">

<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>

                                <td>

                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>

                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    Tips for reporting errors against an Eclipse Plugin
</h3>
<span style="margin-bottom: 10px;">
    modified by <a href="http://community.jboss.org/people/maxandersen">Max Rydahl Andersen</a> in <i>JBoss Tools</i> - <a href="http://community.jboss.org/docs/DOC-17304">View the full document</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p id="reportingerrorsagainstaneclipseplugin">We got a lot of people using our milestones of JBoss Tools and Developer Studio and I get asked from time to time how to best report on issues they spot/find. I've started this article to outline some of the tips &amp; tricks around this.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Note: I&rsquo;m not covering &ldquo;obvious&#8221; things like actually opening a bug in jira, take screenshots and do what you can to write down the minimal steps to reproduce it and provide information like which version, OS etc. you are using - this article is about getting access to more internal details of Eclipse/Java to help.</p><h1 id="generalissues">General Issues</h1><p>When something fails in Eclipse it is very likely it&rsquo;s log file has information about what caused the problem.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>The log file is located in /.metadata/.log.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><span>Eclipse.org has more info about this file at </span><a class="jive-link-external-small" href="http://wiki.eclipse.org/FAQ_Where_can_I_find_that_elusive_.log_file%3F" target="_blank">http://wiki.eclipse.org/FAQ_Where_can_I_find_that_elusive_.log_file%3F</a></p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>In JBoss Tools we&rsquo;ve made it even simpler to gather this file and a few other pieces of information in a zip file.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Goto <code>Help &gt; Report a problem</code> and a dialog will show up where you can fill in details of what caused the problem. When you press &#8216;Finish&rsquo; a .zip file will be generated which contains the log file, Eclipse system properties and your comment.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>You can attach this zip file to the related jira issue.</p><h1 id="freezesorslowness">Freezes or slowness</h1><p>In case Eclipse freezes or some operation is taking exceedingly long time to complete getting a thread dump is immensly useful. Luckily recent versions of Java comes with two tools that help makes this a breeze to get: <code>jps</code> and <code>jstack</code>.</p><h2 id="jpsjstackinshort">jps/jstack in short</h2><pre><code>jps -v
jstack &lt;pid found via jps&gt; &gt; &lt;jira-id&gt;.dump.txt</code></pre><p>Attach the .txt file to the related jira.</p><h2 id="jpsstackdetails">jps/stack details</h2><p><code>jps</code> provides you with info about the java process id of the virtual machines running on your machine.</p><p>Here is what <code>jps</code> shows on my machine currently:</p><pre><code>[max@greybeard ~]$ jps
255 
261 
2295 
264 
4734 Jps
4381 
3261</code></pre><p>In many cases you don&rsquo;t have that many processes running and can easily guess which one is the one you are looking for (Tip: the higher the number, the newer the process).</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>In case you want to get some more details you can use <code>jps -v</code> to get more details, here is as small snippet of what it shows for me:</p><pre><code>[max@greybeard ~]$ jps -v
255&#160; -Dosgi.requiredJavaVersion=1.5 -XstartOnFirstThread 
&#160;&#160;&#160; -Dorg.eclipse.swt.internal.carbon.smallFonts -XX:MaxPermSize=256m 
&#160;&#160;&#160; -Xdock:icon=../Resources/Eclipse.icns -XstartOnFirstThread 
&#160;&#160;&#160; -Dorg.eclipse.swt.internal.carbon.smallFonts -Xdock:icon=../Resources/Eclipse.icns 
&#160;&#160;&#160; -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts -Xms40m 
&#160;&#160;&#160; -Xmx512m -Xdock:icon=../Resources/Eclipse.icns -XstartOnFirstThread 
&#160;&#160;&#160; -Dorg.eclipse.swt.internal.carbon.smallFonts
4869 Jps -Dapplication.home=/Library/Java/JavaVirtualMachines/1.6.0_26-
&#160;&#160;&#160; b03-383.jdk/Contents/Home -Xms8m[max@greybeard ~]</code></pre><p>This should give you enough details to pin down which process you are looking for.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Once you found it note down the process id - in my case above it is 255.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Then you use <code>jstack &lt;pid&gt;</code> to get the threaddump, below is a small snippet of how that will look like:</p><pre><p><code> [max@greybeard ~]$ jstack 255
2011-10-26 10:10:31
Full thread dump Java HotSpot(TM) Client VM (20.1-b02-383 mixed mode):

"Attach Listener" daemon prio=9 tid=0000000003b8b400 nid=0xb1731000 waiting on condition [0000000000000000]
java.lang.Thread.State: RUNNABLE

"Worker-52" prio=5 tid=0000000003e83400 nid=0xb20c7000 in Object.wait() [00000000b20c6000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
&#160;&#160;&#160; at java.lang.Object.wait(Native Method)
&#160;&#160;&#160; at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
&#160;&#160;&#160; - locked &lt;00000000084188a0&gt; (a org.eclipse.core.internal.jobs.WorkerPool)
&#160;&#160;&#160; at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
&#160;&#160;&#160; at org.eclipse.core.internal.jobs.Worker.run(Worker.java:50)

"Worker-50" prio=5 tid=000000000366e400 nid=0xb26d5000 in Object.wait()&#160;&#160;&#160;&#160; [00000000b26d4000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
- locked &lt;00000000084188a0&gt; (a org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:50)</code></p><p><code>...<br/></code></p><p><code>...<br/></code></p></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>This content is what we would be interested in.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>To get it to us the simplest thing is to pipe it to a file and attach it to the jira. </p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Tip: put the jira ID into the name of the file for easy identification/tracking.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><code>jstack 255 &gt; JBIDE-12345.dump.txt</code></p></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Comment by <a href="http://community.jboss.org/docs/DOC-17304">going to Community</a></p>

        <p style="margin: 0;">Create a new document in JBoss Tools at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=102&containerType=14&container=2128">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>