You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by na...@apache.org on 2007/03/14 11:37:57 UTC

svn commit: r518091 [5/6] - in /harmony/standard/site: docs/ docs/subcomponents/classlibrary/ docs/subcomponents/drlvm/ xdocs/

Modified: harmony/standard/site/docs/subcomponents/drlvm/debugging_VM_and_JIT.html
URL: http://svn.apache.org/viewvc/harmony/standard/site/docs/subcomponents/drlvm/debugging_VM_and_JIT.html?view=diff&rev=518091&r1=518090&r2=518091
==============================================================================
--- harmony/standard/site/docs/subcomponents/drlvm/debugging_VM_and_JIT.html (original)
+++ harmony/standard/site/docs/subcomponents/drlvm/debugging_VM_and_JIT.html Wed Mar 14 03:37:45 2007
@@ -192,11 +192,11 @@
                                                                 <div>
 <!--
     Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
+    contributor license agreements. See the NOTICE file distributed with
     this work for additional information regarding copyright ownership.
     The ASF licenses this file to You under the Apache License, Version 2.0
     (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
+    the License. You may obtain a copy of the License at
 
        http://www.apache.org/licenses/LICENSE-2.0
 
@@ -209,915 +209,713 @@
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
-   <head>
-      <meta http-equiv="Content-Type" content=
+<head>
+    <meta http-equiv="Content-Type" content="
       "text/html; charset=ISO-8859-1">
-      <title>
-         Debugging DRL Virtual Machine and JIT Compiler
-      </title>
-   </head>
-   <body>
-      <h1>
-         <a name="top"></a>Debugging the DRL Virtual Machine and the
-         JIT Compiler
-      </h1>
-      <p>
-         This document gives practical instructions on how to debug
-         the DRL virtual machine and its baseline just-in-time
-         compiler Jitrino.JET. For a definition of components and
-         details on their internal structure, consult the <i>DRL
-         Virtual Machine Developer&rsquo;s Guide</i> supplied with
-         the DRLVM image.
-      </p>
-      <p>
-         The document includes two groups of debugging tips, one for
-         VM tips, and the other for JIT compiler tips, as shown
-         below.
-      </p>
-      
-      <p>
-         <a href="#Debugging_VM">Debugging the Virtual Machine</a>
-      </p>
-      <blockquote>
-         <p>
+    <title>Debugging DRL Virtual Machine and JIT Compiler </title>
+</head>
+<body>
+    <h1>
+        <a name="top"></a>Debugging the DRL Virtual Machine and the JIT Compiler
+    </h1>
+    <p>
+        This document gives practical instructions on how to debug the DRL virtual machine
+        and its baseline just-in-time compiler Jitrino.JET. For a definition of components
+        and details on their internal structure, consult the <a href="../../subcomponents/drlvm/developers_guide.html">
+            DRL Virtual Machine Developer&rsquo;s Guide</a> supplied with the DRLVM image.
+    </p>
+    <p>
+        The document includes two groups of debugging tips, one for VM tips, and the other
+        for JIT compiler tips, as shown below.
+    </p>
+    <p>
+        <a href="#Debugging_VM">Debugging the Virtual Machine</a>
+    </p>
+    <blockquote>
+        <p>
             <a href="#How_to_debug_VM">How to debug the VM?</a>
-         </p>
-         <p>
-            <a href="#Extended_Debug_VM">How to get more of your
-            debugging?</a>
-         </p>
-      </blockquote>
-      <p>
-         <a href="#Debugging_JIT">Debugging the Jitrino.JET Baseline
-         Compiler</a>
-      </p>
-      <blockquote>
-         <p>
-            <a href="#Enable_Tracing">How to enable tracing in
-            Jitrino.JET?</a>
-         </p>
-         <p>
-            <a href="#Config_Trace_Logging">How to configure trace
-            logging?</a>
-         </p>
-         <p>
-            <a href="#Extend_Trace_JIT">How to get more of your
-            tracing?</a>
-         </p>
-      </blockquote>
-    
-       <p>
-         <a href="#top">Back to top</a>
-      </p>
-      <h1>
-         <a name="Debugging_VM">Debugging the Virtual Machine</a>
-      </h1>
-      <p>
-         This section gives an insight into debugging the DRL virtual
-         machine version 1.0 and provides tips on resolving
-         non-standard debugging issues.
-      </p>
-      <h2>
-         <a name="How_to_debug_VM">How to debug the VM?</a>
-      </h2>
-      <p>
-         This section gives instructions on different scenarios of
-         debugging the VM source code.
-      </p>
-      <h3>
-         Basic Debugging Steps
-      </h3>
-      <p>
-         For ordinary tests, start the ij executable with the
-         debugger enabled, as follows:
-      </p>
-      <p>
-         <strong>On Windows<a href="#*">*</a></strong>
-      </p>
-      <ol>
-         <li>
-            Start Microsoft Visual Studio<a href="#*">*</a> and open
-            the solution file <code>vm\build\vm.sln</code>.
-         </li>
-         <li>
-            Open the source code that you need to debug, set
-            breakpoints and perform all other preliminary steps.
-         </li>
-         <li>
-            Select the vmcore project and open its properties to
-            specify the location of the <code>ij</code> executable.
-            Select the <strong>Debugging</strong> tab and specify the
-            command and command arguments.
-         </li>
-         <li>
-            Copy the ZLib tool library <code>zlib1.dll</code> to the
-            location of the VM executable.
-         </li>
-         <li>
-            Start debugging via the menu <strong>Debug</strong> &gt;
-            <strong>Start</strong>, click <strong>NO</strong> in the
-            popup dialog offering to build the project.
-         </li>
-      </ol>
-      <p>
-         <strong>On Linux<a href="#*">*</a></strong>
-      </p>
-      <ol>
-         <li>
-            Set up the <code>LD_LIBRARY_PATH</code> to point to the
-            <code>deploy/jre/bin</code> directory. Change the working
-            directory to the location of the VM executable and run: 
-<pre>
+        </p>
+        <p>
+            <a href="#Extended_Debug_VM">How to get more of your debugging?</a>
+        </p>
+    </blockquote>
+    <p>
+        <a href="#Debugging_JIT">Debugging the Jitrino.JET Baseline Compiler</a>
+    </p>
+    <blockquote>
+        <p>
+            <a href="#Enable_Tracing">How to enable tracing in Jitrino.JET?</a>
+        </p>
+        <p>
+            <a href="#Config_Trace_Logging">How to configure trace logging?</a>
+        </p>
+        <p>
+            <a href="#Extend_Trace_JIT">How to get more of your tracing?</a>
+        </p>
+    </blockquote>
+    <p>
+        <a href="#top">Back to top</a>
+    </p>
+    <h1>
+        <a name="Debugging_VM">Debugging the Virtual Machine</a>
+    </h1>
+    <p>
+        This section gives an insight into debugging the DRL virtual machine version 1.0
+        and provides tips on resolving non-standard debugging issues.
+    </p>
+    <h2>
+        <a name="How_to_debug_VM">How to debug the VM?</a>
+    </h2>
+    <p>
+        This section gives instructions on different scenarios of debugging the VM source
+        code.
+    </p>
+    <h3>
+        Basic Debugging Steps
+    </h3>
+    <p>
+        For ordinary tests, start the ij executable with the debugger enabled, as follows:
+    </p>
+    <p class="class">
+        On Windows<a href="#*">*</a></p>
+    <ol>
+        <li>Start Microsoft Visual Studio<a href="#*">*</a> and open the solution file <code>
+            vm\build\vm.sln</code>. </li>
+        <li>Open the source code that you need to debug, set breakpoints and perform all other
+            preliminary steps. </li>
+        <li>Select the vmcore project and open its properties to specify the location of the
+            <code>ij</code> executable. Select the <strong>Debugging</strong> tab and specify
+            the command and command arguments. </li>
+        <li>Copy the ZLib tool library <code>zlib1.dll</code> to the location of the VM executable.
+        </li>
+        <li>Start debugging via the menu <strong>Debug</strong> &gt; <strong>Start</strong>,
+            click <strong>NO</strong> in the popup dialog offering to build the project. </li>
+    </ol>
+    <p class="class">
+        On Linux<a href="#*">*</a></p>
+    <ol>
+        <li>Set up the <code>LD_LIBRARY_PATH</code> to point to the <code>deploy/jre/bin</code>
+            directory. Change the working directory to the location of the VM executable and
+            run:
+            <pre>
 gdb ij
 </pre>
-         </li>
-         <li>
-            Set breakpoints and perform all other preliminary steps.
-         </li>
-         <li>
-            On the command line, specify debugging parameters by
-            typing: 
-<pre>
+        </li>
+        <li>Set breakpoints and perform all other preliminary steps. </li>
+        <li>On the command line, specify debugging parameters by typing:
+            <pre>
 run &lt;your_params&gt;
 </pre>
-         </li>
-      </ol>
-      <p>
-         <a href="#top">Back to top</a>
-      </p>
-      <h3>
-         Attaching the Debugger to the Live Process
-      </h3>
-      <p>
-         To attach to the running VM process, do the following:
-      </p>
-      <p>
-         <strong>On Windows<a href="#*">*</a></strong>
-      </p>
-      <ol>
-         <li>
-            Start Visual Studio<a href="#*">*</a> .
-         </li>
-         <li>
-            Go <strong>Debug</strong> &gt;
-            <strong>Processes</strong>.
-         </li>
-         <li>
-            Select the VM process and click
-            <strong>Attach</strong>.<br>
-             If you built the VM in the debug mode, the
-            <strong>Microsoft Debug Runtime</strong> window appears.
-            Click the <strong>Debug</strong> button to go to the
-            crash point.
-         </li>
-      </ol>
-      <p>
-         <strong>On Linux<a href="#*">*</a></strong>
-      </p>
-      <p>
-         Run:
-      </p>
-<pre>
+        </li>
+    </ol>
+    <p>
+        <a href="#top">Back to top</a>
+    </p>
+    <h3>
+        Attaching the Debugger to the Live Process
+    </h3>
+    <p>
+        To attach to the running VM process, do the following:
+    </p>
+    <p class="class">
+        On Windows<a href="#*">*</a></p>
+    <ol>
+        <li>Start Visual Studio<a href="#*">*</a> . </li>
+        <li>Go <strong>Debug</strong> &gt; <strong>Processes</strong>. </li>
+        <li>Select the VM process and click <strong>Attach</strong>.<br>
+            If you built the VM in the debug mode, the <strong>Microsoft Debug Runtime</strong>
+            window appears. Click the <strong>Debug</strong> button to go to the crash point.
+        </li>
+    </ol>
+    <p class="class">
+        On Linux<a href="#*">*</a></p>
+    <p>
+        Run:
+    </p>
+    <pre>
 gdb &ndash;p &lt;PID of ij&gt;
 </pre>
-      <p>
-         If the VM crashed during execution, use the core dump to
-         analyze the crash:
-      </p>
-<pre>
+    <p>
+        If the VM crashed during execution, use the core dump to analyze the crash:
+    </p>
+    <pre>
 gdb ij core
 </pre>
-      <p>
-         <a href="#top">Back to top</a>
-      </p>
-      <h2>
-         <a name="Extended_Debug_VM">How to get more from your
-         debugging?</a>
-      </h2>
-      <p>
-         This section includes some tips on optimizing the debug
-         process and getting more debug information.
-      </p>
-      <h3>
-         Configuration of tracing
-      </h3>
-      <p>
-         Consult the <i>Getting Started</i> guide delivered with
-         DRLVM bundle for information on VM standard and non-standard
-         configuration options. Tracing-related options might be
-         useful for debugging purposes.
-      </p>
-      <h3>
-         Native stack examination
-      </h3>
-      <p>
-         The debugger might draw the stack incorrectly when the JIT
-         or native stubs are involved. To avoid this, set esp as the
-         memory location and 4-byte integer values as the output
-         format. As a result, you can examine the stack word by word
-         and look into the code for each number 0x00&hellip; by using
-         the Disassembly window.
-      </p>
-      <blockquote>
-         <p style="font-weight: bold">
-            When the VM has crashed
-         </p>
-         <p>
-            A very specific case on Windows<a href="#*">*</a>: the VM
-            has crashed and you only see the stack frame in the call
-            stack <code>0x00000000</code>. This means that the
-            program has jumped or called to a null pointer.
-         </p>
-         <p>
-            You might still get the stack trace. For that, do the
-            following:
-         </p>
-         <ol>
-            <li>
-               Open the <strong>Disassembly</strong> window.
-            </li>
-            <li>
-               Find any ret instruction with no parameters in the
-               memory space.<br>
-                Open any source file, open the context menu, and
-               select <strong>Go</strong> to
-               <strong>Disassembly</strong> to find any
-               <code>ret</code> instruction.
-            </li>
-            <li>
-               When found, select the ret instruction and click
-               <strong>Set Next Statement</strong> in the context
-               menu.
-            </li>
-            <li>
-               Type <code>F11</code> to go a single instruction.<br>
-                You may see several instructions near the current
-               point of execution. If you see a call instruction, you
-               have found an appropriate call site and you can see
-               the call stack in the <strong>Call Stack</strong>
-               window. If you have found a wrong call site, repeat
-               the instruction from step 2.
-            </li>
-         </ol>
-      </blockquote>
-      <p>
-         <a href="#top">Back to top</a>
-      </p>
-      <h3>
-         Java<a href="#*">*</a> stack examination
-      </h3>
-      <p>
-         <strong>On Windows<a href="#*">*</a></strong>
-      </p>
-      <p>
-         Running the VM in the interpreter mode, you can get Java<a
-         href="#*">*</a> methods stack trace almost at any point of
-         execution. For that, break the execution of the VM and
-         select the <strong>Interpreter</strong> frame in the Visual
-         Studio<a href="#*">*</a> <strong>Call Stack</strong> window.
-         Then, in the watch window, add the watch
-         <code>stack_dump()</code>. The stack dump appears in VM
-         output window. Running the VM in the JIT mode, use the
-         <code>st_print()</code> function for the same purpose.
-      </p>
-      <p>
-         <strong>On Linux<a href="#*">*</a></strong>
-      </p>
-      <p>
-         Use the <code>gdb</code> command print and specify the
-         <code>stack_dump</code> or <code>st_print</code> in the
-         interpreter or the JIT compiler mode respectively.
-      </p>
-      <h3>
-         Setting smart breakpoints
-      </h3>
-      <p>
-         <strong>On Windows<a href="#*">*</a> / IA-32</strong>
-      </p>
-      <p>
-         Place breakpoints in source code by inserting calls to the
-         _CrtDbgBreak() function. Placing the call inside a condition
-         calls the function only for the specified case you need to
-         debug. Analogously, you can use the Windows<a href=
-         "#*">*</a> API function DebugBreak() or print INT 3.
-      </p>
-      <p>
-             <strong>Note</strong><br>
-              This requires recompiling the VM.
-      </p>
-      <p>
-         <strong>On Linux<a href="#*">*</a></strong>
-      </p>
-      <p>
-         Run the following:
-      </p>
-<pre>
+    <p>
+        <a href="#top">Back to top</a>
+    </p>
+    <h2>
+        <a name="Extended_Debug_VM">How to get more from your debugging?</a>
+    </h2>
+    <p>
+        This section includes some tips on optimizing the debug process and getting more
+        debug information.
+    </p>
+    <h3>
+        Configuration of tracing
+    </h3>
+    <p>
+        Consult the <a href="../../subcomponents/drlvm/getting_started.html">Getting Started
+            guide</a> delivered with DRLVM bundle for information on VM standard and non-standard
+        configuration options. Tracing-related options might be useful for debugging purposes.
+    </p>
+    <h3>
+        Native stack examination
+    </h3>
+    <p>
+        The debugger might draw the stack incorrectly when the JIT or native stubs are involved.
+        To avoid this, set esp as the memory location and 4-byte integer values as the output
+        format. As a result, you can examine the stack word by word and look into the code
+        for each number 0x00&hellip; by using the Disassembly window.
+    </p>
+    <p class="class">
+        When the VM has crashed
+    </p>
+    <p>
+        A very specific case on Windows<a href="#*">*</a>: the VM has crashed and you only
+        see the stack frame in the call stack <code>0x00000000</code>. This means that the
+        program has jumped or called to a null pointer.
+    </p>
+    <p>
+        You might still get the stack trace. For that, do the following:
+    </p>
+    <ol>
+        <li>Open the <strong>Disassembly</strong> window. </li>
+        <li>Find any ret instruction with no parameters in the memory space.<br>
+            Open any source file, open the context menu, and select <strong>Go</strong> to <strong>
+                Disassembly</strong> to find any <code>ret</code> instruction. </li>
+        <li>When found, select the ret instruction and click <strong>Set Next Statement</strong>
+            in the context menu. </li>
+        <li>Type <code>F11</code> to go a single instruction.<br>
+            You may see several instructions near the current point of execution. If you see
+            a call instruction, you have found an appropriate call site and you can see the
+            call stack in the <strong>Call Stack</strong> window. If you have found a wrong
+            call site, repeat the instruction from step 2. </li>
+    </ol>
+    <p>
+        <a href="#top">Back to top</a>
+    </p>
+    <h3>
+        Java<a href="#*">*</a> stack examination
+    </h3>
+    <p class="class">
+        On Windows<a href="#*">*</a></p>
+    <p>
+        Running the VM in the interpreter mode, you can get Java<a href="#*">*</a> methods
+        stack trace almost at any point of execution. For that, break the execution of the
+        VM and select the <strong>Interpreter</strong> frame in the Visual Studio<a href="#*">*</a>
+        <strong>Call Stack</strong> window. Then, in the watch window, add the watch <code>stack_dump()</code>.
+        The stack dump appears in VM output window. Running the VM in the JIT mode, use
+        the <code>st_print()</code> function for the same purpose.
+    </p>
+    <p class="class">
+        On Linux<a href="#*">*</a></p>
+    <p>
+        Use the <code>gdb</code> command print and specify the <code>stack_dump</code> or
+        <code>st_print</code> in the interpreter or the JIT compiler mode respectively.
+    </p>
+    <h3>
+        Setting smart breakpoints
+    </h3>
+    <p class="class">
+        On Windows<a href="#*">*</a> / IA-32</p>
+    <p>
+        Place breakpoints in source code by inserting calls to the <code>_CrtDbgBreak()</code>
+        function. Placing the call inside a condition calls the function only for the specified
+        case you need to debug. Analogously, you can use the Windows<a href="#*">*</a> API
+        function <code>DebugBreak()</code> or print <code>INT 3</code>.
+    </p>
+    <p class="note">
+        Note</p>
+    <p class="notetext">
+        This requires recompiling the VM.</p>
+    <p class="class">
+        On Linux<a href="#*">*</a></p>
+    <p>
+        Run the following:
+    </p>
+    <pre>
 __asm {int 3}
 </pre>
-      <p>
-         <a href="#top">Back to top</a>
-      </p>
-      <h3>
-         Handling Java<a href="#*">*</a> threads as native threads
-      </h3>
-      <p>
-         DRL VM has 1:1 mapping between native threads visible in the
-         debugger and Java<a href="#*">*</a> threads.<br>
-          To work with Java<a href="#*">*</a> threads individually,
-         freeze the threads you do not need with the help of the
-         debugger, and continue execution of other threads.
-      </p>
-      <h3>
-         Debugging deadlocks with the CriticalSection synchronization
-         primitive
-      </h3>
-      <p>
-         The <code>CriticalSection</code> primitive is a common cause
-         of deadlocks. If the code has stopped at a critical section,
-         you can try to find the thread that owns this primitive.
-      </p>
-      <p>
-         <strong>On Windows<a href="#*">*</a></strong>
-      </p>
-      <p>
-         The file WinNT.H located in &lt;PlatformSDK&gt;\Include
-         contains the definition for the structure
-         _RTL_CRITICAL_SECTION, which contains the description of the
-         CriticalSection primitive. You can get the owning thread for
-         the CriticalSection primitive in a number of ways, as
-         indicated below.
-      </p>
-      <blockquote>
-         <p>
-            <strong>Lookup in Memory</strong>
-         </p>
-         <p>
-            On Windows<a href="#*">*</a>
-         </p>
-         <p>
-            While debugging the code in Visual Studio, do the
-            following:
-         </p>
-         <ol>
-            <li>
-               Go <strong>Debug</strong> &gt;
-               <strong>Windows</strong> &gt; <strong>Memory
-               1</strong>.
-            </li>
-            <li>
-               In the address line, enter the address of the critical
-               section.
-            </li>
-            <li>
-               Open the context menu and select 4-byte Integers. This
-               sets the fourth DWORD from the beginning of the
-               critical section as the owning thread ID in
-               hexadecimal representation.
-            </li>
-         </ol>
-         <p>
-                <strong>Note</strong><br>
-                 Visual Studio<a href="#*">*</a> displays thread IDs
-            in decimal representation.
-         </p>
-      </blockquote>
-      <blockquote>
-         <strong>In the watch window</strong> 
-         <p>
-            In the watch window of Visual Studio<a href="#*">*</a>,
-            insert the following:
-         </p>
-<pre>
+    <p>
+        <a href="#top">Back to top</a>
+    </p>
+    <h3>
+        Handling Java<a href="#*">*</a> threads as native threads
+    </h3>
+    <p>
+        DRL VM has 1:1 mapping between native threads visible in the debugger and Java<a
+            href="#*">*</a> threads.<br>
+        To work with Java<a href="#*">*</a> threads individually, freeze the threads you
+        do not need with the help of the debugger, and continue execution of other threads.
+    </p>
+    <h3>
+        Debugging deadlocks with the CriticalSection synchronization primitive
+    </h3>
+    <p>
+        The <code>CriticalSection</code> primitive is a common cause of deadlocks. If the
+        code has stopped at a critical section, you can try to find the thread that owns
+        this primitive.
+    </p>
+    <p class="class">
+        On Windows<a href="#*">*</a></p>
+    <p>
+        The file <code>WinNT.H</code> located in <code>&lt;PlatformSDK&gt;\Include</code>
+        contains the definition for the structure <code>_RTL_CRITICAL_SECTION</code>, which
+        contains the description of the CriticalSection primitive. You can get the owning
+        thread for the CriticalSection primitive in a number of ways, as indicated below.
+    </p>
+    <p>
+        <strong>Lookup in Memory</strong></p>
+    <p>
+        While debugging the code in Visual Studio, do the following:
+    </p>
+    <ol>
+        <li>Go <strong>Debug</strong> &gt; <strong>Windows</strong> &gt; <strong>Memory 1</strong>.
+        </li>
+        <li>In the address line, enter the address of the critical section. </li>
+        <li>Open the context menu and select 4-byte Integers. This sets the fourth DWORD from
+            the beginning of the critical section as the owning thread ID in hexadecimal representation.
+        </li>
+    </ol>
+    <p class="note">
+        Note</p>
+    <p class="notetext">
+        Visual Studio<a href="#*">*</a> displays thread IDs in decimal representation.</p>
+    <p>
+        <strong>In the watch window</strong></p>
+    <p>
+        In the watch window of Visual Studio<a href="#*">*</a>, insert the following:
+    </p>
+    <pre>
 * ((int* )&lt;cs-ptr&gt;+3)
 </pre>
-         <p>
-            Where <code>&lt;cs-ptr&gt;</code> is the address of your
-            critical section
-         </p>
-      </blockquote>
-      <p>
-         <strong>On Linux<a href="#*">*</a></strong>
-      </p>
-      <p>
-         The file <code>/usr/include/bits/pthreadtypes.h</code>
-         contains the description of the <code>pthread_mutex_t</code>
-         type. To get the ID of the thread owning the
-         <code>CriticalSection</code> primitive, in gdb execute:
-      </p>
-<pre>
+    <p>
+        Where <code>&lt;cs-ptr&gt;</code> is the address of your critical section
+    </p>
+    <p class="class">
+        On Linux<a href="#*">*</a></p>
+    <p>
+        The file <code>/usr/include/bits/pthreadtypes.h</code> contains the description
+        of the <code>pthread_mutex_t</code> type. To get the ID of the thread owning the
+        <code>CriticalSection</code> primitive, in <code>gdb</code> execute:
+    </p>
+    <pre>
 x/4w &lt;address of your mutex primitive&gt;
 </pre>
-      <p>
-         The third word in the output contains the owning thread
-         descriptor you are looking for.
-      </p>
-      <h3>
-         Getting a class name for an object
-      </h3>
-      <p>
-         You can often need to find out the class name for a Java<a
-         href="#*">*</a> object used in VM code. For example, you may
-         need to get the class name for an object of the type
-         <code>ManagedObject *</code> (which is a direct pointer to
-         the heap). For that, insert the following expression into
-         the watch window in Visual Studio on Windows<a href=
-         "#*">*</a> or print the command of <code>gdb</code> on
-         Linux<a href="#*">*</a> :
-      </p>
-      <code>((VTable*)(*((int
-      *)obj)))-&gt;clss-&gt;name-&gt;bytes</code> 
-      <p>
-         Variables of the types jobject and
-         <code>Object_Handle</code> are references to
-         <code>ManagedObject *</code> types. These structures contain
-         a single element, a pointer to <code>ManagedObject *</code>
-         type object. To use the expression above, de-reference the
-         variable, for example, substituting <code>obj</code> in the
-         expression above with a cast to <code>(ManagedObject
-         *)(*(int *)obj)</code>.
-      </p>
-      <p>
-         <a href="#top">Back to top</a>
-      </p>
-      <h1>
-         <a name="Debugging_JIT"></a>Debugging the Jitrino.JET
-         Baseline Compiler
-      </h1>
-      <p>
-         To use debugging and tracing in Jitrino.JET, use the debug
-         build or the release build with the <code>JET_PROTO</code>
-         macro defined. See the file <code>jdefs.h</code> for a
-         definition of the available flags.
-      </p>
-      <h2>
-         <a name="Enable_Tracing"></a>How to enable tracing in
-         Jitrino.JET?
-      </h2>
-      <p>
-         Currently, Jitrino.JET provides no interface or command line
-         to control tracing options. To enable tracing, set the
-         <code>compile_flags</code> variable at the entry point to
-         the method <code>Compiler::compile()</code>. At that point,
-         the global variable <code>Compiler::g_methodsSeen</code>
-         contains the ID of the method being compiled, and the
-         instance variable <code>m_fname</code> contains its fully
-         qualified name with no signature. Obtain these options
-         through a call to
-         <code>Compiler::m_infoBlock.get_flags()</code>.
-      </p>
-      <h2>
-         <a name="Config_Trace_Logging"></a>How to configure trace
-         logging?
-      </h2>
-      <p>
-         Tracing flags control compilation results output and trace
-         run-time execution, as described below. Tracing results are
-         created in each run in the directory where the
-         <code>ij</code> executable starts: compilation results are
-         in <code>jet.log</code>, and run-time output is in
-         <code>jet.rt.log</code>.
-      </p>
-      <h3>
-         Group 1: Compilation Results Tracing
-      </h3>
-      <p>
-         The following flags control tracing compilation of a method:
-      </p>
-      <ul>
-         <li>
-            <strong><code>DBG_TRACE_SUMM</code></strong> prints a
-            short summary about the compiled method: the compilation
-            status (success or failure), the name, signature,
-            bytecode size, the start and end addresses of the
-            generated code, and the compilation ID (the sequential
-            number of the method compiled by Jitrino.JET).
-         </li>
-         <li>
-            <code><strong>DBG_DUMP_BBS</strong></code> dumps the
-            bytecode and marks up basic blocks boundaries.
-         </li>
-         <li>
-            <code><strong>DBG_TRACE_CG</strong></code> prints
-            information about each compiled bytecode instruction: the
-            state of the Java<a href="#*">*</a> operand stack before
-            the instruction, the known state of local variables at
-            the given point, and the native code generated for the
-            instruction. The order instructions appear in the log
-            file is the depth-first order, the same as when
-            processing instructions during compilation. See the file
-            trace.cpp, function <code>toStr2()</code> for the legend
-            of the operand stack items print-out.
-         </li>
-         <li>
-            <strong><code>DBG_TRACE_LAYOUT</code></strong> prints the
-            results of the code layout, mostly, the address ranges
-            for the basic blocks.
-         </li>
-         <li>
-            <strong><code>DBG_DUMP_CODE</code></strong> dumps
-            generated code for the given method, the method&rsquo;s
-            actual addresses, intermixed with appropriate bytecode
-            instructions. 
-            <p>
-                   <strong>Note</strong><br>
-                    For <code>DBG_DUMP_CODE</code> and
-               <code>DBG_TRACE_CG</code>, Jitrino.JET can print
-               disassembled code in addition to raw hexadecimal
-               dumps. For that, the compiler requires an external
-               disassembler. Currently, Jitrino.JET is configured to
-               use the external library
-               <code>lwdis.dll/liblwdis.so</code> that must be
-               located in the same directory as
-               <code>jitrino.dll/libjitrino.so</code>. The name lwdis
-               stands for light weight disassembler. The library must
-               export the function <code>disasm()</code>. Refer to
-               the file trace.cpp, the <code>DISFUNC</code>
-               definition for details on calling convention and
-               signature.
+    <p>
+        The third word in the output contains the owning thread descriptor you are looking
+        for.
+    </p>
+    <h3>
+        Getting a class name for an object
+    </h3>
+    <p>
+        You can often need to find out the class name for a Java<a href="#*">*</a> object
+        used in VM code. For example, you may need to get the class name for an object of
+        the type <code>ManagedObject *</code> (which is a direct pointer to the heap). For
+        that, insert the following expression into the watch window in Visual Studio on
+        Windows<a href="#*">*</a> or print the command of <code>gdb</code> on Linux<a href="#*">*</a>
+        :
+    </p>
+    <pre>((VTable*)(*((int*)obj)))-&gt;clss-&gt;name-&gt;bytes</pre>
+    <p>
+        Variables of the types jobject and <code>Object_Handle</code> are references to
+        <code>ManagedObject *</code> types. These structures contain a single element, a
+        pointer to <code>ManagedObject *</code> type object. To use the expression above,
+        de-reference the variable, for example, substituting <code>obj</code> in the expression
+        above with a cast to <code>(ManagedObject *)(*(int *)obj)</code>.
+    </p>
+    <p>
+        <a href="#top">Back to top</a>
+    </p>
+    <h1>
+        <a name="Debugging_JIT"></a>Debugging the Jitrino.JET Baseline Compiler
+    </h1>
+    <p>
+        To use debugging and tracing in Jitrino.JET, use the debug build or the release
+        build with the <code>JET_PROTO</code> macro defined. See the file <code>jdefs.h</code>
+        for a definition of the available flags.
+    </p>
+    <h2>
+        <a name="Enable_Tracing"></a>How to enable tracing in Jitrino.JET?
+    </h2>
+    <p>
+        Currently, Jitrino.JET provides no interface or command line to control tracing
+        options. To enable tracing, set the <code>compile_flags</code> variable at the entry
+        point to the method <code>Compiler::compile()</code>. At that point, the global
+        variable <code>Compiler::g_methodsSeen</code> contains the ID of the method being
+        compiled, and the instance variable <code>m_fname</code> contains its fully qualified
+        name with no signature. Obtain these options through a call to <code>Compiler::m_infoBlock.get_flags()</code>.
+    </p>
+    <h2>
+        <a name="Config_Trace_Logging"></a>How to configure trace logging?
+    </h2>
+    <p>
+        Tracing flags control compilation results output and trace run-time execution, as
+        described below. Tracing results are created in each run in the directory where
+        the <code>ij</code> executable starts: compilation results are in <code>jet.log</code>,
+        and run-time output is in <code>jet.rt.log</code>.
+    </p>
+    <h3>
+        Group 1: Compilation Results Tracing
+    </h3>
+    <p>
+        The following flags control tracing compilation of a method:
+    </p>
+    <ul>
+        <li><strong><code>DBG_TRACE_SUMM</code></strong> prints a short summary about the compiled
+            method: the compilation status (success or failure), the name, signature, bytecode
+            size, the start and end addresses of the generated code, and the compilation ID
+            (the sequential number of the method compiled by Jitrino.JET). </li>
+        <li><code><strong>DBG_DUMP_BBS</strong></code> dumps the bytecode and marks up basic
+            blocks boundaries. </li>
+        <li><code><strong>DBG_TRACE_CG</strong></code> prints information about each compiled
+            bytecode instruction: the state of the Java<a href="#*">*</a> operand stack before
+            the instruction, the known state of local variables at the given point, and the
+            native code generated for the instruction. The order instructions appear in the
+            log file is the depth-first order, the same as when processing instructions during
+            compilation. See the file trace.cpp, function <code>toStr2()</code> for the legend
+            of the operand stack items print-out. </li>
+        <li><strong><code>DBG_TRACE_LAYOUT</code></strong> prints the results of the code layout,
+            mostly, the address ranges for the basic blocks. </li>
+        <li><strong><code>DBG_DUMP_CODE</code></strong> dumps generated code for the given method,
+            the method&rsquo;s actual addresses, intermixed with appropriate bytecode instructions.
+            <p class="note">
+                Note</p>
+            <p class="notetext">
+                For <code>DBG_DUMP_CODE</code> and <code>DBG_TRACE_CG</code>, Jitrino.JET can print
+                disassembled code in addition to raw hexadecimal dumps. For that, the compiler requires
+                an external disassembler. Currently, Jitrino.JET is configured to use the external
+                library <code>lwdis.dll/liblwdis.so</code> that must be located in the same directory
+                as <code>jitrino.dll/libjitrino.so</code>. The name lwdis stands for light weight
+                disassembler. The library must export the function <code>disasm()</code>. Refer
+                to the file trace.cpp, the <code>DISFUNC</code> definition for details on calling
+                convention and signature.
             </p>
-         </li>
-         <li>
-            <strong><code>DBG_CHECK_STACK</code></strong> prints
-            nothing but instruments code to check stack integrity.
-            The methods compiled by Jitrino.JET use EBP-based frames.
-            These frames can mask errors, for example, wrong
-            convention usage with a VM helper call. Using this option
-            performs run-time checks and INT3 raised in case the
-            stack integrity broken.
-         </li>
-         <li>
-            <strong><code>DBG_BRK</code></strong> inserts INT3 at the
-            method entry point, so it can be stopped in the debugger.
-            
-            <p>
-                  <strong> Note</strong><br>
-                    An instance variable of class
-               <code>Compiler</code>, <code>dbg_break_pc</code> can
-               be used to insert <code>INT3</code> at the specified
-               program counter of a method.
+        </li>
+        <li><strong><code>DBG_CHECK_STACK</code></strong> prints nothing but instruments code
+            to check stack integrity. The methods compiled by Jitrino.JET use EBP-based frames.
+            These frames can mask errors, for example, wrong convention usage with a VM helper
+            call. Using this option performs run-time checks and INT3 raised in case the stack
+            integrity broken. </li>
+        <li><strong><code>DBG_BRK</code></strong> inserts INT3 at the method entry point, so
+            it can be stopped in the debugger.
+            <p class="note">
+                Note</p>
+            <p class="notetext">
+                An instance variable of class <code>Compiler</code>, <code>dbg_break_pc</code> can
+                be used to insert <code>INT3</code> at the specified program counter of a method.
             </p>
-         </li>
-      </ul>
-      <p>
-         <a href="#top">Back to top</a>
-      </p>
-      <h3>
-         Group 2: Run-time Execution tracing
-      </h3>
-      <p>
-         The following flags trace run-time life of the method:
-      </p>
-      <ul class="noindent">
-         <li>
-            <strong><code>DBG_TRACE_EE</code></strong> prints
-            entering: <code>&lt;method-name&gt;</code> and exiting:
-            <code>&lt;method-name&gt;</code> at the method entrance
-            and exit points.<br>
+        </li>
+    </ul>
+    <p>
+        <a href="#top">Back to top</a>
+    </p>
+    <h3>
+        Group 2: Run-time Execution tracing
+    </h3>
+    <p>
+        The following flags trace run-time life of the method:
+    </p>
+    <ul class="noindent">
+        <li><strong><code>DBG_TRACE_EE</code></strong> prints entering: <code>&lt;method-name&gt;</code>
+            and exiting: <code>&lt;method-name&gt;</code> at the method entrance and exit points.<br>
             <br>
-         </li>
-         <li>
-            <strong><code>DBG_TRACE_BC</code></strong> traces
-            execution of every bytecode instruction by printing a
-            string of the following format before executing the
-            instruction: <code>&lt;method-name&gt; @
-            PC=&lt;pc&gt;</code><br>
+        </li>
+        <li><strong><code>DBG_TRACE_BC</code></strong> traces execution of every bytecode instruction
+            by printing a string of the following format before executing the instruction: <code>
+                &lt;method-name&gt; @ PC=&lt;pc&gt;</code><br>
             <br>
-         </li>
-      </ul>
-      <p>
-         <strong>    Notes</strong>
-      </p>
-      <p>
-             The output string for <code>DBG_TRACE_EE</code> and
-         <code>DBG_TRACE_BC</code> uses a specific format: before the
-         string, an estimated call depth is printed and the string
-         gets indentation based on the call depth. After the string,
-         the string ID is printed. The estimated call depth may help
-         to identify where a method was called from. The string ID
-         can be helpful for setting a conditional breakpoint in the
-         debugger for a complex scenario. For that, set a condition
-         for the static variable cnt in the function
-         <code>rt_dbg</code>, file <code>trace.cpp</code>.
-      </p>
-      <p class="Notetext">
-             Turning on the option <code>DBG_TRACE_BC</code> may slow
-         down execution extremely and may result to a gigantic file
-         <code>jet.rt.log</code>.
-      </p>
-      <ul class="noindent">
-         <li>
-            <strong><code>DBG_TRACE_RT</code></strong> traces
-            run-time support calls, for example, getting address of
-            &lsquo;this&rsquo;, support for root set enumeration and
-            stack unwinding.<br>
+        </li>
+    </ul>
+    <p class="note">
+        Notes</p>
+    <p class="notetext">
+        The output string for <code>DBG_TRACE_EE</code> and <code>DBG_TRACE_BC</code> uses
+        a specific format: before the string, an estimated call depth is printed and the
+        string gets indentation based on the call depth. After the string, the string ID
+        is printed. The estimated call depth may help to identify where a method was called
+        from. The string ID can be helpful for setting a conditional breakpoint in the debugger
+        for a complex scenario. For that, set a condition for the static variable cnt in
+        the function <code>rt_dbg</code>, file <code>trace.cpp</code>.<br>
+        Turning on the option <code>DBG_TRACE_BC</code> may slow down execution extremely
+        and may result to a gigantic file <code>jet.rt.log</code>.
+    </p>
+    <ul class="noindent">
+        <li><strong><code>DBG_TRACE_RT</code></strong> traces run-time support calls, for example,
+            getting address of &lsquo;this&rsquo;, support for root set enumeration and stack
+            unwinding.<br>
             <br>
-         </li>
-      </ul>
-      <p>
-         <strong>    Note</strong><br>
-              The output goes to jet.log, with the address (both
-         native and PC) where the event happens, and some other info.
-      </p>
-      <p>
-         <a href="#top">Back to top</a>
-      </p>
-      <h2>
-         <a name="Extend_Trace_JIT">How to get more from your
-         tracing?</a>
-      </h2>
-      <p>
-         To identify one or more problematic methods with another
-         stable JIT compiler, use the execution manager. With this
-         technique, some methods are compiled by the stable JIT, and
-         the rest goes to the JIT being debugged. With a simple
-         binary search, you can find the problematic method rather
-         quickly.
-      </p>
-      <p>
-         <strong>    Note</strong><br>
-              Try turning off parallel compilation when using this
-         technique (refer to VM&rsquo;s
-         <code>-Xno_parallel_jit</code> option).
-      </p>
-      <p>
-         <b>To get details in case of a crash</b> with no adequate
-         stack trace or IP location available, turn on the option
-         DBG_TRACE_EE to see, in which method the crash happens. As
-         the second step, turn on DBG_TRACE_BC for this particular
-         method to find the exact bytecode instruction. Often, this
-         cuts the code to analyze down to 5-10 native instructions.
-      </p>
-      <p>
-         <b>To set a breakpoint and stop execution at a specific
-         point</b>, use trace.cpp:rt_dbg to break execution at the
-         specified bytecode instruction or at the entry point of the
-         specified method.
-      </p>
-      <p>
-         <a href="#top">Back to top</a>
-      </p>
-      <h3>
-         Tracing Example
-      </h3>
-      <p>
-         This is an example of code that turns on various tracing
-         scenarios. The code must be placed in the method
-         <code>Compiler::compile(</code>).
-      </p>
-      <p>
-         <span style="font-family:Courier 
-         New;font-size:10.0pt;color:blue;">#if</span> <span style= 
-         "font-family:Courier New;font-size:10.0pt;"><span style= 
-         "color:blue;">defined</span>(<span style=
-         "color:black;">_DEBUG</span>) || <span style=
-         "color:blue;">defined</span>(<span style=
-         "color:black;">JET_PROTO</span>)</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style="color:green;">    //
-         Turns on a short summary of all methods</span></span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style=
-         "color:black;">    compile_flags</span> |= <span style= 
-         "color:black;">DBG_TRACE_SUMM</span>;</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style="color:green;">    // A
-         handy constant</span></span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style=
-         "color:blue;">    static</span> <span style=
-         "color:blue;">const</span> <span style=
-         "color:blue;">unsigned</span> <span style=
-         "color:black;">TRACE_CG</span> = <span style=
-         "color:black;">DBG_DUMP_BBS</span> | <span style= 
-         "color:black;">DBG_TRACE_CG</span> |</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style=
-         "color:black;">                                     DBG_TRACE_LAYOUT</span>
-         | <span style="color:black;">DBG_TRACE_SUMM</span> |</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style=
-         "color:black;">                                     DBG_DUMP_CODE</span>;</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style="color:green;">    // For
-         methods in the range (1000;15000), print out the complete
-         code generator dumps</span></span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style=
-         "color:blue;">    if</span> (<span style=
-         "color:black;">g_methodsSeen</span>&gt;1000 &amp;&amp; <span
-         style="color:black;">g_methodsSeen</span>&lt;15000) {</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style=
-         "color:black;">    compile_flags</span> |= <span style= 
-         "color:black;">TRACE_CG</span>;</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;">    }</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style="color:green;">    // For
-         methods getSomeValue() and for all methods in class
-         MyClass,</span></span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style="color:green;">    //
-         trace enter and exit</span></span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style=
-         "color:blue;">    if</span> (<span style=
-         "color:black;">NULL</span> != <span style=
-         "color:black;">strstr</span>(<span style=
-         "color:black;">m_fname</span>, "::getSomeValue") ||</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style=
-         "color:black;">        NULL</span> != <span style= 
-         "color:black;">strstr</span>(<span style=
-         "color:black;">m_fname</span>, "MyClass::") ) {</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style=
-         "color:black;">        compile_flags</span> |= <span style= 
-         "color:black;">    DBG_TRACE_EE</span>;</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;">    }</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style="color:green;">    // For
-         the method crashes_some_times() in class MyClass trace
-         every</span></span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style="color:green;">    //
-         bytecode execution: the last bytecode in the log is the most
-         probable</span></span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style="color:green;">    //
-         cause of the failure</span></span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style=
-         "color:blue;">    if</span> (!<span style=
-         "color:black;">strcmp</span>(<span style=
-         "color:black;">m_fname</span>,
-         "MyClass::crashes_some_times")) {</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style=
-         "color:black;">        compile_flags</span> |= <span style= 
-         "color:black;">DBG_TRACE_EE</span>|<span style=
-         "color:black;">DBG_TRACE_BC</span>;</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;">    }</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style="color:green;">    //
-         Break into debugger (INT3) at the entry of the
-         stop_at_entry() method</span></span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style=
-         "color:blue;">    if</span> (!<span style=
-         "color:black;">strcmp</span>(<span style=
-         "color:black;">m_fname</span>, "MyClass::stop_at_entry"))
-         {</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style=
-         "color:black;">        compile_flags</span> |= <span style= 
-         "color:black;">DBG_BRK</span>;</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;">    }</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style="color:green;">    //
-         Break into debugger (INT3) inside the method</span></span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style=
-         "color:blue;">    if</span> (!<span style=
-         "color:black;">strcmp</span>(<span style=
-         "color:black;">m_fname</span>,
-         "MyClass::stop_somewhere_in_the_middle")) {</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style=
-         "color:black;">        dbg_break_pc</span> = 50;</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;">    }</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style="color:green;">    //
-         Trace run-time support calls: unwind, getting the address of
-         'this', root</span></span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style="color:green;">    // set
-         enumeration</span></span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style=
-         "color:blue;">    if</span> (!<span style=
-         "color:black;">strcmp</span>(<span style=
-         "color:black;">m_fname</span>,
-         "MyClass::something_wrong_with_unwind_here")) {</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style=
-         "color:black;">        compile_flags</span> |= <span style= 
-         "color:black;">DBG_TRACE_RT</span>;</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;">    }</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style="color:green;">    //
-         By-pass run-time tracing for java/* classes</span></span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style=
-         "color:blue;">    if</span> (<span style=
-         "color:black;">m_fname</span> == <span style=
-         "color:black;">strstr</span>(<span style=
-         "color:black;">m_fname</span>, "java/")) {</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;"><span style=
-         "color:black;">        compile_flags</span> &amp;= ~(<span
-         style="color:black;">DBG_TRACE_EE</span>|<span style= 
-         "color:black;">DBG_TRACE_BC</span>);</span>
-      </p>
-      <p>
-         <span style="font-family:Courier
-         New;font-size:10.0pt;">    }</span>
-      </p>
-      <p>
-         <span style="font-family:Courier 
-         New;font-size:10.0pt;color:blue;">#endif</span>
-      </p>
-      
-      <p>
-         <a href="#top">Back to top</a>
-      </p>
-      <p>
-         <a name="*"></a>* Other brands and names are the property of
-         their respective owners.
-      </p>
-   </body>
+        </li>
+    </ul>
+    <p class="note">
+        Note</p>
+    <p class="notetext">
+        The output goes to jet.log, with the address (both native and PC) where the event
+        happens, and some other info.
+    </p>
+    <p>
+        <a href="#top">Back to top</a>
+    </p>
+    <h2>
+        <a name="Extend_Trace_JIT">How to get more from your tracing?</a>
+    </h2>
+    <p>
+        To identify one or more problematic methods with another stable JIT compiler, use
+        the execution manager. With this technique, some methods are compiled by the stable
+        JIT, and the rest goes to the JIT being debugged. With a simple binary search, you
+        can find the problematic method rather quickly.
+    </p>
+    <p class="note">
+        Note</p>
+    <p class="notetext">
+        Try turning off parallel compilation when using this technique (refer to VM&rsquo;s
+        <code>-Xno_parallel_jit</code> option).
+    </p>
+    <p>
+        <b>To get details in case of a crash</b> with no adequate stack trace or IP location
+        available, turn on the option <code>DBG_TRACE_EE</code> to see, in which method
+        the crash happens. As the second step, turn on <code>DBG_TRACE_BC</code> for this
+        particular method to find the exact bytecode instruction. Often, this cuts the code
+        to analyze down to 5-10 native instructions.
+    </p>
+    <p>
+        <b>To set a breakpoint and stop execution at a specific point</b>, use <code>trace.cpp:rt_dbg</code>
+        to break execution at the specified bytecode instruction or at the entry point of
+        the specified method.
+    </p>
+    <p>
+        <a href="#top">Back to top</a>
+    </p>
+    <h3>
+        Tracing Example
+    </h3>
+    <p>
+        This is an example of code that turns on various tracing scenarios. The code must
+        be placed in the method <code>Compiler::compile(</code>).
+    </p>
+    <p>
+        <span style="font-family: Courier 
+         New; font-size: 10.0pt; color: blue;">#if</span>
+        <span style="font-family: Courier New; font-size: 10.0pt;"><span style="color: blue;">
+            defined</span>(<span style=""color: black;">_DEBUG</span>) || <span style=""color: blue;">
+                defined</span>(<span style=""color: black;">JET_PROTO</span>)</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style="color: green;">
+            // Turns on a short summary of all methods</span></span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style=""color: black;">
+            compile_flags</span> |= <span style="color: black;">DBG_TRACE_SUMM</span>;</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style="color: green;">
+            // A handy constant</span></span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style=""color: blue;">
+            static</span> <span style=""color: blue;">const</span> <span style=""color: blue;">unsigned</span>
+            <span style=""color: black;">TRACE_CG</span> = <span style=""color: black;">DBG_DUMP_BBS</span>
+            | <span style="color: black;">DBG_TRACE_CG</span> |</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style=""color: black;">
+            DBG_TRACE_LAYOUT</span> | <span style="color: black;">DBG_TRACE_SUMM</span> |</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style=""color: black;">
+            DBG_DUMP_CODE</span>;</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style="color: green;">
+            // For methods in the range (1000;15000), print out the complete code generator
+            dumps</span></span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style=""color: blue;">
+            if</span> (<span style=""color: black;">g_methodsSeen</span>&gt;1000 &amp;&amp;
+            <span style="color: black;">g_methodsSeen</span>&lt;15000) {</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style=""color: black;">
+            compile_flags</span> |= <span style="color: black;">TRACE_CG</span>;</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;">}</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style="color: green;">
+            // For methods getSomeValue() and for all methods in class MyClass,</span></span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style="color: green;">
+            // trace enter and exit</span></span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style=""color: blue;">
+            if</span> (<span style=""color: black;">NULL</span> != <span style=""color: black;">
+                strstr</span>(<span style=""color: black;">m_fname</span>, "::getSomeValue")
+            ||</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style=""color: black;">
+            NULL</span> != <span style="color: black;">strstr</span>(<span style=""color: black;">m_fname</span>,
+            "MyClass::") ) {</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style=""color: black;">
+            compile_flags</span> |= <span style="color: black;">DBG_TRACE_EE</span>;</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;">}</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style="color: green;">
+            // For the method crashes_some_times() in class MyClass trace every</span></span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style="color: green;">
+            // bytecode execution: the last bytecode in the log is the most probable</span></span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style="color: green;">
+            // cause of the failure</span></span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style=""color: blue;">
+            if</span> (!<span style=""color: black;">strcmp</span>(<span style=""color: black;">m_fname</span>,
+            "MyClass::crashes_some_times")) {</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style=""color: black;">
+            compile_flags</span> |= <span style="color: black;">DBG_TRACE_EE</span>|<span style=""color: black;">DBG_TRACE_BC</span>;</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;">}</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style="color: green;">
+            // Break into debugger (INT3) at the entry of the stop_at_entry() method</span></span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style=""color: blue;">
+            if</span> (!<span style=""color: black;">strcmp</span>(<span style=""color: black;">m_fname</span>,
+            "MyClass::stop_at_entry")) {</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style=""color: black;">
+            compile_flags</span> |= <span style="color: black;">DBG_BRK</span>;</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;">}</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style="color: green;">
+            // Break into debugger (INT3) inside the method</span></span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style=""color: blue;">
+            if</span> (!<span style=""color: black;">strcmp</span>(<span style=""color: black;">m_fname</span>,
+            "MyClass::stop_somewhere_in_the_middle")) {</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style=""color: black;">
+            dbg_break_pc</span> = 50;</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;">}</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style="color: green;">
+            // Trace run-time support calls: unwind, getting the address of 'this', root</span></span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style="color: green;">
+            // set enumeration</span></span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style=""color: blue;">
+            if</span> (!<span style=""color: black;">strcmp</span>(<span style=""color: black;">m_fname</span>,
+            "MyClass::something_wrong_with_unwind_here")) {</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style=""color: black;">
+            compile_flags</span> |= <span style="color: black;">DBG_TRACE_RT</span>;</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;">}</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style="color: green;">
+            // By-pass run-time tracing for java/* classes</span></span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style=""color: blue;">
+            if</span> (<span style=""color: black;">m_fname</span> == <span style=""color: black;">
+                strstr</span>(<span style=""color: black;">m_fname</span>, "java/")) {</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;"><span style=""color: black;">
+            compile_flags</span> &amp;= ~(<span style="color: black;">DBG_TRACE_EE</span>|<span
+                style="color: black;">DBG_TRACE_BC</span>);</span>
+    </p>
+    <p>
+        <span style="font-family: Courier
+         New; font-size: 10.0pt;">}</span>
+    </p>
+    <p>
+        <span style="font-family: Courier 
+         New; font-size: 10.0pt; color: blue;">#endif</span>
+    </p>
+    <p>
+        <a href="#top">Back to top</a>
+    </p>
+    <p>
+        <a name="*"></a>* Other brands and names are the property of their respective owners.
+    </p>
+</body>
 </html>
+
 
 </div>
                                         </td>

Modified: harmony/standard/site/docs/subcomponents/drlvm/getting_started.html
URL: http://svn.apache.org/viewvc/harmony/standard/site/docs/subcomponents/drlvm/getting_started.html?view=diff&rev=518091&r1=518090&r2=518091
==============================================================================
--- harmony/standard/site/docs/subcomponents/drlvm/getting_started.html (original)
+++ harmony/standard/site/docs/subcomponents/drlvm/getting_started.html Wed Mar 14 03:37:45 2007
@@ -192,11 +192,11 @@
                                                                 <div>
 <!--
     Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
+    contributor license agreements. See the NOTICE file distributed with
     this work for additional information regarding copyright ownership.
     The ASF licenses this file to You under the Apache License, Version 2.0
     (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
+    the License. You may obtain a copy of the License at
 
        http://www.apache.org/licenses/LICENSE-2.0
 
@@ -210,192 +210,150 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
-   <head>
-      <meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-      <title>
-         Getting Started with DRLVM
-      </title>
-      <link rel="Stylesheet" type="text/css" media="all" href="site.css" />
-   </head>
-   <body>
-      <h1>
-         <a id="TOP" name="TOP"></a>Getting Started with DRLVM
-      </h1>
-      <p>
-         The Dynamic Runtime Layer virtual machine (DRLVM) is a clean-room implementation of the
-         Java<a href="#*">*</a> virtual machine for Java 2 Platform, Standard Edition (J2SE<a
-         href="#*">*</a>) 1.5.0. This document gives tips on how to start using
-         the DRL virtual machine (VM). Use this page to learn where to get the
-         code and how to use it. For documentation on the Harmony Java<a
-         href="#*">*</a> class libraries, see the <a href="../classlibrary/index.html">classlib page</a>.
-      </p>
-      <p>
-         To quickly start with DRL, read this page and follow the instructions.
-         It is recommended that you strictly follow the instructions of this
-         guide to ensure system stability and anticipated results. After
-         completing this guide, you will be able to run and debug your own
-         applications with DRLVM.
-      </p>
-      <h2>
-         <a id="Overview" name="Overview"></a>Overview
-      </h2>
-      <p>
-         For a definition of the DRL virtual machine and links to all docs
-         describing it, see the DRLVM <a href="index.html">component page</a>.
-         For instructions on how to get and build the code, and configure your
-         environment, please visit the <a
-         href="../../quickhelp_users.html">Getting Started for Users</a> page.
-         If you fail to build the source code or come across other problems, go
-         to our project <a href="http://wiki.apache.org/harmony/"
-         target="_blank">Wiki resource</a> and search for your issue on the <a
-         href="http://wiki.apache.org/harmony/DrlvmBuildTroubleshooting"
-         target="_blank">DrlvmBuildTroubleshooting</a> page. If no known issue
-         matches your problem, please write to the mailing list or add your
-         issue to the wiki page.
-      </p>
-      <p>
-         The README file supplied with the source code and the Quick Help
-         instructions enable you to build the VM source code in the default
-         configuration. To modify the code behavior, use the available
-         command-line options, as indicated in the <a
-         href="http://wiki.apache.org/harmony/DrlvmCommandLineOptions"
-         target="_blank">Wiki command-line options page</a>. Read further
-         for illustrations of command-line options usage.
-      </p>
-      <h1>
-         <a id="Running_Hello" name="Running_Hello"></a>Running an Application
-      </h1>
-      <p>
-         This scenario provides step-by-step instructions on running a
-         <code>Hello</code> application in the Windows<a href="#*">*</a> or the
-         Linux<a href="#*">*</a> console. The scenario uses a sample
-         <code>Hello.class</code> Java<a href="#*">*</a> class for illustration.
-		 Please use your own application instead.
-      </p>
-      <ol>
-         <li>
-            To start DRL, change your current directory to the
-            <code>&lt;<b>installation folder</b>&gt;\bin</code> directory.
-         </li>
-         <li>
-            Check that you have files <code>java.exe</code> on Windows<a
-            href="#*">*</a> or <code>java</code> on Linux<a href="#*">*</a> and
-            <code>Hello.class</code> in the <code>\bin</code> directory.<br />
-             On Linux<a href="#*">*</a>, make sure that you can run
-            applications and load dynamic libraries from the current directory.
-           If you are using the Intel(R) C++ compiler, make sure the
-            <code>LD_LIBRARY_PATH</code> variable contains location of the ICC
-            libraries.
-         </li>
-         <li>
-            Run the <code>Hello</code> application by entering: 
-<pre>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+    <title>Getting Started with DRLVM </title>
+    <link rel="Stylesheet" type="text/css" media="all" href="site.css" />
+</head>
+<body>
+    <h1>
+        <a id="TOP" name="TOP"></a>Getting Started with DRLVM
+    </h1>
+    <p>
+        The Dynamic Runtime Layer virtual machine (DRLVM) is a clean-room implementation
+        of the Java<a href="#*">*</a> virtual machine for Java 2 Platform, Standard Edition
+        (J2SE<a href="#*">*</a>) 1.5.0. This document gives tips on how to start using the
+        DRL virtual machine (VM). Use this page to learn where to get the code and how to
+        use it. For documentation on the Harmony Java<a href="#*">*</a> class libraries,
+        see the <a href="../classlibrary/index.html">classlib page</a>.
+    </p>
+    <p>
+        To quickly start with DRL, read this page and follow the instructions. It is recommended
+        that you strictly follow the instructions of this guide to ensure system stability
+        and anticipated results. After completing this guide, you will be able to run and
+        debug your own applications with DRLVM.
+    </p>
+    <h2>
+        <a id="Overview" name="Overview"></a>Overview
+    </h2>
+    <p>
+        For a definition of the DRL virtual machine and links to all docs describing it,
+        see the DRLVM <a href="index.html">component page</a>. For instructions on how to
+        get and build the code, and configure your environment, please visit the <a href="../../quickhelp_users.html">
+            Getting Started for Users</a> page. If you fail to build the source code or
+        come across other problems, go to our project <a href="http://wiki.apache.org/harmony/"
+            target="_blank">Wiki resource</a> and search for your issue on the <a href="http://wiki.apache.org/harmony/DrlvmBuildTroubleshooting"
+                target="_blank">DrlvmBuildTroubleshooting</a> page. If no known issue matches
+        your problem, please write to the mailing list or add your issue to the wiki page.
+    </p>
+    <p>
+        The README file supplied with the source code and the Quick Help instructions enable
+        you to build the VM source code in the default configuration. To modify the code
+        behavior, use the available command-line options, as indicated in the <a href="http://wiki.apache.org/harmony/DrlvmCommandLineOptions"
+            target="_blank">Wiki command-line options page</a>. Read further for illustrations
+        of command-line options usage.
+    </p>
+    <h1>
+        <a id="Running_Hello" name="Running_Hello"></a>Running an Application
+    </h1>
+    <p>
+        This scenario provides step-by-step instructions on running a <code>Hello</code>
+        application in the Windows<a href="#*">*</a> or the Linux<a href="#*">*</a> console.
+        The scenario uses a sample <code>Hello.class</code> Java<a href="#*">*</a> class
+        for illustration. Please use your own application instead.
+    </p>
+    <ol>
+        <li>To start DRL, change your current directory to the <code>&lt;<b>installation folder</b>&gt;\bin</code>
+            directory. </li>
+        <li>Check that you have files <code>java.exe</code> on Windows<a href="#*">*</a> or
+            <code>java</code> on Linux<a href="#*">*</a> and <code>Hello.class</code> in the
+            <code>\bin</code> directory.<br />
+            On Linux<a href="#*">*</a>, make sure that you can run applications and load dynamic
+            libraries from the current directory. If you are using the Intel(R) C++ compiler,
+            make sure the <code>LD_LIBRARY_PATH</code> variable contains location of the ICC
+            libraries. </li>
+        <li>Run the <code>Hello</code> application by entering:
+            <pre>
 java Hello
 </pre>
             <p>
-               You will see &ldquo;<i>Hello World!</i>" printed on the screen.
-               This means that you have successfully launched the virtual
-               machine, and that it has processed the <code>Hello.class</code>
-               Java<a href="#*">*</a> class to execute the <code>Hello</code>
-               application.
+                You will see &ldquo;<i>Hello World!</i>" printed on the screen. This means that
+                you have successfully launched the virtual machine, and that it has processed the
+                <code>Hello.class</code> Java<a href="#*">*</a> class to execute the <code>Hello</code>
+                application.
             </p>
-         </li>
-      </ol>
-      <h1>
-         Developing Code in Eclipse
-      </h1>
-      <h2>
-         <a id="Eclipse_Hello_world" name="Eclipse_Hello_world"></a> Running an
-         Application in Eclipse
-      </h2>
-      <p>
-         In this section, a simple scenario shows how to create an application
-         and run it in Eclipse<a href="#*">*</a> with our virtual machine.
-      </p>
-      <p class="note">
-         Note
-      </p>
-      <p class="notetext">
-         If you are using Eclipse, see the page <a href="../../documentation/dev_eclipse.html">
-		Working with Harmony Code  in
-         Eclipse </a> for specific setup instructions.
-      </p>
-      <p>
-         This scenario provides step-by-step instructions on running a Java
-         application in the Eclipse environment. In the scenario, you will
-         launch Eclipse, create a new project and a new Java class within this
-         project, and finally you will run the new application.
-      </p>
-      <ol start="0">
-         <li>
-            If you have no Eclipse, download the package at <a
-            href="http://download.eclipse.org/eclipse/downloads/"
-            target="_blank">http://download.eclipse.org/eclipse/downloads/</a>,
-            and unpack this distribution.<br />
-             Set up Eclipse as described in <a href="../../documentation/dev_eclipse.html">
-			 Working with Harmony Code in Eclipse</a>.
-         </li>
-         <li>
-            Start Eclipse and create a new Java project.
-         </li>
-         <li>
-            In the project workspace, create a <code>HelloWorld</code> class with the 
-			<code>public static void main(String[] args)</code> method containing the following code: 
-			<pre>
+        </li>
+    </ol>
+    <h1>
+        Developing Code in Eclipse
+    </h1>
+    <h2>
+        <a id="Eclipse_Hello_world" name="Eclipse_Hello_world"></a>Running an Application
+        in Eclipse
+    </h2>
+    <p>
+        In this section, a simple scenario shows how to create an application and run it
+        in Eclipse<a href="#*">*</a> with our virtual machine.
+    </p>
+    <p class="note">
+        Note
+    </p>
+    <p class="notetext">
+        If you are using Eclipse, see the page <a href="../../documentation/dev_eclipse.html">
+            Working with Harmony Code in Eclipse </a>for specific setup instructions.
+    </p>
+    <p>
+        This scenario provides step-by-step instructions on running a Java application in
+        the Eclipse environment. In the scenario, you will launch Eclipse, create a new
+        project and a new Java class within this project, and finally you will run the new
+        application.
+    </p>
+    <ol start="0">
+        <li>If you have no Eclipse, download the package at <a href="http://download.eclipse.org/eclipse/downloads/"
+            target="_blank">http://download.eclipse.org/eclipse/downloads/</a>, and unpack this
+            distribution.<br />
+            Set up Eclipse as described in <a href="../../documentation/dev_eclipse.html">Working
+                with Harmony Code in Eclipse</a>. </li>
+        <li>Start Eclipse and create a new Java project. </li>
+        <li>In the project workspace, create a <code>HelloWorld</code> class with the <code>
+            public static void main(String[] args)</code> method containing the following code:
+            <pre>
 int i=18; 
 System.out.println("Hello, World!");</pre>
-         </li>
-
-         <li>
-            Save the file.
-         </li>
-         <li>
-            Run the <code>HelloWorld</code> class. The result of the execution
-            is printed in the <b>Console</b> tab of your workspace: <i>"Hello,
-            World!"</i> appears.
-         </li>
-      </ol>
-      <h2>
-         <a id="Eclipse_debug_scenario" name="Eclipse_debug_scenario"></a>
-         Debugging an Application in Eclipse
-      </h2>
-      <p>
-         This scenario provides instructions on how to debug a simple
-         application in Eclipse<a href="#*">*</a>.
-      </p>
-      <ol start="0">
-         <li>
-            Repeat steps 0 to 4 of the previous scenario to set up the
-            workspace and create a new class in the new project.
-         </li>
-         <li>
-            Set up breakpoints for debugging purposes, as needed. In the example with the
-            <code>HelloWorld</code> class, set the breakpoint on the following
-            line: 
-<pre>
+        </li>
+        <li>Save the file. </li>
+        <li>Run the <code>HelloWorld</code> class. The result of the execution is printed in
+            the <b>Console</b> tab of your workspace: <i>"Hello, World!"</i> appears. </li>
+    </ol>
+    <h2>
+        <a id="Eclipse_debug_scenario" name="Eclipse_debug_scenario"></a>Debugging an Application
+        in Eclipse
+    </h2>
+    <p>
+        This scenario provides instructions on how to debug a simple application in Eclipse<a
+            href="#*">*</a>.
+    </p>
+    <ol start="0">
+        <li>Repeat steps 0 to 4 of the previous scenario to set up the workspace and create
+            a new class in the new project. </li>
+        <li>Set up breakpoints for debugging purposes, as needed. In the example with the <code>
+            HelloWorld</code> class, set the breakpoint on the following line:
+            <pre>
 System.out.println ("Hello, World!");
 </pre>
-         </li>
-         <li>
-            Start the debug operation on your class -
-            <code>HelloWorld.java</code> in the example.<br />
-           <br />
-            After the debug run completes, the workspace gets updated with new
-            results.
-         </li>
-         <li>
-            After you are done, resume the application. When the run has
-            completed, the <b>Console</b> tab at the bottom displays the result
-            of execution. In our example, <em>H</em><i>ello World!</i> is
-            printed.
-         </li>
-      </ol>
-  
-      <p>
-         <a id="*" name="*">*</a> Other brands and names are the property of
-         their respective owners.
-      </p>
-   </body>
+        </li>
+        <li>Start the debug operation on your class - <code>HelloWorld.java</code> in the example.<br />
+            <br />
+            After the debug run completes, the workspace gets updated with new results. </li>
+        <li>After you are done, resume the application. When the run has completed, the <b>Console</b>
+            tab at the bottom displays the result of execution. In our example, <em>H</em><i>ello
+                World!</i> is printed. </li>
+    </ol>
+    <p>
+        <a id="*" name="*">*</a> Other brands and names are the property of their respective
+        owners.
+    </p>
+</body>
 </html>
 
 

Modified: harmony/standard/site/docs/svn.html
URL: http://svn.apache.org/viewvc/harmony/standard/site/docs/svn.html?view=diff&rev=518091&r1=518090&r2=518091
==============================================================================
--- harmony/standard/site/docs/svn.html (original)
+++ harmony/standard/site/docs/svn.html Wed Mar 14 03:37:45 2007
@@ -192,54 +192,60 @@
       <a name="Apache Harmony Source Code">Apache Harmony Source Code</a>
     </h1>
                         <p>
-The Harmony project uses the
-<a href="http://subversion.tigris.org/">Subversion</a> version control
-system.  If you're new to Subversion, you can check out the
-<a href="http://svnbook.red-bean.com/">online book</a> about Subversion.
-Note that we are currently using Subversion 1.1.x (there are separate
-versions of the book covering 1.0 and 1.1).
-</p>
+                The Harmony project uses the
+                <a href="http://subversion.tigris.org/">Subversion</a> version control
+                system.  If you're new to Subversion, you can check out the
+                <a href="http://svnbook.red-bean.com/">online book</a> about Subversion.
+                Note that we are currently using Subversion 1.1.x (there are separate
+                versions of the book covering 1.0 and 1.1).
+            </p>
                                     
     <h2>
         <a name="Web Access to Subversion">Web Access to Subversion</a>
     </h2>
       
                         <p>
-If you just want to browse the source code, you can use the
-<a href="http://svn.apache.org/viewcvs.cgi/harmony/?root=Apache-SVN">ViewCVS
-web interface</a> to Subversion.  This is current at all times.
-</p>
+                    If you just want to browse the source code, you can use the
+                    <a href="http://svn.apache.org/viewcvs.cgi/harmony/?root=Apache-SVN">
+                        ViewCVS
+                        web interface
+                    </a> to Subversion. This is current at all times.
+                </p>
                    
                                     
     <h2>
         <a name="Normal Subversion Access">Normal Subversion Access</a>
     </h2>
       
-                        <p>Anyone can check code out of Subversion.  You only need to specify a
-username and password in order to update the Subversion repository, and only
-Harmony committers have the permissions to do that.  We run Subversion
-over standard HTTPS, so hopefully you won't have problems with intervening
-firewalls.</p>
-                                <strong>Check out from Subversion</strong>
-                                <p>Again, anyone can do this.  Use a command like:</p>
+                        <p>
+                    Anyone can check code out of Subversion. You only need to specify a
+                    username and password in order to update the Subversion repository, and only
+                    Harmony committers have the permissions to do that. We run Subversion
+                    over standard HTTPS, so hopefully you won't have problems with intervening
+                    firewalls.
+                </p>
+                                <h3>Check out from Subversion</h3>
+                                <p>Again, anyone can do this. Use a command like:</p>
                                 <pre>svn checkout https://svn.apache.org/repos/asf/harmony</pre>
-                                <strong>Commit Changes to Subversion</strong>
-                                <p>
-Any Harmony committer should have a shell account on
-<tt>svn.apache.org</tt>.  Before you can commit, you'll need to set a
-Subversion password for yourself.  To do that, log in to
-<tt>svn.apache.org</tt> and run the command <i>svnpasswd</i>.
-</p>
+                                <h3>Commit Changes to Subversion</h3>
                                 <p>
-Once your password is set, you can use a command like this to commit:
-</p>
+                    Any Harmony committer should have a shell account on
+                    <code>svn.apache.org</code>. Before you can commit, you'll need to set a
+                    Subversion password for yourself. To do that, log in to
+                    <code>svn.apache.org</code> and run the command <code>svnpasswd</code>.
+                </p>
+                                <p>Once your password is set, you can use a command like this to commit:</p>
                                 <pre>svn commit</pre>
-                                <p>If Subversion can't figure out your username, you can tell it
-explicitly:</p>
+                                <p>
+                    If Subversion can't figure out your username, you can tell it
+                    explicitly:
+                </p>
                                 <pre>svn --username you commit</pre>
-                                <p>Subversion will prompt you for a password, and once you enter it once, it
-will remember it for you.  Note this is the password you configured with
-<tt>svnpasswd</tt>, not your shell or other password.</p>
+                                <p>
+                    Subversion will prompt you for a password, and once you enter it once, it
+                    will remember it for you. Note this is the password you configured with
+                    <code>svnpasswd</code>, not your shell or other password.
+                </p>
                    
                 <p><a href="#top">Back to top</a></p>
                     

Modified: harmony/standard/site/xdocs/downloads.xml
URL: http://svn.apache.org/viewvc/harmony/standard/site/xdocs/downloads.xml?view=diff&rev=518091&r1=518090&r2=518091
==============================================================================
--- harmony/standard/site/xdocs/downloads.xml (original)
+++ harmony/standard/site/xdocs/downloads.xml Wed Mar 14 03:37:45 2007
@@ -120,7 +120,7 @@
         necessary include files, test cases, and dependencies. It is not a replacement for the common JDK.
     </p>
 
-    <ul>
+    <ul> 
         <li>
             <a href="http://people.apache.org/builds/harmony/snapshots/latest-harmony-hdk-linux-x86.tar.gz">Latest 32-bit Linux HDK (tar.gz)</a>
             <a href="http://people.apache.org/builds/harmony/snapshots/latest-harmony-hdk-linux-x86.tar.gz.md5">(MD5)</a>
@@ -154,7 +154,7 @@
 </section>
 </body>
 </document>
-
+