Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: fb2cba6ac7c75b8bc42bbf2c73019231ebe932db (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
<html>
<head>
<title>3.1 Debug Platform Change Notes</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<h1>3.1 Debug Platform Change Notes</h1>
<p>This document describes new features and important changes in the 3.1 debug 
  platform, relative to the 3.0 release.</p>
  
<h2>New Features</h2>

<h3> Breakpoint Organizers</h3>
<p>The breakpoints view allows breakpoints to be displayed in groups. The platform 
  supports breakpoint groupings by breakpoint type, file, project, and breakpoint 
  working sets and resource based working sets (as well, it supports nested groupings). 
  The <code>breakpointOrganizers</code> extension point allows for other grouping 
  strategies to be contributed to the debug platform.</p>
<p>A new, optional, <code>name</code> attribute has been added to the breakpoints 
  extension point to provide a type name for breakpoints. This name appears as 
  the group label, when the user chooses to group breakpoints by type. If this 
  attribute is not specified on a breakpoint extension, the breakpoints are considered 
  to not have a type, and will be displayed in the &quot;Others&quot; group.</p>
<h3>Logical Structure Providers</h3>
<p>Logical structures have been enhanced to allow clients to more easily contribute 
  more than one logical structure for a given value. The new extension point <code>logicalStructureProviders</code> 
  allows clients to contribute an implementation of an <code>ILogicalStrugureProvider</code>. 
  A logical structure provider provides a simple way to contribute a single factory 
  of logical structures for a debug model.</p>
<p>In addition the optional interface <code>ILogicalStructureTypeDelegate2</code> 
  has been added to allow a logical structure delegate to provide a dynamic label 
  for a value's logical structure type.</p>
<h3>Process Console Enhancements</h3>
<p>The debug console has been enhanced to allow output to be multiplexed between 
  the console and/or a file. As well, the encoding used to translate output to 
  characters can now be specified. All of these options are available to the user 
  on the &quot;Common&quot; launch configuration tab. As well, the options are 
  available programmatically as launch configuration attributes. The following 
  attributes have been added to <code>org.eclipse.debug.ui.IDebugUIConstants</code>.</p>
<ul>
  <li><code>ATTR_CONSOLE_ENCODING</code></li>
  <li><code>ATTR_CAPTURE_IN_CONSOLE</code></li>
  <li><code>ATTR_CAPTURE_IN_FILE</code></li>
  <li><code>ATTR_APPEND_TO_FILE</code></li>
</ul>
<h3>Memory View</h3>
<p>The Memory view, which was first released in 3.0 as internal API, has become 
  public API in 3.1. See the new extension point <code>memoryRenderings</code>, 
  and the new API package <code>org.eclipse.debug.ui.memory</code> for more information.</p>
<h3>Parse Arguments</h3>
<p>A convenience API method has been added to <code>DebugPlugin</code> to separate 
  arguments in a single string into an array of arguments that can be passed to 
  the command line for execution. See <code>DebugPlugin.parseArguments(String)</code>.</p>
<h3>Run To Line Handler</h3>
<p>Many debuggers implement &quot;run to line&quot; functionality by creating 
  a breakpoint at the line a user has chosen to &quot;run to&quot;, and then resuming 
  execution until that breakpoint is hit. A new API class, <code>RunToLineHandler</code>, 
  has been created to simplify the task. The handler manages the &quot;skip breakpoints 
  while performing run to line&quot; user preference as well canceling the operation 
  if another breakpoint is hit before the &quot;run to line&quot; operation completes.</p>
<h3>Run To Line Action Delegate</h3>
<p>The <code>RunToLineActionDelegate</code> introduced in 3.0 can now also be 
  contributed to a view (in 3.0 it could only be contributed to an editor). The 
  action additionally implements <code>IViewActionDelegate</code>.</p>
<h3>Variable Value Editors</h3>
<p>A new extension point, <code>variableValueEditors</code>, allows debuggers 
  to contribute custom editors for modifying a variable's value selected in the 
  Variables view.</p>
<h3>Launch Shortcut Keybindings</h3>
<p>To register a key-binding for a launch shortcut, define a command with an <font face="Courier New, Courier, mono">id 
  </font>the same as the launch shortcut <font face="Courier New, Courier, mono">id</font>, 
  suffixed with the launch mode. For example, the id of the &quot;Java Application&quot; 
  launch short cut is <font face="Courier New, Courier, mono">org.eclipse.jdt.debug.ui.localJavaShortcut</font>, 
  so the command id for launching in debug mode is <font face="Courier New, Courier, mono">org.eclipse.jdt.debug.ui.localJavaShortcut.debug</font>. 
  Then define a key-binding for your command.</p>
<p>When the command is invoked via the key-binding, the selection or active editor 
  will be used as the target for the launch shortcut's launch method. The shortcut 
  is only invoked if the shortcut is enabled for the selection or editor.</p>
<h3>Source Lookup/Display Facility</h3>
<p>API methods have been added to <code>DebugUITools</code> to facilitate source 
  lookup and display. See the methods <code>lookupSource(Object, ISourceLocator)</code> 
  and <code>displaySource(ISourceLookupResult, IWorkbenchPage)</code>. When a 
  source lookup result for a stack frame is displayed, the open editor is also 
  annotated with an appropriate instruction pointer.</p>
<h3>Watchpoints (IWatchpoint) and Images</h3>
<p>As watchpoints are common to many debug architectures, the notion of an IWatchpoint 
  has been added to the debug model. A watch point is a breakpoint that suspends 
  execution when an associated variable is read and/or written. As well, default 
  images for rendering watchpoints have been added to the debug platform.</p>
<h3>Colors and Fonts for Debug Elements</h3>
<p>In 3.1, debug model presentations (<code>IDebugModelPresentation</code>) may 
  optionally implement <code>IColorProvider </code>and <code>IFontProvider </code>to 
  override default fonts and colors for debug elements.</p>
<h3>Inserting Elements into Debug View</h3>
<p>The Debug view allows for debug models to insert arbitrary elements into the 
  debug model element hierarchy. For example, the Java debugger now displays lock 
  information directly in the view. To override the default presentation in the 
  view, a debugger must provide an <code>IWorkbenchAdapter</code> or <code>IDeferredWorkbenchAdapter 
  </code>for the relevant element(s). The debug platform provides default adapters 
  for the standard debug elements.</p>
<p>Debug elements were always required to implement <code>IAdaptable</code>, and 
  now must be subclasses of <code>PlatformObject</code> in order for workbench 
  adapters to be properly registered and retrieved for debug elements.</p>
<h3>Abstract Debug Element</h3>
<p>An abstract implementation of a debug element is provided in 3.1 - <code>DebugElement</code>. 
  Clients implementing debug models may choose to subclass this class when implementing 
  debug models. The class provides convenience methods for firing debug events, 
  reporting exceptions, and retrieving adapters.</p>
<h3>Drop to Frame Platform Action/Interface</h3>
<p>The debug platform provides a &quot;drop to frame&quot; action and corresponding 
  capability interface (<code>IDropToFrame</code>). Debug elements supporting 
  the capability should implement this new interface to share the global action.</p>
<h3>Context Menu Launching in Editors</h3>
<p>Launching from the context menu (for example, &quot;Run As &gt; Java Application&quot;), 
  is now available in editors (In 3.1, this was only available in the package 
  explorer and resource navigator). To leverage this feature, the editor input 
  associated with a executable file must have an <code>ILaunchable</code> adapter 
  registered for it.</p>
<h3>Support for Unregistered Launch</h3>
<p>The launch framework allows for a launch to be performed without registering 
  a launch object with the launch manager. An unregistered launch does not appear 
  in the Debug view. A new launch method has been added to <code>ILaunchConfiguration</code>, 
  accepting a boolean argument determining whether the launch should be registered 
  (<code>launch(String mode, IProgressMonitor monitor, boolean build, boolean 
  register)</code>), and a new method has been added to <code>ILaunchManager</code> 
  to determine if a launch is registered (<code>isRegistered(ILaunch launch)</code>).</p>
<h3>Reusable Breakpoint Ruler Toggle Actions</h3>
<p>Providing double-click breakpoint creation in an editor's vertical ruler is 
  a common feature for debuggers. The debug platform provides two actions to facilitate 
  this: <code>RulerToggleBreakpointActionDelegate </code>and <code>ToggleBreakpointAction</code>. 
  A debugger must contribute the <code>RulerToggleBreakpointActionDelegate</code> 
  to the appropriate editor (see javadoc for more details), and also register 
  an <code>IToggleBreakpointsTarget </code>adapter with the editor.</p>
<h3>Environment Variables Case Preservation</h3>
<p>Support has been added to <code>ILaunchManager</code> to retrieve the environment 
  variables defined in the OS preserving case. This is important on the WIN32 
  operating system. Although WIN32 is case insensitive, depending on what you 
  intend to do with the environment, the lack of normalization may or may not 
  cause problems. This method <code>getNativeEnvironmentCasePreserved()</code> returns 
  mixed-case keys using the variable names recorded by the OS. Use <code>getNativeEnvironment()</code> 
  instead to get a WIN32 system environment where all keys have been normalized 
  to uppercase.</p>
<h3>Closing an Input Stream</h3>
<p>An optional extension, <code>IStreamsProxy2</code>, can be implemented by implementations 
  of <code>IStreamsProxy</code>. When implemented, it allows the input stream 
  associated with a process to be closed. This is used to allow the user to signal 
  EOF when typing in the console.</p>
<h3>Launch in Debug Mode when Workspace Contains Breakpoints</h3>
<p>Since 3.0, The user preference &quot;Launch in debug mode when workspace contains 
  breakpoints&quot; is used to control whether a launch should use debug mode 
  even when &quot;run&quot; is pressed by the user, based on the presence of breakpoints 
  in the workspace. A new method, <code>getBreakpoints(ILaunchConfiguration configuration)</code>, 
  has been added to the abstract implementation of <code>LaunchConfigurationDelegate</code>, 
  to determine which breakpoints should be considered as relevant for a particular 
  launch. By default, all breakpoints in the workspace are considered, but subclasses 
  may override. For example, the Java Application launcher only considers Java 
  breakpoints.</p>
<h3>Case Insensitive Source Lookup and Relative Paths</h3>
<p>The debug platform's source lookup facilities now lookup source in folders 
  and directories in a case insensitive manner on platforms that are case insensitive. 
  As well, relative path names are supported in folders and directories.</p>
<h2>Changes</h2>
<h3>Debug Event Dispatch</h3>
<p>In releases 3.0 and prior, calling <code>DebugPlugin.fireDebugEventSet(DebugEvent[])</code> 
  resulted in debug events being fired synchronously in the calling thread. In 
  3.1, debug event set listeners are notified of debug events asynchronously in 
  a different thread than the event is reported in.</p>
<h3>Debug Actions and Content in Background Jobs</h3>
<p>In 3.1, many actions that call debug element APIs (like &quot;stepOver&quot;), 
  now create jobs to communicate with debug elements in background threads. This 
  avoids blocking the UI in the case that a debug element method requires communication 
  with a debug target that can block, hang, or timeout. Similarly, many of the 
  debug views populate their content using background jobs to avoid blocking the 
  UI thread. The net difference is that in 3.1, more than one thread might be 
  accessing a debug model's APIs where previously only the UI thread was.</p>
<h3>Contextual Launch from Top Level Run/Debug Menus</h3>
<p>The top level menus no longer support the perspective element, and launch shortcuts 
  must specify a &quot;<code>contextualLaunch</code>&quot; element to appear in 
  the Run/Debug cascade menus.</p>
<p>&nbsp;</p>
</body>
</html>

Back to the top