blob: ccae46bc011939aba9187d072cff34e76c8c28df [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_181) on Fri Sep 14 11:35:39 BST 2018 -->
<title>Overview (Debugger Core API)</title>
<meta name="date" content="2018-09-14">
<link rel="stylesheet" type="text/css" href="javadoc.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Overview (Debugger Core API)";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li class="navBarCell1Rev">Overview</li>
<li>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="overview-tree.html">Tree</a></li>
<li><a href="deprecated-list.html">Deprecated</a></li>
<li><a href="index-files/index-1.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage">org.netbeans.api.debugger/1 1.56.1 </div>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?overview-summary.html" target="_top">Frames</a></li>
<li><a href="overview-summary.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 class="title">Debugger Core API<br/><span style='font-style:normal; font-size:medium; font-weight:normal; background-color:#ffffff;'><a href='http://wiki.netbeans.org/API_Stability#Official' target='_blank'>Official</a></span></h1>
</div>
<div class="header">
<div class="subTitle">
<div class="block">
The Debugger Core API module defines common structures for integration of debugger implementations into NetBeans IDE.</div>
</div>
<p>See: <a href="#overview.description">Description</a></p>
</div>
<div class="contentContainer">
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Debugger Core API table, listing packages, and an explanation">
<caption><span>Debugger Core API</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Package</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="org/netbeans/api/debugger/package-summary.html">org.netbeans.api.debugger</a></td>
<td class="colLast">
<div class="block">The NetBeans Debugger Core API definition.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/netbeans/spi/debugger/package-summary.html">org.netbeans.spi.debugger</a></td>
<td class="colLast">
<div class="block">The NetBeans Debugger SPI definition defines interface to Debugger
Plug-ins.</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="contentContainer"><a name="overview.description">
<!-- -->
</a>
<div class="block"><p>
The Debugger Core API module defines common structures for integration of debugger implementations into NetBeans IDE.
<br>List of APIs:
<ul>
<li>
<a href="../org-netbeans-api-debugger">DebuggerCoreAPI</a> Debugger Core APIs</li>
<li>
<a href="../org-netbeans-api-debugger">DebuggerCoreSPI</a> Debugger Core SPIs</li>
<li>
<a href="../org-netbeans-api-debugger">Meta-inf-debugger-org.netbeans.api.debugger.Properties-Reader</a> Loads all property readers from given folder.</li>
<li>
<a href="../org-netbeans-api-debugger">Meta-inf-debugger-DebuggerInfo-ID-org.netbeans.spi.debugger.SessionProvider</a> Loads all session providers for specific DebuggerInfo.</li>
<li>
<a href="../org-netbeans-api-debugger">Meta-inf-debugger-DebuggerInfo-ID-org.netbeans.spi.debugger.DelegatingSessionProvider</a> Loads all delegating session providers for specific DebuggerInfo.</li>
<li>
<a href="../org-netbeans-api-debugger">Meta-inf-debugger-DebuggerInfo-ID-org.netbeans.spi.debugger.DebuggerEngineProvider</a> Loads all debugger engine providers for specific DebuggerInfo.</li>
<li>
<a href="../org-netbeans-api-debugger">Meta-inf-debugger-DebuggerInfo-ID-org.netbeans.spi.debugger.DelegatingDebuggerEngineProvider</a> Loads all delegating debugger engine providers for specific DebuggerInfo.</li>
<li>
<a href="../org-netbeans-api-debugger">Meta-inf-debugger-Session-ID-org.netbeans.spi.debugger.DebuggerEngineProvider</a> Loads all debugger engine providers for specific Session.</li>
<li>
<a href="../org-netbeans-api-debugger">Meta-inf-debugger-Session-ID-org.netbeans.spi.debugger.DelegatingDebuggerEngineProvider</a> Loads all delegating debugger engine providers for specific Session.</li>
<li>
<a href="../org-netbeans-api-debugger">Meta-inf-debugger-org.netbeans.api.debugger.LazyDebuggerManagerListener</a> Loads all debbugger manager listeners and adds them to DebuggerManager.getDebuggerManager () instance.</li>
<li>
<a href="../org-netbeans-api-debugger">Meta-inf-debugger-org.netbeans.spi.debugger.ActionsProvider</a> Loads all action providers for DebuggerManager context.</li>
<li>
<a href="../org-netbeans-api-debugger">Meta-inf-debugger-DebuggerEngine-ID-org.netbeans.spi.debugger.ActionsProvider</a> Loads all action providers for DebuggerEngine (language) context.</li>
<li>
<a href="../org-netbeans-api-debugger">Meta-inf-debugger-Session-ID-org.netbeans.spi.debugger.ActionsProvider</a> Loads all action providers for Session context.</li>
<li>
<a href="../org-netbeans-api-debugger">Meta-inf-debugger-DebuggerInfo-ID-org.netbeans.spi.debugger.ActionsProvider</a> Loads all action providers for DebuggerInfo context.</li>
</ul>
Registrations in standard Lookup:
<ul>
<li>
<a href="../org-netbeans-api-debugger">org.netbeans.spi.debugger.ContextAwareService</a> Loads all registered context-aware services from given folder.</li>
<li>
<a href="../org-netbeans-api-debugger">org.netbeans.spi.debugger.SessionProvider.ContextAware.createService</a> Loads all session providers for specific DebuggerInfo.</li>
<li>
<a href="../org-netbeans-api-debugger">org.netbeans.spi.debugger.DebuggerEngineProvider.ContextAware.createService</a> Loads all debugger engine providers for specific DebuggerInfo or Session.</li>
<li>
<a href="../org-netbeans-api-debugger">org.netbeans.api.debugger.LazyDebuggerManagerListener.ContextAware.createService</a> Loads all debbugger manager listeners and adds them to DebuggerManager.getDebuggerManager () instance.</li>
<li>
<a href="../org-netbeans-api-debugger">org.netbeans.spi.debugger.ActionsProvider.ContextAware.createService</a> Loads all action providers for context determined by it's path.</li>
<li>netbeans.debugger.registration Writes registration log to console.</li>
</ul>
</p>
<h3>What is New (see <a href="apichanges.html">all changes</a>)?</h3>
<ul>
<!--Search for dates that are later or equal to 1997-09-01 in
.-->
<!--Checking date 2016-4-18 with count of newer 0--><!--year ok-->
<li>Apr 18 '16 <a href="apichanges.html#Watch_Pin">API for pinned Watches</a>
<p>
A <code>Watch.Pin</code> base interface introduced as a basis
for specific platform-dependent and location-dependent implementations.
<code>DebuggerManager.createPinnedwatch()</code> introduced.
</p>
</li>
<!--Checking date 2015-4-30 with count of newer 1--><!--year ok-->
<li>Apr 30 '15 <a href="apichanges.html#BreakpointsDeactivation">A mechanism for activation/deactivation of engine-related breakpoints.</a>
<p>
API class <code>ActiveBreakpoints</code> and SPI interface
<code>BreakpointsActivationProvider</code> introduced. These classes
handle an activation/deactivation of engine-related breakpoints,
which is independent on their enabled/disabled state.
</p>
</li>
<!--Checking date 2014-9-8 with count of newer 2--><!--year ok-->
<li>Sep 8 '14 <a href="apichanges.html#SessionBridge">A session bridge introduced to handle mixed languages debugging.</a>
<p>
<code>SessionBridge</code> class introduced. This class allows to
suggest that some debug action can be handled by a different debugging
session. The handlers can be registered via implementations of
<code>SessionChanger</code> interface.
</p>
</li>
<!--Checking date 2012-3-27 with count of newer 3--><!--year ok-->
<li>Mar 27 '12 <a href="apichanges.html#Watch_disableable">API for changing enabled state of a Watch</a>
<p>
Two method are added to Watch class: <code>isEnabled()</code> and <code>setEnabled(boolean)</code>.
When the enabled state changes, <code>PROP_ENABLED</code> event is fired.
</p>
</li>
<!--Checking date 2011-12-19 with count of newer 4--><!--year ok-->
<li>Dec 19 '11 <a href="apichanges.html#DependentBreakpoints">Added a possibility to enable/disable other breakpoints when one is hit.</a>
<p>
Four methods are added to the Breakpoint class, that allow to
get or set a set of breakpoints, that are enabled or disabled when
the breakpoint is hit. One test method is provided, which determines
if the dependent breakpoints are supported by the implementation.
<p>
Added methods:<br>
<code>Breakpoint.canHaveDependentBreakpoints()</code>,
<code>Breakpoint.getBreakpointsToEnable()</code>,
<code>Breakpoint.setBreakpointsToEnable()</code>,
<code>Breakpoint.getBreakpointsToDisable()</code>,
<code>Breakpoint.setBreakpointsToDisable()</code>.
</p>
</p>
</li>
<!--Checking date 2010-11-12 with count of newer 5--><!--Skipped as the amount of changes is too big-->
<!--Checking date 2010-9-10 with count of newer 6--><!--Skipped as the amount of changes is too big-->
<!--Checking date 2010-2-28 with count of newer 7--><!--Skipped as the amount of changes is too big-->
<!--Checking date 2010-2-23 with count of newer 8--><!--Skipped as the amount of changes is too big-->
<!--Checking date 2010-2-11 with count of newer 9--><!--Skipped as the amount of changes is too big-->
<!--Checking date 2009-12-15 with count of newer 10--><!--Skipped as the amount of changes is too big-->
<!--Checking date 2009-2-28 with count of newer 11--><!--Skipped as the amount of changes is too big-->
<!--Checking date 2009-2-28 with count of newer 11--><!--Skipped as the amount of changes is too big-->
<!--Checking date 2009-2-2 with count of newer 13--><!--Skipped as the amount of changes is too big-->
<!--Checking date 2008-3-1 with count of newer 14--><!--Skipped as the amount of changes is too big-->
<!--Checking date 2007-5-21 with count of newer 15--><!--Skipped as the amount of changes is too big-->
<!--Checking date 2007-2-21 with count of newer 16--><!--Skipped as the amount of changes is too big-->
<!--Checking date 2007-2-1 with count of newer 17--><!--Skipped as the amount of changes is too big-->
<!--Checking date 2005-8-24 with count of newer 18--><!--Skipped as the amount of changes is too big-->
<!--Checking date 2004-11-23 with count of newer 19--><!--Skipped as the amount of changes is too big-->
<!--Checking date 2004-5-13 with count of newer 20--><!--Skipped as the amount of changes is too big-->
<!--Checking date 2004-5-9 with count of newer 21--><!--Skipped as the amount of changes is too big-->
<!--Checking date 2004-5-3 with count of newer 22--><!--Skipped as the amount of changes is too big-->
<!--Checking date 2004-4-29 with count of newer 23--><!--Skipped as the amount of changes is too big-->
</ul>
<h3>Use Cases</h3>
<answer id="arch-usecases">
<h2>UseCase I. - Install
and use CPP debugger plug-in to NetBeans + Java Debugger.</h2>
<span style="font-style: italic;">CPP debugger plug-in installs support
for debugging of some new language to the NetBeans IDE, and some new
debugging engine. This implementation of debugger should share UI
components (actions, Debugger Views, ...) with default NB Java
Debugger. It should share basic debugger model too - notion of current
context, current session, thread, call stack line, ...</span>
<br>
<br>
CPP debugger plug-in installs:<br>
<ul>
<li>New set of breakpoint types - CPPLineBreakpointType,
CPPMethodBreakpointType...
<ul>
<li>This set of breakpoint types will have special cathegory in Add
Breakpoint Dialog called "CPP". Each breakpoint type will install a new
JPanel to Add Breakpoint Dialog.</li>
<li>ToggleBreakpointAction on CPP files will create / remove a
instance of CPPLineBreakpointType.</li>
</ul>
</li>
<li>Install some watches evaluator for CPP language.</li>
<li>Some new View to Debugger Window</li>
<li>Use Termilnal Emulator in Output Window as command line interface
to CPP debugger plug-in.</li>
<li>Install / uninstall a columns to / from standard Debugger Window
Views.</li>
<li>Redefine Nodes used for representation of CPP threads, watches,
variables, callstacks, sessions and breakpoints
<ul>
<li>Add / remove some properties<br>
</li>
<li>Add / remove some actions</li>
<li>change icons</li>
<li>change display names</li>
</ul>
</li>
<li>Register CPP Actions for:
<ul>
<li>Step Into, Over, Out, Continue, Pause, Start, Kill, Restart,
Finish</li>
</ul>
</li>
<li>Some new CPP specific actions.</li>
</ul>
<br>
<h2>UseCase II. -
Install and use JSP debugger plug-in to NetBeans + Java Debugger.</h2>
<span style="font-style: italic;">JSP debugger plug-in installs support
for debugging of some new language to the NetBeans Java Debugger. It
does not contain a new debugger engine, but it delegates to standard NB
Java debugger. So it does not depends on Debugger Core API only, but it
depends on JavaDebugger API too.<br>
<br>
JSP debugger plug-in installs:<br>
</span>
<ul>
<li>New set of breakpoint types - JSPLineBreakpointType, ...
<ul>
<li>This set of breakpoint types will have special cathegory in Add
Breakpoint Dialog called "JSP". Each breakpoint type will install a new
JPanel to Add Breakpoint Dialog.</li>
<li>ToggleBreakpointAction on JSP files will create / remove a
instance of JSPLineBreakpointType.</li>
<li>JSPLineBreakpointType delegates all functionality to
JPDAClassBreakpoint and JPDALineBreakpoint<br>
</li>
</ul>
</li>
<li>Some watches evaluator for JSP language expression. This
evaluator delegates evaluation of Java expressions to standard
JavaExpressionEvaluator.<br>
</li>
<li>Redefine Nodes used for representation of JSP callstacks and
breakpoints
<ul>
<li>Add / remove some properties<br>
</li>
<li>Add / remove some actions</li>
<li>change icons</li>
<li>change display names</li>
</ul>
</li>
<li>Register JSP Actions for:
<ul>
<li>Step Into, Over, Out</li>
<li>Implementation of this actions delegates to standard Java Step
actions - it redefines Java stepping functionality.</li>
</ul>
</li>
<li>JSP debugger plug in adds support for new programming language
(JSP) to already running Java Session.<br>
</li>
</ul>
<br>
<h2>UseCase III. -
Install and use J2EE debugger plug-in to NetBeans + Java Debugger.</h2>
<span style="font-style: italic;">J2EE debugger plug-in installs some
enhancements to the standard Java Debugger. It
does not contain a new debugger engine or language support. So it does
not depends on Debugger Core API only, but it
depends on JavaDebugger API too.<br>
<br>
J2EE debugger plug-in installs:<br>
</span>
<ul>
<li>New set of breakpoint types</li>
<li>Filter for Threads and Callstack Views. This filter should allow
to:<br>
<ul>
<li>Add / remove / modify nodes in this views.</li>
</ul>
</li>
<li>Redefine Stepping (Smart Stepping) behaviour of default Java
Debugger.</li>
<li>Some new View to Debugger Window</li>
</ul>
<br>
<h2>UseCase IV. -
Install and use DBX debugger plug-in to NetBeans.</h2>
<span style="font-style: italic;">DBX debugger plug-in installs support
for debugging of some new language (CPP) to the NetBeans IDE, and some
new
debugging engine. But it contains debugger engine for Java debugging
too. DBX debugger engine has its own session management (or will have
in the next versions). One debugger engine can manage more than one
sessions. One engine supports debugging in more than one language.<br>
<br>
</span>
<h2>UseCase V. -
Implement Debugger Core UI module on top of Debugger Core API / SPI.</h2>
<span style="font-style: italic;">Debugger Core UI needs:<br>
</span>
<ul>
<li>List all breakpoint types and all breakpoint cathegories.</li>
<li>Visually customize all breakpoints - some panel.</li>
<li>Add / remove breakpoints.</li>
<li>Add / remove watches.<br>
</li>
<li>Represent breakpoints, threads, thread groups, watches, sessions,
call stack frames, locales, and fields as Nodes in NB Explorer View.</li>
<li>List all threads, thread groups, locales, watches, breakpoints,
callstack frames, and fields.</li>
<li>Listen on changes of hierarchy of threads, thread groups,
locales, watches, breakpoints, callstack frames, and fields.</li>
<li>Some current context definition. Current contet should define
current session, language, thread, and call stack line.</li>
</ul>
<br>
</answer>
<h3>Exported Interfaces</h3>
This table lists all of the module exported APIs
with
defined stability classifications. It is generated
based on answers to questions about the architecture
of the module. <a href="architecture-summary.html">Read them all</a>...
<a name="group-java">
<h5>Group of java interfaces</h5>
</a>
<table cellpadding="1" cellspacing="0" border="0" class="tablebg" width="100%">
<tr>
<td>
<table border="0" cellpadding="3" cellspacing="1" width="100%">
<tr class="tablersh">
<td align="CENTER" width="25%"><span class="titlectable">Interface Name</span></td><td align="CENTER" width="10%"><span class="titlectable">In/Out</span></td><td align="CENTER" width="10%"><span class="titlectable">Stability</span></td><td align="CENTER"><span class="titlectable">Specified in What Document?</span></td>
</tr>
<tr class="tabler">
<td>DebuggerCoreAPI</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Official">Official</a></td><td><a name="java-DebuggerCoreAPI"><a href="../org-netbeans-api-debugger">../org-netbeans-api-debugger</a>
<p></p>
</a></td>
</tr>
</table>
</td>
</tr>
</table>
<p></p>
<a name="group-lookup">
<h5>Group of lookup interfaces</h5>
</a>
<table cellpadding="1" cellspacing="0" border="0" class="tablebg" width="100%">
<tr>
<td>
<table border="0" cellpadding="3" cellspacing="1" width="100%">
<tr class="tablersh">
<td align="CENTER" width="25%"><span class="titlectable">Interface Name</span></td><td align="CENTER" width="10%"><span class="titlectable">In/Out</span></td><td align="CENTER" width="10%"><span class="titlectable">Stability</span></td><td align="CENTER"><span class="titlectable">Specified in What Document?</span></td>
</tr>
</table>
</td>
</tr>
</table>
<p></p>
<a name="group-property">
<h5>Group of property interfaces</h5>
</a>
<table cellpadding="1" cellspacing="0" border="0" class="tablebg" width="100%">
<tr>
<td>
<table border="0" cellpadding="3" cellspacing="1" width="100%">
<tr class="tablersh">
<td align="CENTER" width="25%"><span class="titlectable">Interface Name</span></td><td align="CENTER" width="10%"><span class="titlectable">In/Out</span></td><td align="CENTER" width="10%"><span class="titlectable">Stability</span></td><td align="CENTER"><span class="titlectable">Specified in What Document?</span></td>
</tr>
</table>
</td>
</tr>
</table>
<p></p>
<h3>Implementation Details</h3>
<h5>Where are the sources for the module?</h5>
<p>
<p>
The sources for the module are in the
<a href="http://hg.netbeans.org/" shape="rect">NetBeans Mercurial repositories</a>.
</p>
</p>
<h5>What do other modules need to do to declare a dependency on this one, in addition to or instead of a plain module dependency?</h5>
Nothing.
<p>
Read more about the implementation in the <a href="architecture-summary.html">answers to
architecture questions</a>.
</p></div>
</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li class="navBarCell1Rev">Overview</li>
<li>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="overview-tree.html">Tree</a></li>
<li><a href="deprecated-list.html">Deprecated</a></li>
<li><a href="index-files/index-1.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage">org.netbeans.api.debugger/1 1.56.1 </div>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?overview-summary.html" target="_top">Frames</a></li>
<li><a href="overview-summary.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small><span class="footnote">Built on September 14 2018.&nbsp;&nbsp;|&nbsp;&nbsp; Copyright &#169; 2017-2018 Apache Software Foundation. All Rights Reserved.</span></small></p>
</body>
</html>