blob: 6cee68971d5940896cc0875fb7561bce2c65b20e [file] [log] [blame]
Stephan Herrmann01664412010-04-01 20:28:43 +00001<html>
2 <head>
3 <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" />
4 <link rel=stylesheet type="text/css" href="../css/book.css">
5 <link rel=stylesheet type="text/css" href="otguide.css">
6 <title>Debugging Object Teams programs</title>
7 <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
8 </head>
9 <body>
10 <h1>Debugging Object Teams programs</h1>
11 <p>Debugging support has been extended in order to help debugging OT/J programs.
12 Debugging OT/J may give rise to a new kind of questions: is a declared
13 callin binding actually firing at run-time? In order to analyze this question
14 a developer may need to investigate:
15 <ol>
16 <li>Has a team instance be created and activated?</li>
17 <li>Is the callin blocked by either a guard predicate or a <code>org.objectteams.LiftingVetoException</code>?</li>
18 </ol>
Stephan Herrmann54447402016-05-28 23:44:48 +020019 <p>
Stephan Herrmann01664412010-04-01 20:28:43 +000020 Investigating question 1 is supported by the new <b>team monitor view</b>,
21 support for question 2 is provided by enhancements of the debug view and its stepping actions.
22 </p>
Stephan Herrmann54447402016-05-28 23:44:48 +020023 <h2 id="teammonitor"><a href="teammonitor.html">Team Monitor View</a></h2>
Stephan Herrmann01664412010-04-01 20:28:43 +000024 A special view exists for monitoring which team instances have been created and whether each
25 of them is currently active or not. When debugging callin bindings which do not trigger while
26 they are intended to do so, the team monitor should provide first help to find out whether
27 there is any active instance of the team being considered. If no active instance exists,
28 callins can not trigger. <a href="teammonitor.html">Read more...</a>
Stephan Herrmann54447402016-05-28 23:44:48 +020029 <h2 id="stepping"><a href="stepping.html">Stepping through OT/J code</a></h2>
Stephan Herrmann01664412010-04-01 20:28:43 +000030 The byte code into which OT/J programs are translated has some significant differences
31 to the original source code. In order to hide some generated code and to provided
32 convenient stepping even through declarative method bindings, the debug view has
33 been enhanced for OT/J. <a href="stepping.html">Read more...</a>
Stephan Herrmann54447402016-05-28 23:44:48 +020034 <h2 id="variables">Variables View</h2>
Stephan Herrmann01664412010-04-01 20:28:43 +000035 By default the variables view hides some internal fields that are generated by the compiler.
36 However, in some situations these variables might come handy for inspecting the linkage between
37 role/base/team instances. For that reason, filtering of these variables
38 can be toggled from the variable view's menu: <span class="ui">Java &gt; Show OT/J Internal Variables</span>.
39 The same holds for the detail drill down of the team monitor.
Stephan Herrmann54447402016-05-28 23:44:48 +020040 <h2 id="hot-code-replace">Hot code replacement</h2>
Stephan Herrmann1ef445d2012-06-09 01:02:42 +020041 During debugging, code changes can automatically be swapped into the running program even for classes
42 requiring bytecode weaving. Naturally, this is bounded by the inability of the JVM to handle
Stephan Herrmann54447402016-05-28 23:44:48 +020043 signature changes (incl. addition &amp; removal of methods / fields) for hot code replacement.
Stephan Herrmann01664412010-04-01 20:28:43 +000044 </body>
45</html>