<html>
  <head>
    <meta name="copyright" content="Copyright Technical University Berlin and others 2004, 2010. This page is made available under the Eclipse Public License v1.0. For full details see http://www.eclipse.org/legal/epl-v10.html" />
	<link rel=stylesheet type="text/css" href="../css/book.css">
	<link rel=stylesheet type="text/css" href="otguide.css">
    <title>Debugging Object Teams programs</title>
    <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  </head>
  <body>
    <h1>Debugging Object Teams programs</h1>
    <p>Debugging support has been extended in order to help debugging OT/J programs.
    Debugging OT/J may give rise to a new kind of questions: is a declared
    callin binding actually firing at run-time? In order to analyze this question
    a developer may need to investigate:
    <ol>
    <li>Has a team instance be created and activated?</li>
    <li>Is the callin blocked by either a guard predicate or a <code>org.objectteams.LiftingVetoException</code>?</li>
    </ol>
    Investigating question 1 is supported by the new <b>team monitor view</b>, 
    support for question 2 is provided by enhancements of the debug view and its stepping actions.
    </p>
    <h2><a name="teammonitor" href="teammonitor.html">Team Monitor View</a></h2>
    A special view exists for monitoring which team instances have been created and whether each 
    of them is currently active or not. When debugging callin bindings which do not trigger while
    they are intended to do so, the team monitor should provide first help to find out whether
    there is any active instance of the team being considered. If no active instance exists,
    callins can not trigger. <a href="teammonitor.html">Read more...</a>
    <h2><a name="stepping" href="stepping.html">Stepping through OT/J code</a></h2>
    The byte code into which OT/J programs are translated has some significant differences
    to the original source code. In order to hide some generated code and to provided
    convenient stepping even through declarative method bindings, the debug view has
    been enhanced for OT/J. <a href="stepping.html">Read more...</a>
    <h2><a name="variables">Variables View</a></h2>
    By default the variables view hides some internal fields that are generated by the compiler.
    However, in some situations these variables might come handy for inspecting the linkage between
    role/base/team instances. For that reason, filtering of these variables
    can be toggled from the variable view's menu: <span class="ui">Java &gt; Show OT/J Internal Variables</span>.
    The same holds for the detail drill down of the team monitor.
  </body>
</html>
