4
Node:<a name="Top">Top</a>,
5
Next:<a rel="next" accesskey="n" href="#Summary">Summary</a>,
6
Up:<a rel="up" accesskey="u" href="#dir">(dir)</a>
12
<h2 class="unnumbered">Debugging with DDD</h2>
14
<p><small>DDD</small> is a graphical front-end for <small>GDB</small> and other command-line
17
<p>This is the First Edition of <cite>Debugging with
18
</cite><small>DDD</small><cite></cite>, 15 January, 2004, for <small>DDD</small> Version 3.3.9-test2.
21
<li><a accesskey="1" href="#Summary">Summary</a>: Summary of <small>DDD</small>.
24
</p><li><a accesskey="2" href="#Sample%20Session">Sample Session</a>: A sample <small>DDD</small> session.
25
<li><a accesskey="3" href="#Invocation">Invocation</a>: Getting in and out of <small>DDD</small>.
26
<li><a accesskey="4" href="#Windows">Windows</a>: The <small>DDD</small> windows, menus, and buttons.
27
<li><a accesskey="5" href="#Navigating">Navigating</a>: Moving through the source code.
28
<li><a accesskey="6" href="#Stopping">Stopping</a>: Making your program stop at specific locations.
29
<li><a accesskey="7" href="#Running">Running</a>: Running programs under <small>DDD</small>.
30
<li><a accesskey="8" href="#Examining%20Data">Examining Data</a>: Examining variable values and data structures.
31
<li><a accesskey="9" href="#Machine-Level%20Debugging">Machine-Level Debugging</a>: Examining machine code and registers.
32
<li><a href="#Changing%20the%20Program">Changing the Program</a>: Changing source and object code.
33
<li><a href="#Commands">Commands</a>: Entering and editing <small>DDD</small> commands.
36
</p><li><a href="#Application%20Defaults">Application Defaults</a>: Resources used in <small>DDD</small>.
37
<li><a href="#Bugs">Bugs</a>: How, when, and why to report <small>DDD</small> bugs.
38
<li><a href="#Configuration%20Notes">Configuration Notes</a>: Configuration-specific notes.
39
<li><a href="#Dirty%20Tricks">Dirty Tricks</a>: Room for your contributions.
40
<li><a href="#Extending">Extending</a>: Extending <small>DDD</small>.
41
<li><a href="#FAQ">FAQ</a>: Frequently Answered Questions.
42
<li><a href="#License">License</a>: The <small>DDD</small> license.
43
<li><a href="#Help%20and%20Assistance">Help and Assistance</a>: Mailing Lists and other resources.
44
<li><a href="#Documentation%20License">Documentation License</a>: The license of this document.
47
</p><li><a href="#Label%20Index">Label Index</a>: All labels shown on the <small>DDD</small> <small>GUI</small>.
48
<li><a href="#Key%20Index">Key Index</a>: Keys used to control <small>DDD</small>.
49
<li><a href="#Command%20Index">Command Index</a>: Commands that can be typed within <small>DDD</small>.
50
<li><a href="#Resource%20Index">Resource Index</a>: All resources and environment variables.
51
<li><a href="#File%20Index">File Index</a>: All programs and files referenced by <small>DDD</small>.
52
<li><a href="#Concept%20Index">Concept Index</a>: All concepts as mentioned in this manual.
57
<div class="contents">
58
<h2>Table of Contents</h2>
60
<li><a name="toc_Top" href="#Top">Debugging with DDD</a>
61
<li><a name="toc_Summary" href="#Summary">Summary of DDD</a>
63
<li><a href="#About%20this%20Manual">About this Manual</a>
64
<li><a href="#Typographic%20Conventions">Typographic conventions</a>
65
<li><a href="#Free%20Software">Free software</a>
66
<li><a href="#Getting%20%3csmall%3eDDD%3c%2fsmall%3e">Getting DDD</a>
67
<li><a href="#Contributors">Contributors to DDD</a>
68
<li><a href="#History">History of DDD</a>
70
<li><a name="toc_Sample%20Session" href="#Sample%20Session">A Sample DDD Session</a>
72
<li><a href="#Sample%20Program">Sample Program</a>
74
<li><a name="toc_Invocation" href="#Invocation">Getting In and Out of DDD</a>
76
<li><a href="#Invoking">Invoking DDD</a>
78
<li><a href="#Choosing%20an%20Inferior%20Debugger">Choosing an Inferior Debugger</a>
79
<li><a href="#Options">DDD Options</a>
80
<li><a href="#X%20Options">X Options</a>
81
<li><a href="#Inferior%20Debugger%20Options">Inferior Debugger Options</a>
83
<li><a href="#GDB%20Options">GDB Options</a>
84
<li><a href="#DBX%20and%20Ladebug%20Options">DBX and Ladebug Options</a>
85
<li><a href="#XDB%20Options">XDB Options</a>
86
<li><a href="#JDB%20Options">JDB Options</a>
87
<li><a href="#PYDB%20Options">PYDB Options</a>
88
<li><a href="#Perl%20Options">Perl Options</a>
89
<li><a href="#Bash%20Options">Bash Options</a>
91
<li><a href="#Multiple%20Instances">Multiple DDD Instances</a>
92
<li><a href="#X%20Warnings">X warnings</a>
94
<li><a href="#Quitting">Quitting DDD</a>
95
<li><a href="#Sessions">Persistent Sessions</a>
97
<li><a href="#Saving%20Sessions">Saving Sessions</a>
98
<li><a href="#Resuming%20Sessions">Resuming Sessions</a>
99
<li><a href="#Deleting%20Sessions">Deleting Sessions</a>
100
<li><a href="#Customizing%20Sessions">Customizing Sessions</a>
102
<li><a href="#Remote%20Debugging">Remote Debugging</a>
104
<li><a href="#Remote%20Host">Running DDD on a Remote Host</a>
105
<li><a href="#Remote%20Debugger">Using DDD with a Remote Inferior Debugger</a>
107
<li><a href="#Customizing%20Remote%20Debugging">Customizing Remote Debugging</a>
109
<li><a href="#Remote%20Program">Debugging a Remote Program</a>
111
<li><a href="#Customizing%20Debugger%20Interaction">Customizing Interaction with the Inferior Debugger</a>
113
<li><a href="#Debugger%20Invocation">Invoking an Inferior Debugger</a>
114
<li><a href="#Debugger%20Initialization">Initializing the Inferior Debugger</a>
116
<li><a href="#GDB%20Initialization">GDB Initialization</a>
117
<li><a href="#DBX%20Initialization">DBX Initialization</a>
118
<li><a href="#XDB%20Initialization">XDB Initialization</a>
119
<li><a href="#JDB%20Initialization">JDB Initialization</a>
120
<li><a href="#PYDB%20Initialization">PYDB Initialization</a>
121
<li><a href="#Perl%20Initialization">Perl Initialization</a>
122
<li><a href="#Bash%20Initialization">Bash Initialization</a>
123
<li><a href="#Finding%20a%20Place%20to%20Start">Finding a Place to Start</a>
124
<li><a href="#Opening%20the%20Selection">Opening the Selection</a>
126
<li><a href="#Debugger%20Communication">Communication with the Inferior Debugger</a>
129
<li><a name="toc_Windows" href="#Windows">The DDD Windows</a>
131
<li><a href="#Menu%20Bar">The Menu Bar</a>
133
<li><a href="#File%20Menu">The File Menu</a>
134
<li><a href="#Edit%20Menu">The Edit Menu</a>
135
<li><a href="#View%20Menu">The View Menu</a>
136
<li><a href="#Program%20Menu">The Program Menu</a>
137
<li><a href="#Commands%20Menu">The Commands Menu</a>
138
<li><a href="#Status%20Menu">The Status Menu</a>
139
<li><a href="#Source%20Menu">The Source Menu</a>
140
<li><a href="#Data%20Menu">The Data Menu</a>
141
<li><a href="#Maintenance%20Menu">The Maintenance Menu</a>
142
<li><a href="#Help%20Menu">The Help Menu</a>
143
<li><a href="#Customizing%20the%20Menu%20Bar">Customizing the Menu Bar</a>
145
<li><a href="#Auto-Raise%20Menus">Auto-Raise Menus</a>
146
<li><a href="#Customizing%20the%20Edit%20Menu">Customizing the Edit Menu</a>
149
<li><a href="#Tool%20Bar">The Tool Bar</a>
151
<li><a href="#Customizing%20the%20Tool%20Bar">Customizing the Tool Bar</a>
153
<li><a href="#Command%20Tool">The Command Tool</a>
155
<li><a href="#Customizing%20the%20Command%20Tool">Customizing the Command Tool</a>
157
<li><a href="#Disabling%20the%20Command%20Tool">Disabling the Command Tool</a>
159
<li><a href="#Customizing%20Tool%20Position">Command Tool Position</a>
161
<li><a href="#Customizing%20Tool%20Decoration">Customizing Tool Decoration</a>
164
<li><a href="#Getting%20Help">Getting Help</a>
165
<li><a href="#Undo%20and%20Redo">Undoing and Redoing Commands</a>
166
<li><a href="#Customizing">Customizing DDD</a>
168
<li><a href="#How%20Customizing%20Works">How Customizing DDD Works</a>
170
<li><a href="#Resources">Resources</a>
171
<li><a href="#Changing%20Resources">Changing Resources</a>
172
<li><a href="#Saving%20Options">Saving Options</a>
174
<li><a href="#Customizing%20Help">Customizing DDD Help</a>
176
<li><a href="#Button%20tips">Button Tips</a>
177
<li><a href="#Tip%20of%20the%20day">Tip of the day</a>
178
<li><a href="#Help%20Helpers">Help Helpers</a>
180
<li><a href="#Customizing%20Undo">Customizing Undo</a>
181
<li><a href="#Customizing%20Windows">Customizing the DDD Windows</a>
183
<li><a href="#Splash%20Screen">Splash Screen</a>
184
<li><a href="#Window%20Layout">Window Layout</a>
185
<li><a href="#Customizing%20Fonts">Customizing Fonts</a>
186
<li><a href="#Toggling%20Windows">Toggling Windows</a>
187
<li><a href="#Text%20Fields">Text Fields</a>
188
<li><a href="#Icons">Icons</a>
189
<li><a href="#Adding%20Buttons">Adding Buttons</a>
190
<li><a href="#More%20Customizations">More Customizations</a>
192
<li><a href="#Debugger%20Settings">Debugger Settings</a>
195
<li><a name="toc_Navigating" href="#Navigating">Navigating through the Code</a>
197
<li><a href="#Compiling%20for%20Debugging">Compiling for Debugging</a>
198
<li><a href="#Opening%20Files">Opening Files</a>
200
<li><a href="#Opening%20Programs">Opening Programs</a>
201
<li><a href="#Opening%20Core%20Dumps">Opening Core Dumps</a>
202
<li><a href="#Opening%20Source%20Files">Opening Source Files</a>
203
<li><a href="#Filtering%20Files">Filtering Files</a>
205
<li><a href="#Looking%20up%20Items">Looking up Items</a>
207
<li><a href="#Looking%20up%20Definitions">Looking up Definitions</a>
208
<li><a href="#Textual%20Search">Textual Search</a>
209
<li><a href="#Looking%20up%20Previous%20Locations">Looking up Previous Locations</a>
210
<li><a href="#Source%20Path">Specifying Source Directories</a>
212
<li><a href="#Customizing%20Source">Customizing the Source Window</a>
214
<li><a href="#Customizing%20Glyphs">Customizing Glyphs</a>
215
<li><a href="#Customizing%20Searching">Customizing Searching</a>
216
<li><a href="#Customizing%20Source%20Appearance">Customizing Source Appearance</a>
217
<li><a href="#Customizing%20Source%20Scrolling">Customizing Source Scrolling</a>
218
<li><a href="#Customizing%20Source%20Lookup">Customizing Source Lookup</a>
219
<li><a href="#Customizing%20File%20Filtering">Customizing File Filtering</a>
222
<li><a name="toc_Stopping" href="#Stopping">Stopping the Program</a>
224
<li><a href="#Breakpoints">Breakpoints</a>
226
<li><a href="#Setting%20Breakpoints">Setting Breakpoints</a>
228
<li><a href="#Setting%20Breakpoints">Setting Breakpoints by Location</a>
229
<li><a href="#Setting%20Breakpoints">Setting Breakpoints by Name</a>
230
<li><a href="#Setting%20Breakpoints">Setting Regexp Breakpoints</a>
232
<li><a href="#Deleting%20Breakpoints">Deleting Breakpoints</a>
233
<li><a href="#Disabling%20Breakpoints">Disabling Breakpoints</a>
234
<li><a href="#Temporary%20Breakpoints">Temporary Breakpoints</a>
235
<li><a href="#Editing%20Breakpoint%20Properties">Editing Breakpoint Properties</a>
236
<li><a href="#Breakpoint%20Conditions">Breakpoint Conditions</a>
237
<li><a href="#Breakpoint%20Ignore%20Counts">Breakpoint Ignore Counts</a>
238
<li><a href="#Breakpoint%20Commands">Breakpoint Commands</a>
239
<li><a href="#Moving%20and%20Copying%20Breakpoints">Moving and Copying Breakpoints</a>
240
<li><a href="#Looking%20up%20Breakpoints">Looking up Breakpoints</a>
241
<li><a href="#Editing%20all%20Breakpoints">Editing all Breakpoints</a>
242
<li><a href="#Hardware-Assisted%20Breakpoints">Hardware-Assisted Breakpoints</a>
244
<li><a href="#Watchpoints">Watchpoints</a>
246
<li><a href="#Setting%20Watchpoints">Setting Watchpoints</a>
247
<li><a href="#Editing%20Watchpoint%20Properties">Editing Watchpoint Properties</a>
248
<li><a href="#Editing%20all%20Watchpoints">Editing all Watchpoints</a>
249
<li><a href="#Deleting%20Watchpoints">Deleting Watchpoints</a>
251
<li><a href="#Interrupting">Interrupting</a>
252
<li><a href="#Stopping%20X%20Programs">Stopping X Programs</a>
254
<li><a href="#Customizing%20Grab%20Checking">Customizing Grab Checking</a>
257
<li><a name="toc_Running" href="#Running">Running the Program</a>
259
<li><a href="#Starting%20Program%20Execution">Starting Program Execution</a>
261
<li><a href="#Arguments">Your Program's Arguments</a>
262
<li><a href="#Environment">Your Program's Environment</a>
263
<li><a href="#Working%20Directory">Your Program's Working Directory</a>
264
<li><a href="#Input%2fOutput">Your Program's Input and Output</a>
266
<li><a href="#Using%20the%20Execution%20Window">Using the Execution Window</a>
268
<li><a href="#Customizing%20the%20Execution%20Window">Customizing the Execution Window</a>
270
<li><a href="#Attaching%20to%20a%20Process">Attaching to a Running Process</a>
272
<li><a href="#Customizing%20Attaching%20to%20Processes">Customizing Attaching to Processes</a>
274
<li><a href="#Program%20Stop">Program Stops</a>
275
<li><a href="#Resuming%20Execution">Resuming Execution</a>
277
<li><a href="#Resuming%20Execution">Continuing</a>
278
<li><a href="#Resuming%20Execution">Stepping one Line</a>
279
<li><a href="#Resuming%20Execution">Continuing to the Next Line</a>
280
<li><a href="#Resuming%20Execution">Continuing Until Here</a>
281
<li><a href="#Resuming%20Execution">Continuing Until a Greater Line is Reached</a>
282
<li><a href="#Resuming%20Execution">Continuing Until Function Returns</a>
284
<li><a href="#Continuing%20Somewhere%20Else">Continuing at a Different Address</a>
285
<li><a href="#Stack">Examining the Stack</a>
287
<li><a href="#Frames">Stack Frames</a>
288
<li><a href="#Backtraces">Backtraces</a>
289
<li><a href="#Selecting%20a%20frame">Selecting a Frame</a>
291
<li><a href="#Undoing%20Program%20Execution">"Undoing" Program Execution</a>
292
<li><a href="#Threads">Examining Threads</a>
293
<li><a href="#Signals">Handling Signals</a>
294
<li><a href="#Killing%20the%20Program">Killing the Program</a>
296
<li><a name="toc_Examining%20Data" href="#Examining%20Data">Examining Data</a>
298
<li><a href="#Value%20Tips">Showing Simple Values using Value Tips</a>
299
<li><a href="#Printing%20Values">Printing Simple Values in the Debugger Console</a>
300
<li><a href="#Displaying%20Values">Displaying Complex Values in the Data Window</a>
302
<li><a href="#Display%20Basics">Display Basics</a>
304
<li><a href="#Creating%20Single%20Displays">Creating Single Displays</a>
305
<li><a href="#Selecting%20Displays">Selecting Displays</a>
306
<li><a href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>
307
<li><a href="#Rotating%20Displays">Rotating Displays</a>
308
<li><a href="#Displaying%20Local%20Variables">Displaying Local Variables</a>
309
<li><a href="#Displaying%20Program%20Status">Displaying Program Status</a>
310
<li><a href="#Refreshing%20the%20Data%20Window">Refreshing the Data Window</a>
311
<li><a href="#Placement">Display Placement</a>
312
<li><a href="#Clustering">Clustering Displays</a>
313
<li><a href="#Creating%20Multiple%20Displays">Creating Multiple Displays</a>
314
<li><a href="#Editing%20all%20Displays">Editing all Displays</a>
315
<li><a href="#Deleting%20Displays">Deleting Displays</a>
317
<li><a href="#Arrays">Arrays</a>
319
<li><a href="#Array%20Slices">Array Slices</a>
320
<li><a href="#Repeated%20Values">Repeated Values</a>
321
<li><a href="#Arrays%20as%20Tables">Arrays as Tables</a>
323
<li><a href="#Assignment">Assignment to Variables</a>
324
<li><a href="#Examining%20Structures">Examining Structures</a>
326
<li><a href="#Dependent%20Values">Displaying Dependent Values</a>
327
<li><a href="#Dereferencing%20Pointers">Dereferencing Pointers</a>
328
<li><a href="#Shared%20Structures">Shared Structures</a>
329
<li><a href="#Display%20Shortcuts">Display Shortcuts</a>
331
<li><a href="#Customizing%20Displays">Customizing Displays</a>
333
<li><a href="#Using%20Data%20Themes">Using Data Themes</a>
334
<li><a href="#Applying%20Data%20Themes%20to%20Several%20Values">Applying Data Themes to Several Values</a>
335
<li><a href="#Editing%20Themes">Editing Themes</a>
336
<li><a href="#Writing%20Data%20Themes">Writing Data Themes</a>
337
<li><a href="#Display%20Resources">Display Resources</a>
338
<li><a href="#VSL%20Resources">VSL Resources</a>
340
<li><a href="#Layouting%20the%20Graph">Layouting the Graph</a>
342
<li><a href="#Moving%20Displays">Moving Displays</a>
343
<li><a href="#Scrolling%20Data">Scrolling Data</a>
344
<li><a href="#Aligning%20Displays">Aligning Displays</a>
345
<li><a href="#Automatic%20Layout">Automatic Layout</a>
346
<li><a href="#Rotating%20the%20Graph">Rotating the Graph</a>
348
<li><a href="#Printing%20the%20Graph">Printing the Graph</a>
350
<li><a href="#Plotting%20Values">Plotting Values</a>
352
<li><a href="#Plotting%20Arrays">Plotting Arrays</a>
353
<li><a href="#Plot%20Appearance">Changing the Plot Appearance</a>
354
<li><a href="#Scalars%20and%20Composites">Plotting Scalars and Composites</a>
355
<li><a href="#Plotting%20Histories">Plotting Display Histories</a>
356
<li><a href="#Printing%20Plots">Printing Plots</a>
357
<li><a href="#Entering%20Plotting%20Commands">Entering Plotting Commands</a>
358
<li><a href="#Exporting%20Plot%20Data">Exporting Plot Data</a>
359
<li><a href="#Animating%20Plots">Animating Plots</a>
360
<li><a href="#Customizing%20Plots">Customizing Plots</a>
362
<li><a href="#Gnuplot%20Invocation">Gnuplot Invocation</a>
363
<li><a href="#Gnuplot%20Settings">Gnuplot Settings</a>
366
<li><a href="#Examining%20Memory">Examining Memory</a>
368
<li><a name="toc_Machine-Level%20Debugging" href="#Machine-Level%20Debugging">Machine-Level Debugging</a>
370
<li><a href="#Machine%20Code">Examining Machine Code</a>
371
<li><a href="#Machine%20Code%20Execution">Machine Code Execution</a>
372
<li><a href="#Registers">Examining Registers</a>
373
<li><a href="#Customizing%20Machine%20Code">Customizing Machine Code</a>
375
<li><a name="toc_Changing%20the%20Program" href="#Changing%20the%20Program">Changing the Program</a>
377
<li><a href="#Editing%20Source%20Code">Editing Source Code</a>
379
<li><a href="#Customizing%20Editing">Customizing Editing</a>
380
<li><a href="#In-Place%20Editing">In-Place Editing</a>
382
<li><a href="#Recompiling">Recompiling</a>
383
<li><a href="#Patching">Patching</a>
385
<li><a name="toc_Commands" href="#Commands">The Command-Line Interface</a>
387
<li><a href="#Entering%20Commands">Entering Commands</a>
389
<li><a href="#Command%20Completion">Command Completion</a>
390
<li><a href="#Command%20History">Command History</a>
391
<li><a href="#Typing%20in%20the%20Source%20Window">Typing in the Source Window</a>
393
<li><a href="#TTY%20mode">Entering Commands at the TTY</a>
394
<li><a href="#Integrating%20%3csmall%3eDDD%3c%2fsmall%3e">Integrating DDD</a>
396
<li><a href="#Integrating%20%3csmall%3eDDD%3c%2fsmall%3e">Using DDD with Emacs</a>
397
<li><a href="#Integrating%20%3csmall%3eDDD%3c%2fsmall%3e">Using DDD with XEmacs</a>
398
<li><a href="#Integrating%20%3csmall%3eDDD%3c%2fsmall%3e">Using DDD with <small>XXGDB</small></a>
400
<li><a href="#Defining%20Buttons">Defining Buttons</a>
402
<li><a href="#Customizing%20Buttons">Customizing Buttons</a>
404
<li><a href="#Defining%20Commands">Defining Commands</a>
406
<li><a href="#GDB%20Simple%20Commands">Defining Simple Commands using GDB</a>
407
<li><a href="#GDB%20Argument%20Commands">Defining Argument Commands using GDB</a>
408
<li><a href="#Commands%20with%20Other%20Debuggers">Defining Commands using Other Debuggers</a>
411
<li><a name="toc_Application%20Defaults" href="#Application%20Defaults">Application Defaults</a>
413
<li><a href="#Actions">Actions</a>
415
<li><a href="#General%20Actions">General Actions</a>
416
<li><a href="#Data%20Display%20Actions">Data Display Actions</a>
417
<li><a href="#Debugger%20Console%20Actions">Debugger Console Actions</a>
418
<li><a href="#Source%20Window%20Actions">Source Window Actions</a>
420
<li><a href="#Images">Images</a>
422
<li><a name="toc_Bugs" href="#Bugs">Bugs and How To Report Them</a>
424
<li><a href="#Where%20to%20Send%20Bug%20Reports">Where to Send Bug Reports</a>
425
<li><a href="#Is%20it%20a%20%3csmall%3eDDD%3c%2fsmall%3e%20Bug%3f">Is it a DDD Bug?</a>
426
<li><a href="#How%20to%20Report%20Bugs">How to Report Bugs</a>
427
<li><a href="#Bug%20Reports">What to Include in a Bug Report</a>
428
<li><a href="#Diagnostics">Getting Diagnostics</a>
430
<li><a href="#Logging">Logging</a>
432
<li><a href="#Disabling%20Logging">Disabling Logging</a>
434
<li><a href="#Debugging%20%3csmall%3eDDD%3c%2fsmall%3e">Debugging DDD</a>
435
<li><a href="#Customizing%20Diagnostics">Customizing Diagnostics</a>
438
<li><a name="toc_Configuration%20Notes" href="#Configuration%20Notes">Configuration Notes</a>
440
<li><a href="#GDB">Using DDD with GDB</a>
442
<li><a href="#WDB">Using DDD with WDB</a>
443
<li><a href="#WindRiver%20GDB">Using DDD with WindRiver GDB (Tornado)</a>
445
<li><a href="#DBX">Using DDD with DBX</a>
446
<li><a href="#Ladebug">Using DDD with Ladebug</a>
447
<li><a href="#XDB">Using DDD with XDB</a>
448
<li><a href="#JDB">Using DDD with JDB</a>
449
<li><a href="#Perl">Using DDD with Perl</a>
450
<li><a href="#Bash">Using DDD with Bash</a>
451
<li><a href="#LessTif">Using DDD with LessTif</a>
453
<li><a name="toc_Dirty%20Tricks" href="#Dirty%20Tricks">Dirty Tricks</a>
454
<li><a name="toc_Extending" href="#Extending">Extending DDD</a>
455
<li><a name="toc_FAQ" href="#FAQ">Frequently Answered Questions</a>
456
<li><a name="toc_License" href="#License">GNU General Public License</a>
458
<li><a href="#License">Preamble</a>
459
<li><a href="#License">How to Apply These Terms to Your New Programs</a>
461
<li><a name="toc_Help%20and%20Assistance" href="#Help%20and%20Assistance">Help and Assistance</a>
462
<li><a name="toc_Documentation%20License" href="#Documentation%20License">GNU Free Documentation License</a>
464
<li><a href="#Documentation%20License">ADDENDUM: How to use this License for your documents</a>
466
<li><a name="toc_Label%20Index" href="#Label%20Index">Label Index</a>
467
<li><a name="toc_Key%20Index" href="#Key%20Index">Key Index</a>
468
<li><a name="toc_Command%20Index" href="#Command%20Index">Command Index</a>
469
<li><a name="toc_Resource%20Index" href="#Resource%20Index">Resource Index</a>
470
<li><a name="toc_File%20Index" href="#File%20Index">File Index</a>
471
<li><a name="toc_Concept%20Index" href="#Concept%20Index">Concept Index</a>
475
<p>Copyright © 2004 Universit�t des Saarlandes <br>
476
Lehrstuhl Softwaretechnik <br>
477
Postfach 15 11 50 <br>
478
66041 Saarbr�cken <br>
481
<p>Distributed by <br>
482
Free Software Foundation, Inc. <br>
483
59 Temple Place - Suite 330 <br>
484
Boston, MA 02111-1307 <br>
487
<p><small>DDD</small> and this manual are available via
488
<a href="http://www.gnu.org/software/ddd/">the <small>DDD</small> <small>WWW</small> page</a>.
490
<p>Permission is granted to copy, distribute and/or modify this document
491
under the terms of the GNU Free Documentation License, Version 1.1 or
492
any later version published by the Free Software Foundation; with no
493
Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A
494
copy of the license is included in the section entitled "GNU Free
495
Documentation License"; See <a href="#Documentation%20License">Documentation License</a>, for details.
497
<p>Send questions, comments, suggestions, etc. to <a href="mailto:ddd@gnu.org">ddd@gnu.org</a>. <br>
498
Send bug reports to <a href="mailto:bug-ddd@gnu.org">bug-ddd@gnu.org</a>. <br>
503
Node:<a name="Summary">Summary</a>,
504
Next:<a rel="next" accesskey="n" href="#Sample%20Session">Sample Session</a>,
505
Previous:<a rel="previous" accesskey="p" href="#Top">Top</a>,
506
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
512
<h2 class="unnumbered">Summary of DDD</h2>
514
<p>The purpose of a debugger such as <small>DDD</small> is to allow you to see
515
what is going on "inside" another program while it executes--or what
516
another program was doing at the moment it crashed.
518
<p><small>DDD</small> can do four main kinds of things (plus other things in
519
support of these) to help you catch bugs in the act:
522
<li>Start your program, specifying anything that might affect its behavior.
523
<li>Make your program stop on specified conditions.
524
<li>Examine what has happened, when your program has stopped.
525
<li>Change things in your program, so you can experiment with correcting the
526
effects of one bug and go on to learn about another.
529
<p>Technically speaking, <small>DDD</small> is a front-end to a command-line
530
debugger (called <dfn>inferior debugger</dfn>, because it lies at the layer
531
beneath <small>DDD</small>). <small>DDD</small> supports the following inferior
535
<li>To debug <em>executable binaries</em>, you can use <small>DDD</small> with <dfn></dfn><small>GDB</small><dfn></dfn>,
536
<dfn></dfn><small>DBX</small><dfn></dfn>, <dfn>Ladebug</dfn>, or <dfn></dfn><small>XDB</small><dfn></dfn>.
539
<li><dfn></dfn><small>GDB</small><dfn></dfn>, the <small>GNU</small> debugger, is the recommended inferior debugger
540
for <small>DDD</small>. <small>GDB</small> supports native executables binaries originally
541
written in C, C++, Java, Modula-2, Modula-3, Pascal, Chill, Ada, and
542
FORTRAN. (see <a href="gdb.html#Languages">Using <small>GDB</small> with Different Languages</a>, for
543
information on language support in <small>GDB</small>.)
545
<li>As an alternative to <small>GDB</small>, you can use <small>DDD</small> with the <dfn></dfn><small>DBX</small><dfn></dfn>
546
debugger, as found on several <small>UNIX</small> systems. Most <small>DBX</small> incarnations offer
547
fewer features than <small>GDB</small>, and some of the more advanced <small>DBX</small> features may
548
not be supported by <small>DDD</small>. However, using <small>DBX</small> may be useful if
549
<small>GDB</small> does not understand or fully support the debugging information as
550
generated by your compiler.
552
<li>As an alternative to <small>GDB</small> and <small>DBX</small>, you can use <small>DDD</small> with
553
<dfn>Ladebug</dfn>, as found on Compaq and DEC systems. Ladebug offers fewer
554
features than <small>GDB</small>, and some of the more advanced Ladebug features may
555
not be supported by <small>DDD</small>. However, using Ladebug may be useful if
556
<small>GDB</small> or <small>DBX</small> do not understand or fully support the debugging
557
information as generated by your compiler.<a rel="footnote" href="#fn-1"><sup>1</sup></a>
559
<li>As another alternative to <small>GDB</small>, you can use <small>DDD</small> with the
560
<dfn></dfn><small>XDB</small><dfn></dfn> debugger, as found on <small>HP-UX</small>
561
systems.<a rel="footnote" href="#fn-2"><sup>2</sup></a>.
564
<li>To debug <em>Java byte code programs</em>, you can use <small>DDD</small> with
565
<dfn></dfn><small>JDB</small><dfn></dfn>, the Java debugger, as of <small>JDK</small> 1.1 and later.
566
(<small>DDD</small> has been tested with <small>JDK</small> 1.1 and <small>JDK</small> 1.2.)
568
<li>To debug <em>Python programs</em>, you can use <small>DDD</small> with
569
<dfn></dfn><small>PYDB</small><dfn></dfn>, a Python debugger.
571
<li>To debug <em>Perl programs</em>, you can use <small>DDD</small> with the <dfn>Perl
572
debugger,</dfn> as of Perl 5.003 and later.
574
<li>To debug <em>Bash programs</em>, you need a version Bash that supports
575
extended debugging support. To get this enhanced version see
576
<a href="http://bashdb.sourceforge.net">http://bashdb.sourceforge.net</a>. You will need version
577
2.05b-debugger-0.32 or later to work with <small>DDD</small>.
580
<p>See <a href="#Choosing%20an%20Inferior%20Debugger">Choosing an Inferior Debugger</a>, for choosing the appropriate
581
inferior debugger. See <a href="#Sample%20Session">Sample Session</a>, for getting a first
582
impression of <small>DDD</small>.
585
<li><a accesskey="1" href="#About%20this%20Manual">About this Manual</a>: Getting copies in various formats.
586
<li><a accesskey="2" href="#Typographic%20Conventions">Typographic Conventions</a>: Typographic conventions.
587
<li><a accesskey="3" href="#Free%20Software">Free Software</a>: How to copy and redistribute <small>DDD</small>.
588
<li><a accesskey="4" href="#Getting%20%3csmall%3eDDD%3c%2fsmall%3e">Getting <small>DDD</small></a>: How to obtain copies of <small>DDD</small>.
589
<li><a accesskey="5" href="#Contributors">Contributors</a>: Who has done all this?
590
<li><a accesskey="6" href="#History">History</a>: Old <small>DDD</small> versions.
596
Node:<a name="About%20this%20Manual">About this Manual</a>,
597
Next:<a rel="next" accesskey="n" href="#Typographic%20Conventions">Typographic Conventions</a>,
598
Up:<a rel="up" accesskey="u" href="#Summary">Summary</a>
604
<h3 class="unnumberedsec">About this Manual</h3>
606
<p>This manual comes in several formats:
609
<li>The <em>Info</em> format is used for browsing on character devices; it
610
comes without pictures. You should have a local copy installed, which
611
you can browse via Emacs, the stand-alone <code>info</code> program, or from
612
<small>DDD</small> via <code>Help => </code><small>DDD</small><code> Reference</code>.
614
<p>The <small>DDD</small> source distribution
615
<code>ddd-3.3.9-test2.tar.gz</code> contains this manual as
616
pre-formatted info files; you can also download them from <br>
617
<a href="http://www.gnu.org/software/ddd/">the <small>DDD</small> <small>WWW</small> page</a>.
619
</p><li>The <em>PostScript</em> format is used for printing on paper; it comes
620
with pictures as well.
622
<p>The <small>DDD</small> source distribution
623
<code>ddd-3.3.9-test2.tar.gz</code> contains this manual as
624
pre-formatted PostScript file; you can also download it from <br>
625
<a href="http://www.gnu.org/software/ddd/">the <small>DDD</small> <small>WWW</small> page</a>.
627
</p><li>The <em>PDF</em> format is used for printing on paper as well as for
628
online browsing; it comes with pictures as well.
630
<p>The <small>DDD</small> source distribution
631
<code>ddd-3.3.9-test2.tar.gz</code> contains this manual as
632
pre-formatted PDF file; you can also download it from <br>
633
<a href="http://www.gnu.org/software/ddd/">the <small>DDD</small> <small>WWW</small> page</a>.
635
</p><li>The <em>HTML</em> format is used for browsing on bitmap devices; it
636
includes several pictures. You can view it using a HTML browser,
637
typically from a local copy.
639
<p>A pre-formatted HTML version of this manual comes
640
in a separate <small>DDD</small> package <br>
641
<code>ddd-3.3.9-test2-html-manual.tar.gz</code>; you can browse
642
and download it via <br>
643
the <a href="http://www.gnu.org/software/ddd/"><small>DDD</small> <small>WWW</small> page</a>.
646
<p>The manual itself is written in TeXinfo format; its source code
647
<code>ddd.texi</code> is contained in the <small>DDD</small> source distribution
648
<code>ddd-3.3.9-test2.tar.gz</code>.
650
<p>The picture sources come in a separate package
651
<code>ddd-3.3.9-test2-pics.tar.gz</code>; you need this package
652
only if you want to re-create the PostScript, HTML, or PDF versions.
657
Node:<a name="Typographic%20Conventions">Typographic Conventions</a>,
658
Next:<a rel="next" accesskey="n" href="#Free%20Software">Free Software</a>,
659
Previous:<a rel="previous" accesskey="p" href="#About%20this%20Manual">About this Manual</a>,
660
Up:<a rel="up" accesskey="u" href="#Summary">Summary</a>
666
<h3 class="unnumberedsec">Typographic conventions</h3>
670
<dd>The name for a key on the keyboard (or multiple keys pressed simultaneously)
672
<br><dt><kbd>run</kbd>
673
<dd>A sequence of characters to be typed on the keyboard.
675
<br><dt><code>~/.ddd/init</code>
678
<br><dt><code>Help</code>
679
<dd>A graphical control element, such as a button or menu item.
681
<br><dt><code>File => Open Program</code>
682
<dd>A sequence of menu items, starting at the top-level menu bar.
684
<br><dt><code>argc - 1</code>
685
<dd>Program code or debugger command.
687
<br><dt><code>-g</code>
688
<dd>A command-line option.
690
<br><dt><code>$</code>
693
<br><dt><code>(gdb) </code>
696
<br><dt><code>_</code>
699
<br><dt><var>version</var>
700
<dd>A metasyntactic variable; something that stands for another piece of
703
<br><dt><dfn>definition</dfn>
706
<br><dt><em>caution</em>
709
<br><dt><strong>A warning</strong>
712
<br><dt><small>DDD</small>
716
<p>Here's an example. <code></code><kbd>break </kbd><var>location</var><kbd></kbd><code></code> is a typed command
717
at the <code>(gdb) </code> prompt; the metasyntactic variable
718
<code></code><var>location</var><code></code> would be replaced by the actual location.
719
<code>_</code> is the cursor position after entering the command.
721
<pre class="example"> (gdb) <kbd>break </kbd><var>location</var><kbd></kbd>
722
Breakpoint <var>number</var> at <var>location</var>
729
Node:<a name="Free%20Software">Free Software</a>,
730
Next:<a rel="next" accesskey="n" href="#Getting%20%3csmall%3eDDD%3c%2fsmall%3e">Getting <small>DDD</small></a>,
731
Previous:<a rel="previous" accesskey="p" href="#Typographic%20Conventions">Typographic Conventions</a>,
732
Up:<a rel="up" accesskey="u" href="#Summary">Summary</a>
738
<h3 class="unnumberedsec">Free software</h3>
740
<p><small>DDD</small> is <dfn>free</dfn>; this means that everyone is free to use it and
741
free to redistribute it on a free basis. <small>DDD</small> is not in the public
742
domain; it is copyrighted and there are restrictions on its
743
distribution, but these restrictions are designed to permit everything
744
that a good cooperating citizen would want to do. What is not allowed
745
is to try to prevent others from further sharing any version of <small>DDD</small>
746
that they might get from you. The precise conditions are found in the
747
<small>GNU</small> General Public License that comes with <small>DDD</small>; See <a href="#License">License</a>,
750
<p>The easiest way to get a copy of <small>DDD</small> is from someone else who
751
has it. You need not ask for permission to do so, or tell any one else;
757
Node:<a name="Getting%20%3csmall%3eDDD%3c%2fsmall%3e">Getting <small>DDD</small></a>,
758
Next:<a rel="next" accesskey="n" href="#Contributors">Contributors</a>,
759
Previous:<a rel="previous" accesskey="p" href="#Free%20Software">Free Software</a>,
760
Up:<a rel="up" accesskey="u" href="#Summary">Summary</a>
766
<h3 class="unnumberedsec">Getting DDD</h3>
768
<p>If you have access to the Internet, you can get the latest version of
769
<small>DDD</small> from the anonymous <small>FTP</small> server <code>ftp.gnu.org</code> in the
770
directory <code>/gnu/ddd</code>. This should contain the following files:
773
<dt><code>ddd-</code><var>version</var><code>.tar.gz</code>
774
<dd>The <small>DDD</small> source distribution. This should be all you need.
776
<br><dt><code>ddd-</code><var>version</var><code>-html-manual.tar.gz</code>
777
<dd>The <small>DDD</small> manual in HTML format. You need this only if you want to
778
install a local copy of the <small>DDD</small> manual in HTML format.
780
<br><dt><code>ddd-</code><var>version</var><code>-pics.tar.gz</code>
781
<dd>Sources of images included in the <small>DDD</small> manual. You need this
782
only if you want to recreate the <small>DDD</small> manual.
785
<p><small>DDD</small> can also be found at numerous other archive sites around the
786
world; check the file <code>ANNOUNCE</code> in a <small>DDD</small> distribution for
787
the latest known list.
792
Node:<a name="Contributors">Contributors</a>,
793
Next:<a rel="next" accesskey="n" href="#History">History</a>,
794
Previous:<a rel="previous" accesskey="p" href="#Getting%20%3csmall%3eDDD%3c%2fsmall%3e">Getting <small>DDD</small></a>,
795
Up:<a rel="up" accesskey="u" href="#Summary">Summary</a>
801
<h3 class="unnumberedsec">Contributors to DDD</h3>
803
<p>Dorothea L�tkehaus and Andreas Zeller were the original authors of
804
<small>DDD</small>. Many others have contributed to its development. The
805
files <code>ChangeLog</code> and <code>THANKS</code> in the <small>DDD</small> distribution
806
approximates a blow-by-blow account.
811
Node:<a name="History">History</a>,
812
Previous:<a rel="previous" accesskey="p" href="#Contributors">Contributors</a>,
813
Up:<a rel="up" accesskey="u" href="#Summary">Summary</a>
819
<h3 class="unnumberedsec">History of DDD</h3>
821
<p>The history of <small>DDD</small> is a story of code recycling. The oldest parts of
822
<small>DDD</small> were written in 1990, when <em>Andreas Zeller</em> designed <small>VSL</small>,
823
a box-based visual structure language for visualizing data and program
824
structures. The <small>VSL</small> interpreter and the Box library became part of
825
Andreas' Diploma Thesis, a graphical syntax editor based on the
826
Programming System Generator <small>PSG</small>.
828
<p>In 1992, the <small>VSL</small> and Box libraries were recycled for the
829
<small>NORA</small> project. For <small>NORA</small>, an experimental
830
inference-based software development tool set, Andreas wrote a graph
831
editor (based on <small>VSL</small> and the Box libraries) and facilities
832
for inter-process knowledge exchange. Based on these tools,
833
<em>Dorothea L�tkehaus</em> (now <em>Dorothea Krabiell</em>) realized <small>DDD</small>
834
as her Diploma Thesis, 1994.
836
<p>The original <small>DDD</small> had no source window; this was added by
837
Dorothea during the winter of 1994-1995. In the first quarter of 1995,
838
finally, Andreas completed <small>DDD</small> by adding command and execution
839
windows, extensions for <small>DBX</small> and remote debugging as well as
840
configuration support for several architectures. Since then, Andreas
841
has further maintained and extended <small>DDD</small>, based on the comments
842
and suggestions of several <small>DDD</small> users around the world. See the
843
comments in the <small>DDD</small> source for details.
845
<p>Major <small>DDD</small> events:
849
<dd><small>DDD</small> 0.9: First <small>DDD</small> beta release.
852
<dd><small>DDD</small> 1.0: First public <small>DDD</small> release.
854
<br><dt>December, 1995
855
<dd><small>DDD</small> 1.4: Machine-level debugging, glyphs, Emacs integration.
857
<br><dt>October, 1996
858
<dd><small>DDD</small> 2.0: Color displays, <small>XDB</small> support, generic <small>DBX</small> support,
862
<dd><small>DDD</small> 2.1: Alias detection, button tips, status displays.
864
<br><dt>November, 1997
865
<dd><small>DDD</small> 2.2: Sessions, display shortcuts.
868
<dd><small>DDD</small> 3.0: Icon tool bar, Java support, <small>JDB</small> support.
870
<br><dt>December, 1998
871
<dd><small>DDD</small> 3.1: Data plotting, Perl support, Python support, Undo/Redo.
873
<br><dt>January, 2000
874
<dd><small>DDD</small> 3.2: New manual, Readline support, Ladebug support.
876
<br><dt>January, 2001
877
<dd><small>DDD</small> 3.3: Data themes, JDB 1.2 support, VxWorks support.
879
<br><dt>November, 2002
880
<dd><small>DDD</small> 3.3.2: Bash support.
883
<dd><small>DDD</small> 3.3.3: Better Bash support. Compiles using modern tools thanks
890
Node:<a name="Sample%20Session">Sample Session</a>,
891
Next:<a rel="next" accesskey="n" href="#Invocation">Invocation</a>,
892
Previous:<a rel="previous" accesskey="p" href="#Summary">Summary</a>,
893
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
899
<h2 class="chapter">A Sample DDD Session</h2>
901
<p>You can use this manual at your leisure to read all about <small>DDD</small>.
902
However, a handful of features are enough to get started using the
903
debugger. This chapter illustrates those features.
905
<p>The sample program <code>sample.c</code> (see <a href="#Sample%20Program">Sample Program</a>) exhibits the
906
following bug. Normally, <code>sample</code> should sort and print its
907
arguments numerically, as in the following example:
909
<pre class="example"> $ <kbd>./sample 8 7 5 4 1 3</kbd>
914
<p>However, with certain arguments, this goes wrong:
916
<pre class="example"> $ <kbd>./sample 8000 7000 5000 1000 4000</kbd>
917
1000 1913 4000 5000 7000
921
<p>Although the output is sorted and contains the right number of
922
arguments, some arguments are missing and replaced by bogus numbers;
923
here, <code>8000</code> is missing and replaced by
924
<code>1913</code>.<a rel="footnote" href="#fn-3"><sup>3</sup></a>
926
<p>Let us use <small>DDD</small> to see what is going on. First, you must compile
927
<code>sample.c</code> for debugging (see <a href="#Compiling%20for%20Debugging">Compiling for Debugging</a>), giving
928
the <code>-g</code> flag while compiling:
930
<pre class="example"> $ <kbd>gcc -g -o sample sample.c</kbd>
935
<li><a accesskey="1" href="#Sample%20Program">Sample Program</a>: Source <code>sample.c</code>
938
<p>Now, you can invoke <small>DDD</small> (see <a href="#Invocation">Invocation</a>) on the
939
<code>sample</code> executable:
941
<pre class="example"> $ <kbd>ddd sample</kbd>
944
<p>After a few seconds, <small>DDD</small> comes up. The <dfn>Source Window</dfn>
945
contains the source of your debugged program; use the <dfn>Scroll Bar</dfn>
946
to scroll through the file.
949
<div align="center"><img src="PICS/tut-invoke.jpg" alt="PICS/tut-invoke.jpg"></div>
951
<p>The <dfn>Debugger Console</dfn> (at the bottom) contains <small>DDD</small> version
952
information as well as a <small>GDB</small> prompt.<a rel="footnote" href="#fn-4"><sup>4</sup></a>
954
<pre class="example"> GNU DDD Version 3.3.9-test2, by Dorothea L�tkehaus and Andreas Zeller.
955
Copyright © 1995-1999 Technische Universit�t Braunschweig, Germany.
956
Copyright © 1999-2001 Universit�t Passau, Germany.
957
Copyright © 2001-2004 Universit�t des Saarlandes, Germany.
958
Reading symbols from sample...done.
962
<p>The first thing to do now is to place a <dfn>Breakpoint</dfn>
963
(see <a href="#Breakpoints">Breakpoints</a>), making <code>sample</code> stop at a location you are
964
interested in. Click on the blank space left to the initialization of
965
<code>a</code>. The <dfn>Argument field</dfn> <code>():</code> now contains the location
966
(<code>sample.c:31</code>). Now, click on <code>Break</code> to create a breakpoint
967
at the location in <code>()</code>. You see a little red stop sign appear in
970
<p>The next thing to do is to actually <dfn>execute</dfn> the program, such that
971
you can examine its behavior (see <a href="#Running">Running</a>). Select <code>Program
972
=> Run</code> to execute the program; the <code>Run Program</code> dialog
976
<div align="center"><img src="PICS/tut-run.jpg" alt="PICS/tut-run.jpg"></div>
978
<p>In <code>Run with Arguments</code>, you can now enter arguments for the
979
<code>sample</code> program. Enter the arguments resulting in erroneous
980
behavior here--that is, <code>8000 7000 5000 1000 4000</code>. Click on
981
<code>Run</code> to start execution with the arguments you just entered.
983
<p><small>GDB</small> now starts <code>sample</code>. Execution stops after a few moments as
984
the breakpoint is reached. This is reported in the debugger console.
986
<pre class="example"> (gdb) break sample.c:31
987
Breakpoint 1 at 0x8048666: file sample.c, line 31.
988
(gdb) run 8000 7000 5000 1000 4000
989
Starting program: sample 8000 7000 5000 1000 4000
991
Breakpoint 1, main (argc=6, argv=0xbffff918) at sample.c:31
995
<p>The current execution line is indicated by a green arrow.
997
<pre class="example"> => a = (int *)malloc((argc - 1) * sizeof(int));
1000
<p>You can now examine the variable values. To examine a simple variable,
1001
you can simply move the mouse pointer on its name and leave it there.
1002
After a second, a small window with the variable value pops up
1003
(see <a href="#Value%20Tips">Value Tips</a>). Try this with <code>argc</code> to see its value
1004
(<code>6</code>). The local variable <code>a</code> is not yet initialized; you'll
1005
probably see <code>0x0</code> or some other invalid pointer value.
1007
<p>To execute the current line, click on the <code>Next</code> button on the
1008
command tool. The arrow advances to the following line. Now, point
1009
again on <code>a</code> to see that the value has changed and that <code>a</code>
1010
has actually been initialized.
1013
<div align="center"><img src="PICS/tut-value.jpg" alt="PICS/tut-value.jpg"></div>
1015
<p>To examine the individual values of the <code>a</code> array, enter
1016
<code>a[0]</code> in the argument field (you can clear it beforehand by
1017
clicking on <code>():</code>) and then click on the <code>Print</code> button. This
1018
prints the current value of <code>()</code> in the debugger console
1019
(see <a href="#Printing%20Values">Printing Values</a>). In our case, you'll get
1021
<pre class="example"> (gdb) print a[0]
1026
<p>or some other value (note that <code>a</code> has only been allocated, but the
1027
contents have not yet been initialized).
1029
<p>To see all members of <code>a</code> at once, you must use a special <small>GDB</small>
1030
operator. Since <code>a</code> has been allocated dynamically, <small>GDB</small> does not
1031
know its size; you must specify it explicitly using the <code>@</code>
1032
operator (see <a href="#Array%20Slices">Array Slices</a>). Enter <code>a[0]@(argc - 1)</code> in the
1033
argument field and click on the <code>Print</code> button. You get the first
1034
<code>argc - 1</code> elements of <code>a</code>, or
1036
<pre class="example"> (gdb) print a[0]@(argc - 1)
1037
$2 = {0, 0, 0, 0, 0}
1041
<p>Rather than using <code>Print</code> at each stop to see the current value of
1042
<code>a</code>, you can also <dfn>display</dfn> <code>a</code>, such that its is
1043
automatically displayed. With <code>a[0]@(argc - 1)</code> still being shown
1044
in the argument field, click on <code>Display</code>. The contents of
1045
<code>a</code> are now shown in a new window, the <dfn>Data Window</dfn>. Click on
1046
<code>Rotate</code> to rotate the array horizontally.
1049
<div align="center"><img src="PICS/tut-display.jpg" alt="PICS/tut-display.jpg"></div>
1051
<p>Now comes the assignment of <code>a</code>'s members:
1053
<pre class="example"> => for (i = 0; i < argc - 1; i++)
1054
a[i] = atoi(argv[i + 1]);
1057
<p>You can now click on <code>Next</code> and <code>Next</code> again to see how the
1058
individual members of <code>a</code> are being assigned. Changed members are
1061
<p>To resume execution of the loop, use the <code>Until</code> button. This
1062
makes <small>GDB</small> execute the program until a line greater than the current is
1063
reached. Click on <code>Until</code> until you end at the call of
1064
<code>shell_sort</code> in
1066
<pre class="example"> => shell_sort(a, argc);
1069
<p>At this point, <code>a</code>'s contents should be <code>8000 7000 5000 1000
1070
4000</code>. Click again on <code>Next</code> to step over the call to
1071
<code>shell_sort</code>. <small>DDD</small> ends in
1073
<pre class="example"> => for (i = 0; i < argc - 1; i++)
1074
printf("%d ", a[i]);
1077
<p>and you see that after <code>shell_sort</code> has finished, the contents of
1078
<code>a</code> are <code>1000, 1913, 4000, 5000, 7000</code>--that is,
1079
<code>shell_sort</code> has somehow garbled the contents of <code>a</code>.
1081
<p>To find out what has happened, execute the program once again. This
1082
time, you do not skip through the initialization, but jump directly into
1083
the <code>shell_sort</code> call. Delete the old breakpoint by selecting it
1084
and clicking on <code>Clear</code>. Then, create a new breakpoint in line 35
1085
before the call to <code>shell_sort</code>. To execute the program once
1086
again, select <code>Program => Run Again</code>.
1088
<p>Once more, <small>DDD</small> ends up before the call to <code>shell_sort</code>:
1089
<pre class="example"> => shell_sort(a, argc);
1092
<p>This time, you want to examine closer what <code>shell_sort</code> is doing.
1093
Click on <code>Step</code> to step into the call to <code>shell_sort</code>. This
1094
leaves your program in the first executable line, or
1096
<pre class="example"> => int h = 1;
1099
<p>while the debugger console tells us the function just entered:
1101
<pre class="example"> (gdb) step
1102
shell_sort (a=0x8049878, size=6) at sample.c:9
1106
<p>This output that shows the function where <code>sample</code> is now suspended
1107
(and its arguments) is called a <dfn>stack frame display</dfn>. It shows a
1108
summary of the stack. You can use <code>Status => Backtrace</code> to
1109
see where you are in the stack as a whole; selecting a line (or clicking
1110
on <code>Up</code> and <code>Down</code>) will let you move through the stack. Note
1111
how the <code>a</code> display disappears when its frame is left.
1114
<div align="center"><img src="PICS/tut-backtrace.jpg" alt="PICS/tut-backtrace.jpg"></div>
1116
<p>Let us now check whether <code>shell_sort</code>'s arguments are correct.
1117
After returning to the lowest frame, enter <code>a[0]@size</code> in the
1118
argument field and click on <code>Print</code>:
1120
<pre class="example"> (gdb) print a[0] @ size
1121
$4 = {8000, 7000, 5000, 1000, 4000, 1913}
1125
<p>Surprise! Where does this additional value <code>1913</code> come from? The
1126
answer is simple: The array size as passed in <code>size</code> to
1127
<code>shell_sort</code> is <em>too large by one</em>--<code>1913</code> is a bogus
1128
value which happens to reside in memory after <code>a</code>. And this last
1129
value is being sorted in as well.
1131
<p>To see whether this is actually the problem cause, you can now assign
1132
the correct value to <code>size</code> (see <a href="#Assignment">Assignment</a>). Select
1133
<code>size</code> in the source code and click on <code>Set</code>. A dialog pops
1134
up where you can edit the variable value.
1137
<div align="center"><img src="PICS/tut-set.jpg" alt="PICS/tut-set.jpg"></div>
1139
<p>Change the value of <code>size</code> to <code>5</code> and click on <code>OK</code>.
1140
Then, click on <code>Finish</code> to resume execution of the
1141
<code>shell_sort</code> function:
1143
<pre class="example"> (gdb) set variable size = 5
1145
Run till exit from #0 shell_sort (a=0x8049878, size=5) at sample.c:9
1146
0x80486ed in main (argc=6, argv=0xbffff918) at sample.c:35
1150
<p>Success! The <code>a</code> display now contains the correct values
1151
<code>1000, 4000, 5000, 7000, 8000</code>.
1154
<div align="center"><img src="PICS/tut-finish.jpg" alt="PICS/tut-finish.jpg"></div>
1156
<p>You can verify that these values are actually printed to standard output
1157
by further executing the program. Click on <code>Cont</code> to continue
1160
<pre class="example"> (gdb) cont
1161
1000 4000 5000 7000 8000
1163
Program exited normally.
1167
<p>The message <code>Program exited normally.</code> is from <small>GDB</small>; it indicates
1168
that the <code>sample</code> program has finished executing.
1170
<p>Having found the problem cause, you can now fix the source code. Click
1171
on <code>Edit</code> to edit <code>sample.c</code>, and change the line
1173
<pre class="example"> shell_sort(a, argc);
1176
<p>to the correct invocation
1178
<pre class="example"> shell_sort(a, argc - 1);
1181
<p>You can now recompile <code>sample</code>
1183
<pre class="example"> $ <kbd>gcc -g -o sample sample.c</kbd>
1187
<p>and verify (via <code>Program => Run Again</code>) that <code>sample</code>
1190
<pre class="example"> (gdb) run
1191
`sample' has changed; re-reading symbols.
1192
Reading in symbols...done.
1193
Starting program: sample 8000 7000 5000 1000 4000
1194
1000 4000 5000 7000 8000
1196
Program exited normally.
1200
<p>All is done; the program works fine now. You can end this <small>DDD</small>
1201
session with <code>Program => Exit</code> or <kbd>Ctrl+Q</kbd>.
1205
<small class=header>
1206
Node:<a name="Sample%20Program">Sample Program</a>,
1207
Up:<a rel="up" accesskey="u" href="#Sample%20Session">Sample Session</a>
1213
<h3 class="section">Sample Program</h3>
1215
<p>Here's the source <code>sample.c</code> of the sample program.
1217
<pre class="smallexample"> /* sample.c -- Sample C program to be debugged with <small>DDD</small> */
1219
#include <stdio.h>
1220
#include <stdlib.h>
1222
static void shell_sort(int a[], int size)
1228
} while (h <= size);
1231
for (i = h; i < size; i++)
1234
for (j = i; j >= h && a[j - h] > v; j -= h)
1242
int main(int argc, char *argv[])
1247
a = (int *)malloc((argc - 1) * sizeof(int));
1248
for (i = 0; i < argc - 1; i++)
1249
a[i] = atoi(argv[i + 1]);
1251
shell_sort(a, argc);
1253
for (i = 0; i < argc - 1; i++)
1254
printf("%d ", a[i]);
1264
<small class=header>
1265
Node:<a name="Invocation">Invocation</a>,
1266
Next:<a rel="next" accesskey="n" href="#Windows">Windows</a>,
1267
Previous:<a rel="previous" accesskey="p" href="#Sample%20Session">Sample Session</a>,
1268
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
1274
<h2 class="chapter">Getting In and Out of DDD</h2>
1276
<p>This chapter discusses how to start <small>DDD</small>, and how to get out of it.
1280
<li>Type <code>ddd</code> to start <small>DDD</small> (see <a href="#Invoking">Invoking</a>).
1281
<li>Use <code>File => Exit</code> or <kbd>Ctrl+Q</kbd> to exit (see <a href="#Quitting">Quitting</a>).
1285
<li><a accesskey="1" href="#Invoking">Invoking</a>: How to invoke <small>DDD</small>.
1286
<li><a accesskey="2" href="#Quitting">Quitting</a>: How to quit <small>DDD</small>.
1287
<li><a accesskey="3" href="#Sessions">Sessions</a>: Saving work across invocations.
1288
<li><a accesskey="4" href="#Remote%20Debugging">Remote Debugging</a>: Running <small>DDD</small> on a different host.
1289
<li><a accesskey="5" href="#Customizing%20Debugger%20Interaction">Customizing Debugger Interaction</a>: How <small>DDD</small> and <small>GDB</small> communicate.
1294
<small class=header>
1295
Node:<a name="Invoking">Invoking</a>,
1296
Next:<a rel="next" accesskey="n" href="#Quitting">Quitting</a>,
1297
Up:<a rel="up" accesskey="u" href="#Invocation">Invocation</a>
1303
<h3 class="section">Invoking DDD</h3>
1305
<p>Normally, you can run <small>DDD</small> by invoking the program
1308
<p>You can also run <small>DDD</small> with a variety of arguments and options, to
1309
specify more of your debugging environment at the outset.
1311
<p>The most usual way to start <small>DDD</small> is with one argument, specifying
1312
an executable program:
1314
<pre class="example"> ddd <var>program</var>
1317
<p>If you use <small>GDB</small>, <small>DBX</small>, Ladebug, or <small>XDB</small> as inferior debuggers, you can also
1318
start with both an executable program and a core file specified:
1320
<pre class="example"> ddd <var>program</var> <var>core</var>
1323
<p>You can, instead, specify a process ID as a second argument, if you want
1324
to debug a running process:
1326
<pre class="example"> ddd <var>program</var> 1234
1329
<p>would attach <small>DDD</small> to process <code>1234</code> (unless you also have a file
1330
named <code>1234</code>; <small>DDD</small> does check for a core file first).
1332
<p>You can further control <small>DDD</small> by invoking it with specific
1333
<dfn>options</dfn>. To get a list of <small>DDD</small> options, invoke <small>DDD</small>
1336
<pre class="example"> ddd --help
1339
<p>Most important are the options to specify the inferior debugger
1340
(see <a href="#Choosing%20an%20Inferior%20Debugger">Choosing an Inferior Debugger</a>), but you can also customize
1341
several aspects of <small>DDD</small> upon invocation (see <a href="#Options">Options</a>).
1343
<p><small>DDD</small> also understands the usual X options such as <code>-display</code>
1344
or <code>-geometry</code>. See <a href="#X%20Options">X Options</a>, for details.
1346
<p>All arguments and options that are not understood by <small>DDD</small> are
1347
passed to the inferior debugger; See <a href="#Inferior%20Debugger%20Options">Inferior Debugger Options</a>, for a
1348
survey. To pass an option to the inferior debugger that conflicts with
1349
an X option, or with a <small>DDD</small> option listed here, use the
1350
<code>--debugger</code> option (see <a href="#Options">Options</a>).
1353
<li><a accesskey="1" href="#Choosing%20an%20Inferior%20Debugger">Choosing an Inferior Debugger</a>: Which debugger to use?
1354
<li><a accesskey="2" href="#Options">Options</a>: How to invoke <small>DDD</small>
1355
<li><a accesskey="3" href="#X%20Options">X Options</a>: Setting X properties
1356
<li><a accesskey="4" href="#Inferior%20Debugger%20Options">Inferior Debugger Options</a>: Customizing <small>GDB</small>, <small>DBX</small>, and so on
1357
<li><a accesskey="5" href="#Multiple%20Instances">Multiple Instances</a>: Running multiple <small>DDD</small> instances
1358
<li><a accesskey="6" href="#X%20Warnings">X Warnings</a>: Turning off obnoxious warnings
1363
<small class=header>
1364
Node:<a name="Choosing%20an%20Inferior%20Debugger">Choosing an Inferior Debugger</a>,
1365
Next:<a rel="next" accesskey="n" href="#Options">Options</a>,
1366
Up:<a rel="up" accesskey="u" href="#Invoking">Invoking</a>
1372
<h4 class="subsection">Choosing an Inferior Debugger</h4>
1374
<p>The most frequently required options are those to choose a specific
1377
<p>Normally, the inferior debugger is determined by the program to analyze:
1380
<li>If the program requires a specific interpreter, such as Java, Python,
1381
Perl or Bash, then you should use a <small>JDB</small>, <small>PYDB</small>, Perl, or Bash
1386
<pre class="example"> ddd --jdb <var>program</var>
1389
<pre class="example"> ddd --pydb <var>program</var>
1392
<pre class="example"> ddd --perl <var>program</var>
1395
<pre class="example"> ddd --bash <var>program</var>
1396
ddd --interpreter='<em>path-to-debugger-bash</em> --debugger' <var>program</var>
1399
<p>to run <small>DDD</small> with <small>JDB</small>, <small>PYDB</small>, Perl, or Bash as an inferior
1402
</p><li>If the program is an executable binary, you should use <small>GDB</small>, <small>DBX</small>,
1403
Ladebug, or <small>XDB</small>. In general, <small>GDB</small> (or its HP variant, <small>WDB</small>)
1404
provides the most functionality of these debuggers.
1408
<pre class="example"> ddd --gdb <var>program</var>
1411
<pre class="example"> ddd --wdb <var>program</var>
1414
<pre class="example"> ddd --dbx <var>program</var>
1417
<pre class="example"> ddd --ladebug <var>program</var>
1420
<pre class="example"> ddd --xdb <var>program</var>
1423
<p>to run <small>DDD</small> with <small>GDB</small>, <small>WDB</small>, <small>DBX</small>, Ladebug, or <small>XDB</small> as
1427
<p>If you invoke <small>DDD</small> without any of these options, but give a
1428
<var>program</var> to analyze, then <small>DDD</small> will automatically determine
1429
the inferior debugger:
1432
<li>If <var>program</var> is a Python program, a Perl script, or a Java class,
1433
<small>DDD</small> will invoke the appropriate debugger.
1435
<li>If <var>program</var> is an executable binary, <small>DDD</small> will invoke its
1436
default debugger for executables (usually <small>GDB</small>).
1439
<p>See <a href="#Customizing%20Debugger%20Interaction">Customizing Debugger Interaction</a>, for more details on determining
1440
the inferior debugger.
1444
<small class=header>
1445
Node:<a name="Options">Options</a>,
1446
Next:<a rel="next" accesskey="n" href="#X%20Options">X Options</a>,
1447
Previous:<a rel="previous" accesskey="p" href="#Choosing%20an%20Inferior%20Debugger">Choosing an Inferior Debugger</a>,
1448
Up:<a rel="up" accesskey="u" href="#Invoking">Invoking</a>
1454
<h4 class="subsection">DDD Options</h4>
1456
<p>You can further control how <small>DDD</small> starts up using the following
1457
options. All options may be abbreviated, as long as they are
1458
unambiguous; single dashes <code>-</code> instead of double dashes <code>--</code>
1459
may also be used. Almost all options control a specific <small>DDD</small>
1460
resource or resource class (see <a href="#Customizing">Customizing</a>).
1463
<dt><code>--attach-windows</code>
1464
<dd>Attach the source and data windows to the debugger console, creating
1465
one single big <small>DDD</small> window. This is the default setting.
1467
<p>Giving this option is equivalent to setting the <small>DDD</small>
1468
<code>Separate</code> resource class to <code>off</code>. See <a href="#Window%20Layout">Window Layout</a>, for
1471
<br><dt><code>--attach-source-window</code>
1472
<dd>Attach only the source window to the debugger console.
1474
<p>Giving this option is equivalent to setting the <small>DDD</small>
1475
<code>separateSourceWindow</code> resource to <code>off</code>.
1476
See <a href="#Window%20Layout">Window Layout</a>, for details.
1478
<br><dt><code>--attach-data-window</code>
1479
<dd>Attach only the source window to the debugger console.
1481
<p>Giving this option is equivalent to setting the <small>DDD</small>
1482
<code>separateDataWindow</code> resource to <code>off</code>. See <a href="#Window%20Layout">Window Layout</a>,
1485
<br><dt><code>--automatic-debugger</code>
1486
<dd>Determine the inferior debugger automatically from the given arguments.
1488
<p>Giving this option is equivalent to setting the <small>DDD</small>
1489
<code>autoDebugger</code> resource to <code>on</code>.
1490
See <a href="#Customizing%20Debugger%20Interaction">Customizing Debugger Interaction</a>, for details.
1492
<br><dt><code>--button-tips</code>
1493
<dd>Enable button tips.
1495
<p>Giving this option is equivalent to setting the <small>DDD</small>
1496
<code>buttonTips</code> resource to <code>on</code>. See <a href="#Customizing%20Help">Customizing Help</a>, for
1499
<br><dt><code>--configuration</code>
1500
<dd>Print the <small>DDD</small> configuration settings on standard output and
1503
<p>Giving this option is equivalent to setting the <small>DDD</small>
1504
<code>showConfiguration</code> resource to <code>on</code>. See <a href="#Diagnostics">Diagnostics</a>, for
1507
<br><dt><code>--check-configuration</code>
1508
<dd>Check the <small>DDD</small> environment (in particular, the X configuration),
1509
report any possible problem causes and exit.
1511
<p>Giving this option is equivalent to setting the <small>DDD</small>
1512
<code>checkConfiguration</code> resource to <code>on</code>. See <a href="#Diagnostics">Diagnostics</a>,
1515
<br><dt><code>--data-window</code>
1516
<dd>Open the data window upon start-up.
1518
<p>Giving this option is equivalent to setting the <small>DDD</small>
1519
<code>openDataWindow</code> resource to <code>on</code>. See <a href="#Toggling%20Windows">Toggling Windows</a>,
1522
<br><dt><code>--dbx</code>
1523
<dd>Run <small>DBX</small> as inferior debugger.
1525
<p>Giving this option is equivalent to setting the <small>DDD</small>
1526
<code>debugger</code> resource to <code>dbx</code>.
1527
See <a href="#Customizing%20Debugger%20Interaction">Customizing Debugger Interaction</a>, for details.
1529
<br><dt><code>--debugger </code><var>name</var><code></code>
1530
<dd>Invoke the inferior debugger <var>name</var>. This is useful if you have
1531
several debugger versions around, or if the inferior debugger cannot be
1532
invoked under its usual name (i.e. <code>gdb</code>, <code>wdb</code>,
1533
<code>dbx</code>, <code>xdb</code>, <code>jdb</code>, <code>pydb</code>, or
1536
<p>This option can also be used to pass options to the inferior debugger
1537
that would otherwise conflict with <small>DDD</small> options. For instance,
1538
to pass the option <code>-d </code><var>directory</var><code></code> to <small>XDB</small>, use:
1540
<pre class="example"> ddd --debugger "xdb -d <var>directory</var>"
1543
<p>If you use the <code>--debugger</code> option, be sure that the type of
1544
inferior debugger is specified as well. That is, use one of the options
1545
<code>--gdb</code>, <code>--dbx</code>, <code>--xdb</code>, <code>--jdb</code>,
1546
<code>--pydb</code>, or <code>--perl</code> (unless the default setting works
1549
<p>Giving this option is equivalent to setting the <small>DDD</small>
1550
<code>debuggerCommand</code> resource to <var>name</var>. See <a href="#Customizing%20Debugger%20Interaction">Customizing Debugger Interaction</a>, for details.
1552
<br><dt><code>--debugger-console</code>
1553
<dd>Open the debugger console upon start-up.
1555
<p>Giving this option is equivalent to setting the <small>DDD</small>
1556
<code>openDebuggerConsole</code> resource to <code>on</code>. See <a href="#Toggling%20Windows">Toggling Windows</a>, for details.
1558
<br><dt><code>--disassemble</code>
1559
<dd>Disassemble the source code. See also the <code>--no-disassemble</code>
1562
<p>Giving this option is equivalent to setting the <small>DDD</small>
1563
<code>disassemble</code> resource to <code>on</code>. See <a href="#Customizing%20Source">Customizing Source</a>,
1566
<br><dt><code>--exec-window</code>
1567
<dd>Run the debugged program in a specially created execution window. This
1568
is useful for programs that have special terminal requirements not
1569
provided by the debugger window, as raw keyboard processing or terminal
1570
control sequences. See <a href="#Using%20the%20Execution%20Window">Using the Execution Window</a>, for details.
1572
<p>Giving this option is equivalent to setting the <small>DDD</small>
1573
<code>separateExecWindow</code> resource to <code>on</code>. See <a href="#Customizing%20the%20Execution%20Window">Customizing the Execution Window</a>, for details.
1575
<br><dt><code>--font </code><var>fontname</var><code></code>
1576
<dd><dt><code>-fn </code><var>fontname</var><code></code>
1577
<dd>Use <var>fontname</var> as default font.
1579
<p>Giving this option is equivalent to setting the <small>DDD</small>
1580
<code>defaultFont</code> resource to <code>fontname</code>. See <a href="#Customizing%20Fonts">Customizing Fonts</a>, for details.
1582
<br><dt><code>--fonts</code>
1583
<dd>Show the font definitions used by <small>DDD</small> on standard output.
1585
<p>Giving this option is equivalent to setting the <small>DDD</small>
1586
<code>showFonts</code> resource to <code>on</code>. See <a href="#Diagnostics">Diagnostics</a>, for
1589
<br><dt><code>--fontsize </code><var>size</var><code></code>
1590
<dd>Set the default font size to <var>size</var> (in 1/10 points). To make
1591
<small>DDD</small> use 12-point fonts, say <code>--fontsize 120</code>.
1593
<p>Giving this option is equivalent to setting the <small>DDD</small>
1594
<code>FontSize</code> resource class to <code>size</code>. See <a href="#Customizing%20Fonts">Customizing Fonts</a>, for details.
1596
<br><dt><code>--fullname</code>
1597
<dd><dt><code>-f</code>
1598
<dd>Enable the <small>TTY</small> interface, taking additional debugger commands from
1599
standard input and forwarding debugger output on standard output.
1600
Current positions are issued in <small>GDB</small> <code>-fullname</code> format
1601
suitable for debugger front-ends. By default, both the debugger console
1602
and source window are disabled. See <a href="#TTY%20mode">TTY mode</a>, for a discussion.
1604
<p>Giving this option is equivalent to setting the <small>DDD</small>
1605
<code>TTYMode</code> resource class to <code>on</code>. See <a href="#TTY%20mode">TTY mode</a>, for
1608
<br><dt><code>--gdb</code>
1609
<dd>Run <small>GDB</small> as inferior debugger.
1611
<p>Giving this option is equivalent to setting the <small>DDD</small>
1612
<code>debugger</code> resource to <code>gdb</code>. See <a href="#Customizing%20Debugger%20Interaction">Customizing Debugger Interaction</a>,
1615
<br><dt><code>--glyphs</code>
1616
<dd>Display the current execution position and breakpoints as glyphs. See
1617
also the <code>--no-glyphs</code> option, below.
1619
<p>Giving this option is equivalent to setting the <small>DDD</small>
1620
<code>displayGlyphs</code> resource to <code>on</code>. See <a href="#Customizing%20Source">Customizing Source</a>,
1623
<br><dt><code>--help</code>
1624
<dd><dt><code>-h</code>
1625
<dd><dt><code>-?</code>
1626
<dd>Give a list of frequently used options. Show options of the inferior
1629
<p>Giving this option is equivalent to setting the <small>DDD</small>
1630
<code>showInvocation</code> resource to <code>on</code>. See <a href="#Diagnostics">Diagnostics</a>, for
1633
<br><dt><code>--host </code><var>hostname</var><code></code>
1634
<dd><dt><code>--host </code><var>username</var><code>@</code><var>hostname</var><code></code>
1635
<dd>Invoke the inferior debugger directly on the remote host <var>hostname</var>.
1636
If <var>username</var> is given and the <code>--login</code> option is not used,
1637
use <var>username</var> as remote user name. See <a href="#Remote%20Debugger">Remote Debugger</a>, for
1640
<p>Giving this option is equivalent to setting the <small>DDD</small>
1641
<code>debuggerHost</code> resource to <var>hostname</var>. See <a href="#Remote%20Debugger">Remote Debugger</a>,
1644
<br><dt><code>--jdb</code>
1645
<dd>Run <small>JDB</small> as inferior debugger.
1647
<p>Giving this option is equivalent to setting the <small>DDD</small>
1648
<code>debugger</code> resource to <code>gdb</code>. See <a href="#Customizing%20Debugger%20Interaction">Customizing Debugger Interaction</a>,
1651
<br><dt><code>--ladebug</code>
1652
<dd>Run Ladebug as inferior debugger.
1654
<p>Giving this option is equivalent to setting the <small>DDD</small>
1655
<code>debugger</code> resource to <code>ladebug</code>. See <a href="#Customizing%20Debugger%20Interaction">Customizing Debugger Interaction</a>, for details.
1657
<br><dt><code>--lesstif-hacks</code>
1658
<dd>Equivalent to <code>--lesstif-version 999</code>. Deprecated.
1660
<p>Giving this option is equivalent to setting the <small>DDD</small>
1661
<code>lessTifVersion</code> resource to <code>999</code>. See <a href="#LessTif">LessTif</a>, for
1664
<br><dt><code>--lesstif-version </code><var>version</var><code></code>
1665
<dd>Enable some hacks to make <small>DDD</small> run properly with LessTif.
1666
See <a href="#LessTif">LessTif</a>, for a discussion.
1668
<p>Giving this option is equivalent to setting the <small>DDD</small>
1669
<code>lessTifVersion</code> resource to <var>version</var>. See <a href="#LessTif">LessTif</a>, for
1672
<br><dt><code>--license</code>
1673
<dd>Print the <small>DDD</small> license on standard output and exit.
1675
<p>Giving this option is equivalent to setting the <small>DDD</small>
1676
<code>showLicense</code> resource to <var>on</var>. See <a href="#Diagnostics">Diagnostics</a>, for
1679
<br><dt><code>--login </code><var>username</var><code></code>
1680
<dd><dt><code>-l </code><var>username</var><code></code>
1681
<dd>Use <var>username</var> as remote user name. See <a href="#Remote%20Debugger">Remote Debugger</a>, for details.
1683
<p>Giving this option is equivalent to setting the <small>DDD</small>
1684
<code>debuggerHostLogin</code> resource to <var>username</var>. See <a href="#Remote%20Debugger">Remote Debugger</a>, for details.
1686
<br><dt><code>--maintenance</code>
1687
<dd>Enable the top-level <code>Maintenance</code> menu with options for debugging
1688
<small>DDD</small>. See <a href="#Maintenance%20Menu">Maintenance Menu</a>, for details.
1690
<p>Giving this option is equivalent to setting the <small>DDD</small>
1691
<code>maintenance</code> resource to <var>on</var>. See <a href="#Maintenance%20Menu">Maintenance Menu</a>, for
1694
<br><dt><code>--manual</code>
1695
<dd>Print the <small>DDD</small> manual on standard output and exit.
1697
<p>Giving this option is equivalent to setting the <small>DDD</small>
1698
<code>showManual</code> resource to <var>on</var>. See <a href="#Diagnostics">Diagnostics</a>, for
1701
<br><dt><code>--news</code>
1702
<dd>Print the <small>DDD</small> news on standard output and exit.
1704
<p>Giving this option is equivalent to setting the <small>DDD</small>
1705
<code>showNews</code> resource to <var>on</var>. See <a href="#Diagnostics">Diagnostics</a>, for details.
1707
<br><dt><code>--no-button-tips</code>
1708
<dd>Disable button tips.
1710
<p>Giving this option is equivalent to setting the <small>DDD</small>
1711
<code>buttonTips</code> resource to <code>off</code>. See <a href="#Customizing%20Help">Customizing Help</a>, for
1714
<br><dt><code>--no-data-window</code>
1715
<dd>Do not open the data window upon start-up.
1717
<p>Giving this option is equivalent to setting the <small>DDD</small>
1718
<code>openDataWindow</code> resource to <code>off</code>. See <a href="#Toggling%20Windows">Toggling Windows</a>,
1721
<br><dt><code>--no-debugger-console</code>
1722
<dd>Do not open the debugger console upon start-up.
1724
<p>Giving this option is equivalent to setting the <small>DDD</small>
1725
<code>openDebuggerConsole</code> resource to <code>off</code>. See <a href="#Toggling%20Windows">Toggling Windows</a>, for details.
1727
<br><dt><code>--no-disassemble</code>
1728
<dd>Do not disassemble the source code.
1730
<p>Giving this option is equivalent to setting the <small>DDD</small>
1731
<code>disassemble</code> resource to <code>off</code>. See <a href="#Customizing%20Source">Customizing Source</a>,
1734
<br><dt><code>--no-exec-window</code>
1735
<dd>Do not run the debugged program in a specially created execution window;
1736
use the debugger console instead. Useful for programs that have little
1737
terminal input/output, or for remote debugging. See <a href="#Using%20the%20Execution%20Window">Using the Execution Window</a>, for details.
1739
<p>Giving this option is equivalent to setting the <small>DDD</small>
1740
<code>separateExecWindow</code> resource to <code>off</code>. See <a href="#Customizing%20the%20Execution%20Window">Customizing the Execution Window</a>, for details.
1742
<br><dt><code>--no-glyphs</code>
1743
<dd>Do not use glyphs; display the current execution position and
1744
breakpoints as text characters.
1746
<p>Giving this option is equivalent to setting the <small>DDD</small>
1747
<code>displayGlyphs</code> resource to <code>off</code>. See <a href="#Customizing%20Source">Customizing Source</a>,
1750
<br><dt><code>--no-lesstif-hacks</code>
1751
<dd>Equivalent to <code>--lesstif-version 1000</code>. Deprecated.
1753
<p>Giving this option is equivalent to setting the <small>DDD</small>
1754
<code>lessTifVersion</code> resource to <code>1000</code>. See <a href="#LessTif">LessTif</a>, for
1757
<br><dt><code>--no-maintenance</code>
1758
<dd>Do not enable the top-level <code>Maintenance</code> menu with options for
1759
debugging <small>DDD</small>. This is the default. See <a href="#Maintenance%20Menu">Maintenance Menu</a>,
1762
<p>Giving this option is equivalent to setting the <small>DDD</small>
1763
<code>maintenance</code> resource to <var>off</var>. See <a href="#Maintenance%20Menu">Maintenance Menu</a>, for
1766
<br><dt><code>--no-source-window</code>
1767
<dd>Do not open the source window upon start-up.
1769
<p>Giving this option is equivalent to setting the <small>DDD</small>
1770
<code>openSourceWindow</code> resource to <code>off</code>. See <a href="#Toggling%20Windows">Toggling Windows</a>, for details.
1772
<br><dt><code>--no-value-tips</code>
1773
<dd>Disable value tips.
1775
<p>Giving this option is equivalent to setting the <small>DDD</small>
1776
<code>valueTips</code> resource to <code>off</code>. See <a href="#Value%20Tips">Value Tips</a>, for
1779
<br><dt><code>--nw</code>
1780
<dd>Do not use the X window interface. Start the inferior debugger on
1783
<br><dt><code>--perl</code>
1784
<dd>Run Perl as inferior debugger.
1786
<p>Giving this option is equivalent to setting the <small>DDD</small>
1787
<code>debugger</code> resource to <code>perl</code>. See <a href="#Customizing%20Debugger%20Interaction">Customizing Debugger Interaction</a>,
1790
<br><dt><code>--pydb</code>
1791
<dd>Run <small>PYDB</small> as inferior debugger.
1793
<p>Giving this option is equivalent to setting the <small>DDD</small>
1794
<code>debugger</code> resource to <code>pydb</code>. See <a href="#Customizing%20Debugger%20Interaction">Customizing Debugger Interaction</a>,
1797
<br><dt><code>--panned-graph-editor</code>
1798
<dd>Use an Athena panner to scroll the data window. Most people prefer
1799
panners on scroll bars, since panners allow two-dimensional scrolling.
1800
However, the panner is off by default, since some M*tif implementations
1801
do not work well with Athena widgets. See <a href="#Display%20Resources">Display Resources</a>, for
1802
details; see also <code>--scrolled-graph-editor</code>, below.
1804
<p>Giving this option is equivalent to setting the <small>DDD</small>
1805
<code>pannedGraphEditor</code> resource to <code>on</code>. See <a href="#Display%20Resources">Display Resources</a>, for details.
1807
<br><dt><code>--play-log </code><var>log-file</var><code></code>
1808
<dd>Recapitulate a previous <small>DDD</small> session.
1810
<pre class="example"> ddd --play-log <var>log-file</var>
1813
<p>invokes <small>DDD</small> as inferior debugger, simulating the inferior
1814
debugger given in <var>log-file</var> (see below). This is useful for
1815
debugging <small>DDD</small>.
1817
<p>Giving this option is equivalent to setting the <small>DDD</small>
1818
<code>playLog</code> resource to <code>on</code>. See <a href="#Customizing%20Debugger%20Interaction">Customizing Debugger Interaction</a>, for
1821
<br><dt><code>--PLAY </code><var>log-file</var><code></code>
1822
<dd>Simulate an inferior debugger. <var>log-file</var> is a
1823
<code>~/.ddd/log</code> file as generated by some previous
1824
<small>DDD</small> session (see <a href="#Logging">Logging</a>). When a command is entered, scan
1825
<var>log-file</var> for this command and re-issue the logged reply; if the
1826
command is not found, do nothing. This is used by the <code>--play</code>
1829
<br><dt><code>--rhost </code><var>hostname</var><code></code>
1830
<dd><dt><code>--rhost </code><var>username</var><code>@</code><var>hostname</var><code></code>
1831
<dd>Run the inferior debugger interactively on the remote host
1832
<var>hostname</var>. If <var>username</var> is given and the <code>--login</code>
1833
option is not used, use <var>username</var> as remote user name.
1834
See <a href="#Remote%20Debugger">Remote Debugger</a>, for details.
1836
<p>Giving this option is equivalent to setting the <small>DDD</small>
1837
<code>debuggerRHost</code> resource to <var>hostname</var>. See <a href="#Remote%20Debugger">Remote Debugger</a>, for details.
1839
<br><dt><code>--scrolled-graph-editor</code>
1840
<dd>Use M*tif scroll bars to scroll the data window. This is the default in
1841
most <small>DDD</small> configurations. See <a href="#Display%20Resources">Display Resources</a>, for details;
1842
see also <code>--panned-graph-editor</code>, above.
1844
<p>Giving this option is equivalent to setting the <small>DDD</small>
1845
<code>pannedGraphEditor</code> resource to <code>off</code>. See <a href="#Display%20Resources">Display Resources</a>, for details.
1847
<br><dt><code>--separate-windows</code>
1848
<dd><dt><code>--separate</code>
1849
<dd>Separate the console, source and data windows. See also the
1850
<code>--attach</code> options, above.
1852
<p>Giving this option is equivalent to setting the <small>DDD</small>
1853
<code>Separate</code> resource class to <code>off</code>. See <a href="#Window%20Layout">Window Layout</a>, for
1856
<br><dt><code>--session </code><var>session</var><code></code>
1857
<dd>Load <var>session</var> upon start-up. See <a href="#Resuming%20Sessions">Resuming Sessions</a>, for
1860
<p>Giving this option is equivalent to setting the <small>DDD</small>
1861
<code>session</code> resource to <var>session</var>. See <a href="#Resuming%20Sessions">Resuming Sessions</a>, for
1864
<br><dt><code>--source-window</code>
1865
<dd>Open the source window upon start-up.
1867
<p>Giving this option is equivalent to setting the <small>DDD</small>
1868
<code>openSourceWindow</code> resource to <code>on</code>. See <a href="#Toggling%20Windows">Toggling Windows</a>,
1871
<br><dt><code>--status-at-bottom</code>
1872
<dd>Place the status line at the bottom of the source window.
1874
<p>Giving this option is equivalent to setting the <small>DDD</small>
1875
<code>statusAtBottom</code> resource to <code>on</code>. See <a href="#Window%20Layout">Window Layout</a>, for
1878
<br><dt><code>--status-at-top</code>
1879
<dd>Place the status line at the top of the source window.
1881
<p>Giving this option is equivalent to setting the <small>DDD</small>
1882
<code>statusAtBottom</code> resource to <code>off</code>. See <a href="#Window%20Layout">Window Layout</a>, for
1885
<br><dt><code>--sync-debugger</code>
1886
<dd>Do not process X events while the debugger is busy. This may result
1887
in slightly better performance on single-processor systems.
1889
<p>Giving this option is equivalent to setting the <small>DDD</small>
1890
<code>synchronousDebugger</code> resource to <code>on</code>. See <a href="#Customizing%20Debugger%20Interaction">Customizing Debugger Interaction</a>, for details.
1892
<br><dt><code>--toolbars-at-bottom</code>
1893
<dd>Place the toolbars at the bottom of the respective window.
1895
<p>Giving this option is equivalent to setting the <small>DDD</small>
1896
<code>toolbarsAtBottom</code> resource to <code>on</code>. See <a href="#Window%20Layout">Window Layout</a>,
1899
<br><dt><code>--toolbars-at-top</code>
1900
<dd>Place the toolbars at the top of the respective window.
1902
<p>Giving this option is equivalent to setting the <small>DDD</small>
1903
<code>toolbarsAtBottom</code> resource to <code>off</code>. See <a href="#Window%20Layout">Window Layout</a>,
1906
<br><dt><code>--trace</code>
1907
<dd>Show the interaction between <small>DDD</small> and the inferior debugger on
1908
standard error. This is useful for debugging <small>DDD</small>. If
1909
<code>--trace</code> is not specified, this information is written into
1910
<code>~/.ddd/log</code> (<code>~</code> stands for your home directory),
1911
such that you can also do a post-mortem debugging. See <a href="#Logging">Logging</a>, for
1912
details about logging.
1914
<p>Giving this option is equivalent to setting the <small>DDD</small> <code>trace</code>
1915
resource to <var>on</var>. See <a href="#Diagnostics">Diagnostics</a>, for details.
1917
<br><dt><code>--tty</code>
1918
<dd><dt><code>-t</code>
1919
<dd>Enable <small>TTY</small> interface, taking additional debugger commands from
1920
standard input and forwarding debugger output on standard output.
1921
Current positions are issued in a format readable for humans. By
1922
default, the debugger console is disabled.
1924
<p>Giving this option is equivalent to setting the <small>DDD</small>
1925
<code>ttyMode</code> resource to <code>on</code>. See <a href="#TTY%20mode">TTY mode</a>, for details.
1927
<br><dt><code>--value-tips</code>
1928
<dd>Enable value tips.
1930
<p>Giving this option is equivalent to setting the <small>DDD</small>
1931
<code>valueTips</code> resource to <code>on</code>. See <a href="#Value%20Tips">Value Tips</a>, for details.
1933
<br><dt><code>--version</code>
1934
<dd><dt><code>-v</code>
1935
<dd>Print the <small>DDD</small> version on standard output and exit.
1937
<p>Giving this option is equivalent to setting the <small>DDD</small>
1938
<code>showVersion</code> resource to <code>on</code>. See <a href="#Diagnostics">Diagnostics</a>, for
1941
<br><dt><code>--vsl-library </code><var>library</var><code></code>
1942
<dd>Load the <small>VSL</small> library <var>library</var> instead of using the
1943
<small>DDD</small> built-in library. This is useful for customizing
1944
display shapes and fonts.
1946
<p>Giving this option is equivalent to setting the <small>DDD</small> <code>vslLibrary</code>
1947
resource to <var>library</var>. See <a href="#VSL%20Resources">VSL Resources</a>, for details.
1949
<br><dt><code>--vsl-path </code><var>path</var><code></code>
1950
<dd>Search <small>VSL</small> libraries in <var>path</var> (a colon-separated directory list).
1952
<p>Giving this option is equivalent to setting the <small>DDD</small> <code>vslPath</code>
1953
resource to <var>path</var>. See <a href="#VSL%20Resources">VSL Resources</a>, for details.
1955
<br><dt><code>--vsl-help</code>
1956
<dd>Show a list of further options controlling the <small>VSL</small> interpreter. These
1957
options are intended for debugging purposes and are subject to change
1958
without further notice.
1960
<br><dt><code>--wdb</code>
1961
<dd>Run <small>WDB</small> as inferior debugger.
1963
<p>Giving this option is equivalent to setting the <small>DDD</small>
1964
<code>debugger</code> resource to <code>wdb</code>. See <a href="#Customizing%20Debugger%20Interaction">Customizing Debugger Interaction</a>, for details.
1966
<br><dt><code>--xdb</code>
1967
<dd>Run <small>XDB</small> as inferior debugger.
1969
<p>Giving this option is equivalent to setting the <small>DDD</small>
1970
<code>debugger</code> resource to <code>xdb</code>. See <a href="#Customizing%20Debugger%20Interaction">Customizing Debugger Interaction</a>, for details.
1975
<small class=header>
1976
Node:<a name="X%20Options">X Options</a>,
1977
Next:<a rel="next" accesskey="n" href="#Inferior%20Debugger%20Options">Inferior Debugger Options</a>,
1978
Previous:<a rel="previous" accesskey="p" href="#Options">Options</a>,
1979
Up:<a rel="up" accesskey="u" href="#Invoking">Invoking</a>
1985
<h4 class="subsection">X Options</h4>
1987
<p><small>DDD</small> also understands the following X options. Note that these
1988
options only take a single dash <code>-</code>.
1991
<dt><code>-display </code><var>display</var><code></code>
1992
<dd>Use the X server <var>display</var>. By default, <var>display</var> is taken from
1993
the <code>DISPLAY</code> environment variable.
1995
<br><dt><code>-geometry </code><var>geometry</var><code></code>
1996
<dd>Specify the initial size and location of the debugger console.
1998
<br><dt><code>-iconic</code>
1999
<dd>Start <small>DDD</small> iconified.
2001
<br><dt><code>-name </code><var>name</var><code></code>
2002
<dd>Give <small>DDD</small> the name <var>name</var>.
2004
<br><dt><code>-selectionTimeout </code><var>timeout</var><code></code>
2005
<dd>Specify the timeout in milliseconds within which two communicating
2006
applications must respond to one another for a selection request.
2008
<br><dt><code>-title </code><var>name</var><code></code>
2009
<dd>Give the <small>DDD</small> window the title <var>name</var>.
2011
<br><dt><code>-xrm </code><var>resourcestring</var><code></code>
2012
<dd>Specify a resource name and value to override any defaults.
2017
<small class=header>
2018
Node:<a name="Inferior%20Debugger%20Options">Inferior Debugger Options</a>,
2019
Next:<a rel="next" accesskey="n" href="#Multiple%20Instances">Multiple Instances</a>,
2020
Previous:<a rel="previous" accesskey="p" href="#X%20Options">X Options</a>,
2021
Up:<a rel="up" accesskey="u" href="#Invoking">Invoking</a>
2027
<h4 class="subsection">Inferior Debugger Options</h4>
2029
<p>All options that <small>DDD</small> does not recognize are passed to the inferior
2030
debugger. This section lists the most useful options of the different
2031
inferior debuggers supported by <small>DDD</small>. In case these options do not
2032
work as expected, please lookup the appropriate reference.
2035
<li><a accesskey="1" href="#GDB%20Options">GDB Options</a>:
2036
<li><a accesskey="2" href="#DBX%20and%20Ladebug%20Options">DBX and Ladebug Options</a>:
2037
<li><a accesskey="3" href="#XDB%20Options">XDB Options</a>:
2038
<li><a accesskey="4" href="#JDB%20Options">JDB Options</a>:
2039
<li><a accesskey="5" href="#PYDB%20Options">PYDB Options</a>:
2040
<li><a accesskey="6" href="#Perl%20Options">Perl Options</a>:
2041
<li><a accesskey="7" href="#Bash%20Options">Bash Options</a>:
2046
<small class=header>
2047
Node:<a name="GDB%20Options">GDB Options</a>,
2048
Next:<a rel="next" accesskey="n" href="#DBX%20and%20Ladebug%20Options">DBX and Ladebug Options</a>,
2049
Up:<a rel="up" accesskey="u" href="#Inferior%20Debugger%20Options">Inferior Debugger Options</a>
2055
<h5 class="subsubsection">GDB Options</h5>
2057
<p>These <small>GDB</small> options are useful when using <small>DDD</small> with <small>GDB</small> as inferior
2058
debugger. Single dashes <code>-</code> instead of double dashes <code>--</code> may
2062
<dt><code>-b </code><var>baudrate</var><code></code>
2063
<dd>Set serial port baud rate used for remote debugging.
2065
<br><dt><code>--cd </code><var>dir</var><code></code>
2066
<dd>Change current directory to <var>dir</var>.
2068
<br><dt><code>--command </code><var>file</var><code></code>
2069
<dd>Execute <small>GDB</small> commands from <var>file</var>.
2071
<br><dt><code>--core </code><var>corefile</var><code></code>
2072
<dd>Analyze the core dump <var>corefile</var>.
2074
<br><dt><code>--directory </code><var>dir</var><code></code>
2075
<dd><dt><code>-d </code><var>dir</var><code></code>
2076
<dd>Add <var>directory</var> to the path to search for source files.
2078
<br><dt><code>--exec </code><var>execfile</var><code></code>
2079
<dd>Use <var>execfile</var> as the executable.
2081
<br><dt><code>--mapped</code>
2082
<dd>Use mapped symbol files if supported on this system.
2084
<br><dt><code>--nx</code>
2085
<dd><br><dt><code>-n</code>
2086
<dd>Do not read <code>.gdbinit</code> file.
2088
<br><dt><code>--readnow</code>
2089
<dd>Fully read symbol files on first access.
2091
<br><dt><code>--se </code><var>file</var><code></code>
2092
<dd>Use <var>file</var> as symbol file and executable file.
2094
<br><dt><code>--symbols </code><var>symfile</var><code></code>
2095
<dd>Read symbols from <var>symfile</var>.
2098
<p>See <a href="gdb.html#Invoking%20GDB">Invoking GDB</a>, for further options that can be used with <small>GDB</small>.
2102
<small class=header>
2103
Node:<a name="DBX%20and%20Ladebug%20Options">DBX and Ladebug Options</a>,
2104
Next:<a rel="next" accesskey="n" href="#XDB%20Options">XDB Options</a>,
2105
Previous:<a rel="previous" accesskey="p" href="#GDB%20Options">GDB Options</a>,
2106
Up:<a rel="up" accesskey="u" href="#Inferior%20Debugger%20Options">Inferior Debugger Options</a>
2112
<h5 class="subsubsection">DBX and Ladebug Options</h5>
2114
<p><small>DBX</small> variants differ widely in their options, so we cannot give a list
2115
here. Check out the <cite>dbx(1)</cite> and <cite>ladebug(1)</cite> manual pages.
2119
<small class=header>
2120
Node:<a name="XDB%20Options">XDB Options</a>,
2121
Next:<a rel="next" accesskey="n" href="#JDB%20Options">JDB Options</a>,
2122
Previous:<a rel="previous" accesskey="p" href="#DBX%20and%20Ladebug%20Options">DBX and Ladebug Options</a>,
2123
Up:<a rel="up" accesskey="u" href="#Inferior%20Debugger%20Options">Inferior Debugger Options</a>
2129
<h5 class="subsubsection">XDB Options</h5>
2131
<p>These <small>XDB</small> options are useful when using <small>DDD</small> with <small>XDB</small> as inferior
2135
<dt><code>-d </code><var>dir</var><code></code>
2136
<dd>Specify <var>dir</var> as an alternate directory where source files are
2139
<br><dt><code>-P </code><var>process-id</var><code></code>
2140
<dd>Specify the process ID of an existing process the user wants to debug.
2142
<br><dt><code>-l </code><var>library</var><code></code>
2143
<dd>Pre-load information about the shared library <var>library</var>. <code>-l
2144
ALL</code> means always pre-load shared library information.
2146
<br><dt><code>-S </code><var>num</var><code></code>
2147
<dd>Set the size of the string cache to <var>num</var> bytes (default is 1024,
2148
which is also the minimum).
2150
<br><dt><code>-s</code>
2151
<dd>Enable debugging of shared libraries.
2154
<p>Further options can be found in the <cite>xdb(1)</cite> manual page.
2158
<small class=header>
2159
Node:<a name="JDB%20Options">JDB Options</a>,
2160
Next:<a rel="next" accesskey="n" href="#PYDB%20Options">PYDB Options</a>,
2161
Previous:<a rel="previous" accesskey="p" href="#XDB%20Options">XDB Options</a>,
2162
Up:<a rel="up" accesskey="u" href="#Inferior%20Debugger%20Options">Inferior Debugger Options</a>
2168
<h5 class="subsubsection">JDB Options</h5>
2170
<h5 class="subsubheading">JDB as of JDK 1.2</h5>
2172
<p>The following <small>JDB</small> options are useful when using <small>DDD</small> with <small>JDB</small>
2173
(from <small>JDK</small> 1.2) as inferior debugger.
2176
<dt><code>-attach </code><var>address</var><code></code>
2177
<dd>attach to a running virtual machine (VM)
2178
at <var>address</var> using standard connector
2180
<br><dt><code>-listen </code><var>address</var><code></code>
2181
<dd>wait for a running VM to connect at <var>address</var> using standard connector
2183
<br><dt><code>-listenany</code>
2184
<dd>wait for a running VM to connect at any available address using
2187
<br><dt><code>-launch</code>
2188
<dd>launch VM immediately instead of waiting for <code>run</code> command
2191
<p>These <small>JDB</small> options are forwarded to the debuggee:
2194
<dt><code>-verbose[:class|gc|jni]</code>
2195
<dd><dt><code>-v</code>
2196
<dd>Turn on verbose mode.
2198
<br><dt><code>-D</code><var>name</var><code>=</code><var>value</var><code></code>
2199
<dd>Set the system property <var>name</var> to <var>value</var>.
2201
<br><dt><code>-classpath </code><var>path</var><code></code>
2202
<dd>List directories in which to look for classes. <var>path</var> is a list of
2203
directories separated by colons.
2205
<br><dt><code>-X </code><var>option</var><code></code>
2206
<dd>Non-standard target VM option
2209
<h5 class="subsubheading">JDB as of JDK 1.1</h5>
2211
<p>The following <small>JDB</small> options are useful when using <small>DDD</small> with <small>JDB</small>
2212
(from <small>JDK</small> 1.1) as inferior debugger.
2215
<dt><code>-host </code><var>hostname</var><code></code>
2216
<dd>host machine of interpreter to attach to
2218
<br><dt><code>-password </code><var>psswd</var><code></code>
2219
<dd>password of interpreter to attach to (from <code>-debug</code>)
2222
<p>These <small>JDB</small> options are forwarded to the debuggee:
2225
<dt><code>-verbose</code>
2226
<dd><dt><code>-v</code>
2227
<dd>Turn on verbose mode.
2229
<br><dt><code>-debug</code>
2230
<dd>Enable remote Java debugging,
2232
<br><dt><code>-noasyncgc</code>
2233
<dd>Don't allow asynchronous garbage collection.
2235
<br><dt><code>-verbosegc</code>
2236
<dd>Print a message when garbage collection occurs.
2238
<br><dt><code>-noclassgc</code>
2239
<dd>Disable class garbage collection.
2241
<br><dt><code>-checksource</code>
2242
<dd><dt><code>-cs</code>
2243
<dd>Check if source is newer when loading classes.
2245
<br><dt><code>-ss </code><var>number</var><code></code>
2246
<dd>Set the maximum native stack size for any thread.
2248
<br><dt><code>-oss </code><var>number</var><code></code>
2249
<dd>Set the maximum Java stack size for any thread.
2251
<br><dt><code>-ms </code><var>number</var><code></code>
2252
<dd>Set the initial Java heap size.
2254
<br><dt><code>-mx </code><var>number</var><code></code>
2255
<dd>Set the maximum Java heap size.
2257
<br><dt><code>-D</code><var>name</var><code>=</code><var>value</var><code></code>
2258
<dd>Set the system property <var>name</var> to <var>value</var>.
2260
<br><dt><code>-classpath </code><var>path</var><code></code>
2261
<dd>List directories in which to look for classes. <var>path</var> is a list of
2262
directories separated by colons.
2264
<br><dt><code>-prof</code>
2265
<dd><dt><code>-prof:</code><var>file</var><code></code>
2266
<dd>Output profiling data to <code>./java.prof</code>. If <var>file</var> is given,
2267
write the data to <code>./</code><var>file</var><code></code>.
2269
<br><dt><code>-verify</code>
2270
<dd>Verify all classes when read in.
2272
<br><dt><code>-verifyremote</code>
2273
<dd>Verify classes read in over the network (default).
2275
<br><dt><code>-noverify</code>
2276
<dd>Do not verify any class.
2278
<br><dt><code>-dbgtrace</code>
2279
<dd>Print info for debugging <small>JDB</small>.
2282
<p>Further options can be found in the <small>JDB</small> documentation.
2286
<small class=header>
2287
Node:<a name="PYDB%20Options">PYDB Options</a>,
2288
Next:<a rel="next" accesskey="n" href="#Perl%20Options">Perl Options</a>,
2289
Previous:<a rel="previous" accesskey="p" href="#JDB%20Options">JDB Options</a>,
2290
Up:<a rel="up" accesskey="u" href="#Inferior%20Debugger%20Options">Inferior Debugger Options</a>
2296
<h5 class="subsubsection">PYDB Options</h5>
2298
<p>For a list of useful <small>PYDB</small> options, check out the <small>PYDB</small> documentation.
2302
<small class=header>
2303
Node:<a name="Perl%20Options">Perl Options</a>,
2304
Next:<a rel="next" accesskey="n" href="#Bash%20Options">Bash Options</a>,
2305
Previous:<a rel="previous" accesskey="p" href="#PYDB%20Options">PYDB Options</a>,
2306
Up:<a rel="up" accesskey="u" href="#Inferior%20Debugger%20Options">Inferior Debugger Options</a>
2312
<h5 class="subsubsection">Perl Options</h5>
2314
<p>The most important Perl option to use with <small>DDD</small> is <code>-w</code>; it
2315
enables several important warnings. For further options, see the
2316
<cite>perlrun(1)</cite> manual page.
2320
<small class=header>
2321
Node:<a name="Bash%20Options">Bash Options</a>,
2322
Previous:<a rel="previous" accesskey="p" href="#Perl%20Options">Perl Options</a>,
2323
Up:<a rel="up" accesskey="u" href="#Inferior%20Debugger%20Options">Inferior Debugger Options</a>
2329
<h5 class="subsubsection">Bash Options</h5>
2331
<p>If you have the proper bash installed, the option needed to specify
2332
debugging support is <code>--debugger</code>. (If your bash doesn't
2333
understand this option you need to pick up a version of bash that does
2334
from <a href="http://bashdb.sourceforge.net">http://bashdb.sourceforge.net</a>.)
2338
<small class=header>
2339
Node:<a name="Multiple%20Instances">Multiple Instances</a>,
2340
Next:<a rel="next" accesskey="n" href="#X%20Warnings">X Warnings</a>,
2341
Previous:<a rel="previous" accesskey="p" href="#Inferior%20Debugger%20Options">Inferior Debugger Options</a>,
2342
Up:<a rel="up" accesskey="u" href="#Invoking">Invoking</a>
2348
<h4 class="subsection">Multiple DDD Instances</h4>
2350
<p>If you have multiple <small>DDD</small> instances running, they share common
2351
preferences and history files. This means that changes applied to one
2352
instance may get lost when being overwritten by the other instance.
2353
<small>DDD</small> has two means to protect you against unwanted losses. The
2354
first means is an automatic reloading of changed options, controlled by
2355
the following resource (see <a href="#Customizing">Customizing</a>):
2358
<table width="100%">
2360
<td align="left"><b>checkOptions</b><i> </i>(<i>class CheckOptions</i>)<i>
2362
<td align="right">Resource</td>
2365
<table width="95%" align="center">
2367
Every <var>n</var> seconds, where <var>n</var> is the value of this resource,
2368
<small>DDD</small> checks whether the options file has changed. Default is
2369
<code>30</code>, which means that every 30 seconds, <small>DDD</small> checks for the
2370
options file. Setting this resource to <code>0</code> disables checking for
2371
changed option files.
2375
<p>Normally, automatic reloading of options should already suffice. If you
2376
need stronger protection, <small>DDD</small> also provides a warning against
2377
multiple instances. This warning is disabled by default, If you want to
2378
be warned about multiple <small>DDD</small> invocations sharing the same
2379
preferences and history files, enable <code>Edit => Preferences
2380
=> Warn if Multiple </code><small>DDD</small><code> Instances are Running</code>.
2382
<p>This setting is tied to the following resource (see <a href="#Customizing">Customizing</a>):
2385
<table width="100%">
2387
<td align="left"><b>warnIfLocked</b><i> </i>(<i>class WarnIfLocked</i>)<i>
2389
<td align="right">Resource</td>
2392
<table width="95%" align="center">
2394
Whether to warn if multiple <small>DDD</small> instances are running
2395
(<code>on</code>) or not (<code>off</code>, default).
2401
<small class=header>
2402
Node:<a name="X%20Warnings">X Warnings</a>,
2403
Previous:<a rel="previous" accesskey="p" href="#Multiple%20Instances">Multiple Instances</a>,
2404
Up:<a rel="up" accesskey="u" href="#Invoking">Invoking</a>
2410
<h4 class="subsection">X warnings</h4>
2412
<p>If you are bothered by X warnings, you can suppress them by setting
2413
<code>Edit => Preferences => General => Suppress X
2416
<p>This setting is tied to the following resource (see <a href="#Customizing">Customizing</a>):
2419
<table width="100%">
2421
<td align="left"><b>suppressWarnings</b><i> </i>(<i>class SuppressWarnings</i>)<i>
2423
<td align="right">Resource</td>
2426
<table width="95%" align="center">
2428
If <code>on</code>, X warnings are suppressed. This is
2429
sometimes useful for executables that were built on a machine with a
2430
different X or M*tif configuration. By default, this is
2437
<small class=header>
2438
Node:<a name="Quitting">Quitting</a>,
2439
Next:<a rel="next" accesskey="n" href="#Sessions">Sessions</a>,
2440
Previous:<a rel="previous" accesskey="p" href="#Invoking">Invoking</a>,
2441
Up:<a rel="up" accesskey="u" href="#Invocation">Invocation</a>
2447
<h3 class="section">Quitting DDD</h3>
2449
<p>To exit <small>DDD</small>, select <code>File => Exit</code>. You may also
2450
type the <code>quit</code> command at the debugger prompt or press
2451
<Ctrl+Q>. <small>GDB</small> and <small>XDB</small> also accept the <code>q</code> command or an
2452
end-of-file character (usually <Ctrl+D>). Closing the last
2453
<small>DDD</small> window will also exit <small>DDD</small>.
2455
<p>An interrupt (<ESC> or <code>Interrupt</code>) does not exit from
2456
<small>DDD</small>, but rather terminates the action of any debugger command
2457
that is in progress and returns to the debugger command level. It is
2458
safe to type the interrupt character at any time because the debugger
2459
does not allow it to take effect until a time when it is safe.
2461
<p>In case an ordinary interrupt does not succeed, you can also use an
2462
abort (<Ctrl+\> or <code>Abort</code>), which sends a <code>SIGABRT</code>
2463
signal to the inferior debugger. Use this in emergencies only; the
2464
inferior debugger may be left inconsistent or even exit after a
2465
<code>SIGABRT</code> signal.
2467
<p>As a last resort (if <small>DDD</small> hangs, for example), you may also
2468
interrupt <small>DDD</small> itself using an interrupt signal (<code>SIGINT</code>).
2469
This can be done by typing the interrupt character (usually
2470
<Ctrl+C>) in the shell <small>DDD</small> was started from, or by using the
2471
<small>UNIX</small> <code>kill</code> command. An interrupt signal interrupts any
2472
<small>DDD</small> action; the inferior debugger is interrupted as well. Since
2473
this interrupt signal can result in internal inconsistencies, use this
2474
as a last resort in emergencies only; save your work as soon as possible
2475
and restart <small>DDD</small>.
2479
<small class=header>
2480
Node:<a name="Sessions">Sessions</a>,
2481
Next:<a rel="next" accesskey="n" href="#Remote%20Debugging">Remote Debugging</a>,
2482
Previous:<a rel="previous" accesskey="p" href="#Quitting">Quitting</a>,
2483
Up:<a rel="up" accesskey="u" href="#Invocation">Invocation</a>
2489
<h3 class="section">Persistent Sessions</h3>
2491
<p>If you want to interrupt your current <small>DDD</small> session, you can save
2492
the entire the entire <small>DDD</small> state as <dfn>session</dfn> on disk and
2496
<li><a accesskey="1" href="#Saving%20Sessions">Saving Sessions</a>:
2497
<li><a accesskey="2" href="#Resuming%20Sessions">Resuming Sessions</a>:
2498
<li><a accesskey="3" href="#Deleting%20Sessions">Deleting Sessions</a>:
2499
<li><a accesskey="4" href="#Customizing%20Sessions">Customizing Sessions</a>:
2504
<small class=header>
2505
Node:<a name="Saving%20Sessions">Saving Sessions</a>,
2506
Next:<a rel="next" accesskey="n" href="#Resuming%20Sessions">Resuming Sessions</a>,
2507
Up:<a rel="up" accesskey="u" href="#Sessions">Sessions</a>
2513
<h4 class="subsection">Saving Sessions</h4>
2515
<p>To save a session, select <code>File => Save Session As</code>. You will
2516
be asked for a symbolic session name <var>session</var>.
2518
<p>If your program is running (see <a href="#Running">Running</a>), or if you have opened a
2519
core file (see <a href="#Opening%20Core%20Dumps">Opening Core Dumps</a>), <small>DDD</small> can also include a
2520
core file in the session such that the debuggee data will be restored
2521
when re-opening it. To get a core file, <small>DDD</small> typically must
2522
<dfn>kill</dfn> the debuggee. This means that you cannot resume program
2523
execution after saving a session. Depending on your architecture, other
2524
options for getting a core file may also be available.
2526
<p>Including a core dump is necessary for restoring memory contents and the
2527
current execution position. To include a core dump, enable
2528
<code>Include Core Dump</code>.
2531
<div align="center"><img src="PICS/ddd-save-session.jpg" alt="PICS/ddd-save-session.jpg"></div>
2533
<p>After clicking on <code>Save</code>, the session is saved in
2534
<code>~/.ddd/sessions/</code><var>session</var><code></code>.
2536
<p>Here's a list of the items whose state is saved in a session:
2538
<li>The state of the debugged program, as a core file.<a rel="footnote" href="#fn-5"><sup>5</sup></a>
2540
<li>All breakpoints and watchpoints (see <a href="#Stopping">Stopping</a>).
2542
<li>All signal settings (see <a href="#Signals">Signals</a>).
2544
<li>All displays (see <a href="#Displaying%20Values">Displaying Values</a>).<a rel="footnote" href="#fn-6"><sup>6</sup></a>
2546
<li>All <small>DDD</small> options (see <a href="#Saving%20Options">Saving Options</a>).
2548
<li>All debugger settings (see <a href="#Debugger%20Settings">Debugger Settings</a>).
2550
<li>All user-defined buttons (see <a href="#Defining%20Buttons">Defining Buttons</a>).
2552
<li>All user-defined commands (see <a href="#Defining%20Commands">Defining Commands</a>).
2554
<li>The positions and sizes of <small>DDD</small> windows.
2556
<li>The command history (see <a href="#Command%20History">Command History</a>).
2559
<p>After saving the current state as a session, the session becomes
2560
<dfn>active</dfn>. This means that <small>DDD</small> state will be saved as
2564
<li>User options will be saved in
2565
<code>~/.ddd/sessions/</code><var>session</var><code>/init</code> instead of
2566
<code>~/.ddd/init</code>. See <a href="#Saving%20Options">Saving Options</a>, for details.
2568
<li>The <small>DDD</small> command history will be saved in
2569
<code>~/.ddd/sessions/</code><var>session</var><code>/history</code> instead of
2570
<code>~/.ddd/history</code>. See <a href="#Command%20History">Command History</a>, for details.
2573
<p>To make the current session inactive, open the <em>default session</em>
2574
named <code>[None]</code>. See <a href="#Resuming%20Sessions">Resuming Sessions</a>, for details on opening
2579
<small class=header>
2580
Node:<a name="Resuming%20Sessions">Resuming Sessions</a>,
2581
Next:<a rel="next" accesskey="n" href="#Deleting%20Sessions">Deleting Sessions</a>,
2582
Previous:<a rel="previous" accesskey="p" href="#Saving%20Sessions">Saving Sessions</a>,
2583
Up:<a rel="up" accesskey="u" href="#Sessions">Sessions</a>
2589
<h4 class="subsection">Resuming Sessions</h4>
2591
<p>To resume a previously saved session, select <code>File => Open
2592
Session</code> and choose a session name from the list. After clicking on
2593
<code>Open</code>, the entire <small>DDD</small> state will be restored from the
2596
<p>The session named <code>[None]</code> is the <dfn>default session</dfn> which is
2597
active when starting <small>DDD</small>. To save options for default sessions,
2598
choose the default session before exiting <small>DDD</small>. See <a href="#Saving%20Options">Saving Options</a>, for details.
2601
<div align="center"><img src="PICS/ddd-open-session.jpg" alt="PICS/ddd-open-session.jpg"></div>
2603
<p>If a the restored session includes a core dump, the program being
2604
debugged will be in the same state at the time the session was saved; in
2605
particular, you can examine the program data. However, you will not be
2606
able to resume program execution since the process and its environment
2607
(open files, resources, etc.) no longer exist. However, you can restart
2608
the program, re-using the restored breakpoints and data displays.
2610
<p>Opening sessions also restores command definitions, buttons, display
2611
shortcuts and the source tab width. This way, you can maintain a
2612
different set of definitions for each session.
2614
<p>You can also specify a session to open when starting <small>DDD</small>. To
2615
invoke <small>DDD</small> with a session <var>session</var>, use
2617
<pre class="example"> ddd --session <var>session</var>
2620
<p>There is also a shortcut that opens the session <var>session</var> and
2621
invokes the inferior debugger on an executable named <var>session</var> (in
2622
case <var>session</var> cannot be opened):
2624
<pre class="example"> ddd =<var>session</var>
2627
<p>There is no need to give further command-line options when restarting a
2628
session, as they will be overridden by the options saved in the session.
2630
<p>You can also use an X session manager such as <code>xsm</code> to save and
2631
restore <small>DDD</small> sessions.<a rel="footnote" href="#fn-7"><sup>7</sup></a> When
2632
being shut down by a session manager, <small>DDD</small> saves its state under
2633
the name specified by the session manager; resuming the X session makes
2634
<small>DDD</small> reload its saved state.
2638
<small class=header>
2639
Node:<a name="Deleting%20Sessions">Deleting Sessions</a>,
2640
Next:<a rel="next" accesskey="n" href="#Customizing%20Sessions">Customizing Sessions</a>,
2641
Previous:<a rel="previous" accesskey="p" href="#Resuming%20Sessions">Resuming Sessions</a>,
2642
Up:<a rel="up" accesskey="u" href="#Sessions">Sessions</a>
2648
<h4 class="subsection">Deleting Sessions</h4>
2650
<p>To delete sessions that are no longer needed, select <code>File
2651
=> Open Session</code> or <code>File => Save Session</code>. Select
2652
the sessions you want to delete and click on <code>Delete</code>.
2654
<p>The default session <code>[None]</code> cannot be deleted.
2658
<small class=header>
2659
Node:<a name="Customizing%20Sessions">Customizing Sessions</a>,
2660
Previous:<a rel="previous" accesskey="p" href="#Deleting%20Sessions">Deleting Sessions</a>,
2661
Up:<a rel="up" accesskey="u" href="#Sessions">Sessions</a>
2667
<h4 class="subsection">Customizing Sessions</h4>
2669
<p>You can change the place where <small>DDD</small> saves its sessions by setting
2670
the environment variable <code>DDD_SESSIONS</code> to the name of a directory.
2671
Default is <code>~/.ddd/sessions/</code>.
2673
<p>Where applicable, <small>DDD</small> supports a <code>gcore</code> command to obtain
2674
core files of the running program. You can enter its path via
2675
<code>Edit => Preferences => Helpers => Get Core
2676
File</code>. Leave the value empty if you have no <code>gcore</code> or similar
2679
<p>This setting is tied to the following resource (see <a href="#Customizing">Customizing</a>):
2682
<table width="100%">
2684
<td align="left"><b>getCoreCommand</b><i> </i>(<i>class GetCoreCommand</i>)<i>
2686
<td align="right">Resource</td>
2689
<table width="95%" align="center">
2691
A command to get a core dump of a running process (typically,
2692
<code>gcore</code>) <code>@FILE@</code> is replaced by the base name of the file
2693
to create; <code>@PID@</code> is replaced by the process id. The output
2694
must be written to <code>@FILE@.@PID@</code>.
2696
<p>Leave the value empty if you have no <code>gcore</code> or similar command.
2702
<small class=header>
2703
Node:<a name="Remote%20Debugging">Remote Debugging</a>,
2704
Next:<a rel="next" accesskey="n" href="#Customizing%20Debugger%20Interaction">Customizing Debugger Interaction</a>,
2705
Previous:<a rel="previous" accesskey="p" href="#Sessions">Sessions</a>,
2706
Up:<a rel="up" accesskey="u" href="#Invocation">Invocation</a>
2712
<h3 class="section">Remote Debugging</h3>
2714
<p>You can have each of <small>DDD</small>, the inferior debugger, and the
2715
debugged program run on different machines.
2718
<li><a accesskey="1" href="#Remote%20Host">Remote Host</a>: Running <small>DDD</small> on a Remote Host
2719
<li><a accesskey="2" href="#Remote%20Debugger">Remote Debugger</a>: Using a Remote Inferior Debugger
2720
<li><a accesskey="3" href="#Remote%20Program">Remote Program</a>: Debugging a Remote Program
2725
<small class=header>
2726
Node:<a name="Remote%20Host">Remote Host</a>,
2727
Next:<a rel="next" accesskey="n" href="#Remote%20Debugger">Remote Debugger</a>,
2728
Up:<a rel="up" accesskey="u" href="#Remote%20Debugging">Remote Debugging</a>
2734
<h4 class="subsection">Running DDD on a Remote Host</h4>
2736
<p>You can run <small>DDD</small> on a remote host, using your current host as X
2737
display. On the remote host, invoke <small>DDD</small> as
2739
<pre class="example"> ddd -display <var>display</var>
2742
<p>where <var>display</var> is the name of the X server to connect to (for
2743
instance, <code></code><var>hostname</var><code>:0.0</code>, where <var>hostname</var> is your host).
2745
<p>Instead of specifying <code>-display </code><var>display</var><code></code>, you can also set
2746
the <code>DISPLAY</code> environment variable to <var>display</var>.
2750
<small class=header>
2751
Node:<a name="Remote%20Debugger">Remote Debugger</a>,
2752
Next:<a rel="next" accesskey="n" href="#Remote%20Program">Remote Program</a>,
2753
Previous:<a rel="previous" accesskey="p" href="#Remote%20Host">Remote Host</a>,
2754
Up:<a rel="up" accesskey="u" href="#Remote%20Debugging">Remote Debugging</a>
2760
<h4 class="subsection">Using DDD with a Remote Inferior Debugger</h4>
2762
<p>In order to run the inferior debugger on a remote host, you need
2763
<code>remsh</code> (called <code>rsh</code> on BSD systems) access on the remote
2766
<p>To run the debugger on a remote host <var>hostname</var>, invoke <small>DDD</small> as
2767
<pre class="example"> ddd --host <var>hostname</var> <var>remote-program</var>
2770
<p>If your remote <var>username</var> differs from the local username, use
2772
<pre class="example"> ddd --host <var>hostname</var> --login <var>username</var> <var>remote-program</var>
2777
<pre class="example"> ddd --host <var>username</var>@<var>hostname</var> <var>remote-program</var>
2782
<p>There are a few <em>caveats</em> in remote mode:
2785
<li>The remote debugger is started in your remote home directory. Hence,
2786
you must specify an absolute path name for <var>remote-program</var> (or a
2787
path name relative to your remote home directory). Same applies to
2788
remote core files. Also, be sure to specify a remote process id when
2789
debugging a running program.
2791
<li>The remote debugger is started non-interactively. Some <small>DBX</small> versions
2792
have trouble with this. If you do not get a prompt from the remote
2793
debugger, use the <code>--rhost</code> option instead of <code>--host</code>. This
2794
will invoke the remote debugger via an interactive shell on the remote
2795
host, which may lead to better results.
2797
<p>Note: using <code>--rhost</code>, <small>DDD</small> invokes the inferior debugger as
2798
soon as a shell prompt appears. The first output on the remote host
2799
ending in a space character or <code>></code> and not followed by a newline is
2800
assumed to be a shell prompt. If necessary, adjust your shell prompt on
2803
</p><li>To run the remote program, <small>DDD</small> invokes an <code>xterm</code> terminal
2804
emulator on the remote host, giving your current <code>DISPLAY</code>
2805
environment variable as address. If the remote host cannot invoke
2806
<code>xterm</code>, or does not have access to your X display, start
2807
<small>DDD</small> with the <code>--no-exec-window</code> option. The program
2808
input/output will then go through the <small>DDD</small> debugger console.
2810
<li>In remote mode, all sources are loaded from the remote host; file
2811
dialogs scan remote directories. This may result in somewhat slower
2812
operation than normal.
2814
<li>To help you find problems due to remote execution, run <small>DDD</small> with
2815
the <code>--trace</code> option. This prints the shell commands issued by
2816
<small>DDD</small> on standard error.
2819
<p>See <a href="#Customizing%20Remote%20Debugging">Customizing Remote Debugging</a>, for customizing remote mode.
2822
<li><a accesskey="1" href="#Customizing%20Remote%20Debugging">Customizing Remote Debugging</a>:
2827
<small class=header>
2828
Node:<a name="Customizing%20Remote%20Debugging">Customizing Remote Debugging</a>,
2829
Up:<a rel="up" accesskey="u" href="#Remote%20Debugger">Remote Debugger</a>
2835
<h5 class="subsubsection">Customizing Remote Debugging</h5>
2837
<p>When having the inferior debugger run on a remote host (see <a href="#Remote%20Debugging">Remote Debugging</a>), all commands to access the inferior debugger as well as its
2838
files must be run remotely. This is controlled by the following
2839
resources (see <a href="#Customizing">Customizing</a>):
2842
<table width="100%">
2844
<td align="left"><b>rshCommand</b><i> </i>(<i>class RshCommand</i>)<i>
2846
<td align="right">Resource</td>
2849
<table width="95%" align="center">
2851
The remote shell command to invoke <small>TTY</small>-based commands on
2852
remote hosts. Usually, <code>remsh</code>, <code>rsh</code>, <code>ssh</code>,
2858
<table width="100%">
2860
<td align="left"><b>listCoreCommand</b><i> </i>(<i>class listCoreCommand</i>)<i>
2862
<td align="right">Resource</td>
2865
<table width="95%" align="center">
2867
The command to list all core files on the remote host. The string
2868
<code>@MASK@</code> is replaced by a file filter. The default setting is:
2870
<pre class="example"> Ddd*listCoreCommand: \
2871
file @MASK@ | grep '.*:.*core.*' | cut -d: -f1
2877
<table width="100%">
2879
<td align="left"><b>listDirCommand</b><i> </i>(<i>class listDirCommand</i>)<i>
2881
<td align="right">Resource</td>
2884
<table width="95%" align="center">
2886
The command to list all directories on the remote host. The string
2887
<code>@MASK@</code> is replaced by a file filter. The default setting is:
2889
<pre class="example"> Ddd*listDirCommand: \
2890
file @MASK@ | grep '.*:.*directory.*' | cut -d: -f1
2896
<table width="100%">
2898
<td align="left"><b>listExecCommand</b><i> </i>(<i>class listExecCommand</i>)<i>
2900
<td align="right">Resource</td>
2903
<table width="95%" align="center">
2905
The command to list all executable files on the remote host. The string
2906
<code>@MASK@</code> is replaced by a file filter. The default setting is:
2908
<pre class="example"> Ddd*listExecCommand: \
2909
file @MASK@ | grep '.*:.*exec.*' \
2910
| grep -v '.*:.*script.*' \
2911
| cut -d: -f1 | grep -v '.*\.o$'
2917
<table width="100%">
2919
<td align="left"><b>listSourceCommand</b><i> </i>(<i>class listSourceCommand</i>)<i>
2921
<td align="right">Resource</td>
2924
<table width="95%" align="center">
2926
The command to list all source files on the remote host. The string
2927
<code>@MASK@</code> is replaced by a file filter. The default setting is:
2929
<pre class="example"> Ddd*listSourceCommand: \
2930
file @MASK@ | grep '.*:.*text.*' | cut -d: -f1
2937
<small class=header>
2938
Node:<a name="Remote%20Program">Remote Program</a>,
2939
Previous:<a rel="previous" accesskey="p" href="#Remote%20Debugger">Remote Debugger</a>,
2940
Up:<a rel="up" accesskey="u" href="#Remote%20Debugging">Remote Debugging</a>
2946
<h4 class="subsection">Debugging a Remote Program</h4>
2948
<p>The <small>GDB</small> debugger allows you to run the <em>debugged program</em> on a
2949
remote machine (called <em>remote target</em>), while <small>GDB</small> runs on the
2952
<p>See <a href="gdb.html#Remote">Remote Debugging</a>, for details. Basically, the following steps are required:
2955
<li>Transfer the executable to the remote target.
2957
<li>Start <code>gdbserver</code> on the remote target.
2959
<li>Start <small>DDD</small> using <small>GDB</small> on the local machine, and load the same
2960
executable using the <small>GDB</small> <code>file</code> command.
2962
<li>Attach to the remote <code>gdbserver</code> using the <small>GDB</small> <code>target remote</code>
2966
<p>The local <code>.gdbinit</code> file is useful for setting up directory search
2969
<p>Of course, you can also combine <small>DDD</small> remote mode and <small>GDB</small> remote
2970
mode, running <small>DDD</small>, <small>GDB</small>, and the debugged program each on a
2975
<small class=header>
2976
Node:<a name="Customizing%20Debugger%20Interaction">Customizing Debugger Interaction</a>,
2977
Previous:<a rel="previous" accesskey="p" href="#Remote%20Debugging">Remote Debugging</a>,
2978
Up:<a rel="up" accesskey="u" href="#Invocation">Invocation</a>
2984
<h3 class="section">Customizing Interaction with the Inferior Debugger</h3>
2986
<p>These settings control the interaction of <small>DDD</small> with its inferior
2990
<li><a accesskey="1" href="#Debugger%20Invocation">Debugger Invocation</a>:
2991
<li><a accesskey="2" href="#Debugger%20Initialization">Debugger Initialization</a>:
2992
<li><a accesskey="3" href="#Debugger%20Communication">Debugger Communication</a>:
2997
<small class=header>
2998
Node:<a name="Debugger%20Invocation">Debugger Invocation</a>,
2999
Next:<a rel="next" accesskey="n" href="#Debugger%20Initialization">Debugger Initialization</a>,
3000
Up:<a rel="up" accesskey="u" href="#Customizing%20Debugger%20Interaction">Customizing Debugger Interaction</a>
3006
<h4 class="subsection">Invoking an Inferior Debugger</h4>
3008
<p>To choose the default inferior debugger, select <code>Edit =>
3009
Preferences => Startup => Debugger Type</code>. You can
3012
<li>have <small>DDD</small> determine the appropriate inferior debugger
3013
automatically from its command-line arguments. Set <code>Determine
3014
Automatically from Arguments</code> to enable.
3015
<li>have <small>DDD</small> start the debugger of your choice, as specified in
3016
<code>Debugger Type</code>.
3019
<p>The following <small>DDD</small> resources control the invocation of the
3020
inferior debugger (see <a href="#Customizing">Customizing</a>).
3023
<table width="100%">
3025
<td align="left"><b>autoDebugger</b><i> </i>(<i>class AutoDebugger</i>)<i>
3027
<td align="right">Resource</td>
3030
<table width="95%" align="center">
3032
If this is <code>on</code> (default), <small>DDD</small> will attempt to determine
3033
the debugger type from its arguments, possibly overriding the
3034
<code>debugger</code> resource (see below). If this is <code>off</code>,
3035
<small>DDD</small> will invoke the debugger specified by the <code>debugger</code>
3036
resource regardless of <small>DDD</small> arguments.
3041
<table width="100%">
3043
<td align="left"><b>debugger</b><i> </i>(<i>class Debugger</i>)<i>
3045
<td align="right">Resource</td>
3048
<table width="95%" align="center">
3050
The type of the inferior debugger to invoke (<code>gdb</code>, <code>dbx</code>,
3051
<code>ladebug</code>, <code>xdb</code>, <code>jdb</code>, <code>pydb</code>, <code>perl</code>, or
3054
<p>This resource is usually set through the <code>--gdb</code>, <code>--dbx</code>,
3055
<code>--ladebug</code>, <code>--xdb</code>, <code>--jdb</code>, <code>--pydb</code>,
3056
<code>--perl</code>, and <code>--bash</code> options; See <a href="#Options">Options</a>, for details.
3061
<table width="100%">
3063
<td align="left"><b>debuggerCommand</b><i> </i>(<i>class DebuggerCommand</i>)<i>
3065
<td align="right">Resource</td>
3068
<table width="95%" align="center">
3070
The name under which the inferior debugger is to be invoked. If this
3071
string is empty (default), the debugger type (<code>debugger</code> resource)
3074
<p>This resource is usually set through the <code>--debugger</code> option;
3075
See <a href="#Options">Options</a>, for details.
3081
<small class=header>
3082
Node:<a name="Debugger%20Initialization">Debugger Initialization</a>,
3083
Next:<a rel="next" accesskey="n" href="#Debugger%20Communication">Debugger Communication</a>,
3084
Previous:<a rel="previous" accesskey="p" href="#Debugger%20Invocation">Debugger Invocation</a>,
3085
Up:<a rel="up" accesskey="u" href="#Customizing%20Debugger%20Interaction">Customizing Debugger Interaction</a>
3091
<h4 class="subsection">Initializing the Inferior Debugger</h4>
3093
<p><small>DDD</small> uses a number of resources to initialize the
3094
inferior debugger (see <a href="#Customizing">Customizing</a>).
3097
<li><a accesskey="1" href="#GDB%20Initialization">GDB Initialization</a>:
3098
<li><a accesskey="2" href="#DBX%20Initialization">DBX Initialization</a>:
3099
<li><a accesskey="3" href="#XDB%20Initialization">XDB Initialization</a>:
3100
<li><a accesskey="4" href="#JDB%20Initialization">JDB Initialization</a>:
3101
<li><a accesskey="5" href="#PYDB%20Initialization">PYDB Initialization</a>:
3102
<li><a accesskey="6" href="#Perl%20Initialization">Perl Initialization</a>:
3103
<li><a accesskey="7" href="#Bash%20Initialization">Bash Initialization</a>:
3104
<li><a accesskey="8" href="#Finding%20a%20Place%20to%20Start">Finding a Place to Start</a>:
3105
<li><a accesskey="9" href="#Opening%20the%20Selection">Opening the Selection</a>:
3110
<small class=header>
3111
Node:<a name="GDB%20Initialization">GDB Initialization</a>,
3112
Next:<a rel="next" accesskey="n" href="#DBX%20Initialization">DBX Initialization</a>,
3113
Up:<a rel="up" accesskey="u" href="#Debugger%20Initialization">Debugger Initialization</a>
3119
<h5 class="subsubsection">GDB Initialization</h5>
3122
<table width="100%">
3124
<td align="left"><b>gdbInitCommands</b><i> </i>(<i>class InitCommands</i>)<i>
3126
<td align="right">Resource</td>
3129
<table width="95%" align="center">
3131
This string contains a list of newline-separated commands that are
3132
initially sent to <small>GDB</small>. As a side-effect, all settings
3133
specified in this resource are considered fixed and cannot be changed
3134
through the <small>GDB</small> settings panel, unless preceded by white
3135
space. By default, the <code>gdbInitCommands</code> resource contains some
3136
settings vital to <small>DDD</small>:
3138
<pre class="example"> Ddd*gdbInitCommands: \
3145
<p>While the <code>set height</code>, <code>set width</code>, and <code>set
3146
prompt</code> settings are fixed, the <code>set verbose</code> settings can be
3147
changed through the <small>GDB</small> settings panel (although being reset
3148
upon each new <small>DDD</small> invocation).
3150
<p>Do not use this resource to customize <small>GDB</small>; instead, use a
3151
personal <code>~/.gdbinit</code> file. See your <small>GDB</small>
3152
documentation for details.
3157
<table width="100%">
3159
<td align="left"><b>gdbSettings</b><i> </i>(<i>class Settings</i>)<i>
3161
<td align="right">Resource</td>
3164
<table width="95%" align="center">
3166
This string contains a list of newline-separated commands that are
3167
also initially sent to <small>GDB</small>. Its default value is
3169
<pre class="example"> Ddd*gdbSettings: \
3170
set print asm-demangle on\n
3173
<p>This resource is used to save and restore the debugger settings.
3178
<table width="100%">
3180
<td align="left"><b>sourceInitCommands</b><i> </i>(<i>class SourceInitCommands</i>)<i>
3182
<td align="right">Resource</td>
3185
<table width="95%" align="center">
3187
If <code>on</code> (default), <small>DDD</small> writes all <small>GDB</small> initialization
3188
commands into a temporary file and makes <small>GDB</small> read this file, rather than
3189
sending each initialization command separately. This results in faster
3190
startup (especially if you have several user-defined commands). If
3191
<code>off</code>, <small>DDD</small> makes <small>GDB</small> process each command separately.
3197
<small class=header>
3198
Node:<a name="DBX%20Initialization">DBX Initialization</a>,
3199
Next:<a rel="next" accesskey="n" href="#XDB%20Initialization">XDB Initialization</a>,
3200
Previous:<a rel="previous" accesskey="p" href="#GDB%20Initialization">GDB Initialization</a>,
3201
Up:<a rel="up" accesskey="u" href="#Debugger%20Initialization">Debugger Initialization</a>
3207
<h5 class="subsubsection">DBX Initialization</h5>
3210
<table width="100%">
3212
<td align="left"><b>dbxInitCommands</b><i> </i>(<i>class InitCommands</i>)<i>
3214
<td align="right">Resource</td>
3217
<table width="95%" align="center">
3219
This string contains a list of newline-separated commands that are
3220
initially sent to <small>DBX</small>. By default, it is empty.
3222
<p>Do not use this resource to customize <small>DBX</small>; instead, use a
3223
personal <code>~/.dbxinit</code> or <code>~/.dbxrc</code> file. See
3224
your <small>DBX</small> documentation for details.
3229
<table width="100%">
3231
<td align="left"><b>dbxSettings</b><i> </i>(<i>class Settings</i>)<i>
3233
<td align="right">Resource</td>
3236
<table width="95%" align="center">
3238
This string contains a list of newline-separated commands that are
3239
also initially sent to <small>DBX</small>. By default, it is empty.
3245
<small class=header>
3246
Node:<a name="XDB%20Initialization">XDB Initialization</a>,
3247
Next:<a rel="next" accesskey="n" href="#JDB%20Initialization">JDB Initialization</a>,
3248
Previous:<a rel="previous" accesskey="p" href="#DBX%20Initialization">DBX Initialization</a>,
3249
Up:<a rel="up" accesskey="u" href="#Debugger%20Initialization">Debugger Initialization</a>
3255
<h5 class="subsubsection">XDB Initialization</h5>
3258
<table width="100%">
3260
<td align="left"><b>xdbInitCommands</b><i> </i>(<i>class InitCommands</i>)<i>
3262
<td align="right">Resource</td>
3265
<table width="95%" align="center">
3267
This string contains a list of newline-separated commands that are
3268
initially sent to <small>XDB</small>. By default, it is empty.
3270
<p>Do not use this resource to customize <small>DBX</small>; instead, use a
3271
personal <code>~/.xdbrc</code> file. See your <small>XDB</small>
3272
documentation for details.
3277
<table width="100%">
3279
<td align="left"><b>xdbSettings</b><i> </i>(<i>class Settings</i>)<i>
3281
<td align="right">Resource</td>
3284
<table width="95%" align="center">
3286
This string contains a list of newline-separated commands that are
3287
also initially sent to <small>XDB</small>. By default, it is empty.
3293
<small class=header>
3294
Node:<a name="JDB%20Initialization">JDB Initialization</a>,
3295
Next:<a rel="next" accesskey="n" href="#PYDB%20Initialization">PYDB Initialization</a>,
3296
Previous:<a rel="previous" accesskey="p" href="#XDB%20Initialization">XDB Initialization</a>,
3297
Up:<a rel="up" accesskey="u" href="#Debugger%20Initialization">Debugger Initialization</a>
3303
<h5 class="subsubsection">JDB Initialization</h5>
3306
<table width="100%">
3308
<td align="left"><b>jdbInitCommands</b><i> </i>(<i>class InitCommands</i>)<i>
3310
<td align="right">Resource</td>
3313
<table width="95%" align="center">
3315
This string contains a list of newline-separated commands that are
3316
initially sent to <small>JDB</small>. This resource may be used to customize
3317
<small>JDB</small>. By default, it is empty.
3322
<table width="100%">
3324
<td align="left"><b>jdbSettings</b><i> </i>(<i>class Settings</i>)<i>
3326
<td align="right">Resource</td>
3329
<table width="95%" align="center">
3331
This string contains a list of newline-separated commands that are
3332
also initially sent to <small>JDB</small>. By default, it is empty.
3334
<p>This resource is used by <small>DDD</small> to save and restore <small>JDB</small>
3341
<small class=header>
3342
Node:<a name="PYDB%20Initialization">PYDB Initialization</a>,
3343
Next:<a rel="next" accesskey="n" href="#Perl%20Initialization">Perl Initialization</a>,
3344
Previous:<a rel="previous" accesskey="p" href="#JDB%20Initialization">JDB Initialization</a>,
3345
Up:<a rel="up" accesskey="u" href="#Debugger%20Initialization">Debugger Initialization</a>
3351
<h5 class="subsubsection">PYDB Initialization</h5>
3354
<table width="100%">
3356
<td align="left"><b>pydbInitCommands</b><i> </i>(<i>class InitCommands</i>)<i>
3358
<td align="right">Resource</td>
3361
<table width="95%" align="center">
3363
This string contains a list of newline-separated commands that are
3364
initially sent to <small>PYDB</small>. By default, it is empty.
3366
<p>This resource may be used to customize <small>PYDB</small>.
3371
<table width="100%">
3373
<td align="left"><b>pydbSettings</b><i> </i>(<i>class Settings</i>)<i>
3375
<td align="right">Resource</td>
3378
<table width="95%" align="center">
3380
This string contains a list of newline-separated commands that are
3381
also initially sent to <small>PYDB</small>. By default, it is empty.
3383
<p>This resource is used by <small>DDD</small> to save and restore <small>PYDB</small>
3390
<small class=header>
3391
Node:<a name="Perl%20Initialization">Perl Initialization</a>,
3392
Next:<a rel="next" accesskey="n" href="#Bash%20Initialization">Bash Initialization</a>,
3393
Previous:<a rel="previous" accesskey="p" href="#PYDB%20Initialization">PYDB Initialization</a>,
3394
Up:<a rel="up" accesskey="u" href="#Debugger%20Initialization">Debugger Initialization</a>
3400
<h5 class="subsubsection">Perl Initialization</h5>
3403
<table width="100%">
3405
<td align="left"><b>perlInitCommands</b><i> </i>(<i>class InitCommands</i>)<i>
3407
<td align="right">Resource</td>
3410
<table width="95%" align="center">
3412
This string contains a list of newline-separated commands that are
3413
initially sent to the Perl debugger. By default, it is empty.
3415
<p>This resource may be used to customize the Perl debugger.
3420
<table width="100%">
3422
<td align="left"><b>perlSettings</b><i> </i>(<i>class Settings</i>)<i>
3424
<td align="right">Resource</td>
3427
<table width="95%" align="center">
3429
This string contains a list of newline-separated commands that are
3430
also initially sent to the Perl debugger. By default, it is empty.
3432
<p>This resource is used by <small>DDD</small> to save and restore Perl
3439
<small class=header>
3440
Node:<a name="Bash%20Initialization">Bash Initialization</a>,
3441
Next:<a rel="next" accesskey="n" href="#Finding%20a%20Place%20to%20Start">Finding a Place to Start</a>,
3442
Previous:<a rel="previous" accesskey="p" href="#Perl%20Initialization">Perl Initialization</a>,
3443
Up:<a rel="up" accesskey="u" href="#Debugger%20Initialization">Debugger Initialization</a>
3449
<h5 class="subsubsection">Bash Initialization</h5>
3452
<table width="100%">
3454
<td align="left"><b>bashInitCommands</b><i> </i>(<i>class InitCommands</i>)<i>
3456
<td align="right">Resource</td>
3459
<table width="95%" align="center">
3461
This string contains a list of newline-separated commands that are
3462
initially sent to the Bash debugger. By default, it is empty.
3464
<p>This resource may be used to customize the Bash debugger.
3469
<table width="100%">
3471
<td align="left"><b>bash</b><i> </i>(<i>class Settings</i>)<i>
3473
<td align="right">Resource</td>
3476
<table width="95%" align="center">
3478
This string contains a list of newline-separated commands that are
3479
also initially sent to the Perl debugger. By default, it is empty.
3481
<p>This resource is used by <small>DDD</small> to save and restore Bash
3488
<small class=header>
3489
Node:<a name="Finding%20a%20Place%20to%20Start">Finding a Place to Start</a>,
3490
Next:<a rel="next" accesskey="n" href="#Opening%20the%20Selection">Opening the Selection</a>,
3491
Previous:<a rel="previous" accesskey="p" href="#Bash%20Initialization">Bash Initialization</a>,
3492
Up:<a rel="up" accesskey="u" href="#Debugger%20Initialization">Debugger Initialization</a>
3498
<h5 class="subsubsection">Finding a Place to Start</h5>
3501
<table width="100%">
3503
<td align="left"><b>initSymbols</b><i> </i>(<i>class InitSymbols</i>)<i>
3505
<td align="right">Resource</td>
3508
<table width="95%" align="center">
3510
When loading an executable, <small>DDD</small> queries the inferior debugger for the
3511
initial source location--typically the <code>main</code> function. If this
3512
location is not found, <small>DDD</small> tries other symbols from this
3513
newline-separated list. The default value makes <small>DDD</small> look for a
3514
variety of main functions (especially FORTRAN main functions):
3515
<pre class="example"> main\n\
3531
<small class=header>
3532
Node:<a name="Opening%20the%20Selection">Opening the Selection</a>,
3533
Previous:<a rel="previous" accesskey="p" href="#Finding%20a%20Place%20to%20Start">Finding a Place to Start</a>,
3534
Up:<a rel="up" accesskey="u" href="#Debugger%20Initialization">Debugger Initialization</a>
3540
<h5 class="subsubsection">Opening the Selection</h5>
3543
<table width="100%">
3545
<td align="left"><b>openSelection</b><i> </i>(<i>class OpenSelection</i>)<i>
3547
<td align="right">Resource</td>
3550
<table width="95%" align="center">
3552
If this is <code>on</code>, <small>DDD</small> invoked without argument checks
3553
whether the current selection or clipboard contains the file name or
3554
URL of an executable program. If this is so, <small>DDD</small>
3555
will automatically open this program for debugging. If this resource
3556
is <code>off</code> (default), <small>DDD</small> invoked without arguments will
3557
always start without a debugged program.
3563
<small class=header>
3564
Node:<a name="Debugger%20Communication">Debugger Communication</a>,
3565
Previous:<a rel="previous" accesskey="p" href="#Debugger%20Initialization">Debugger Initialization</a>,
3566
Up:<a rel="up" accesskey="u" href="#Customizing%20Debugger%20Interaction">Customizing Debugger Interaction</a>
3572
<h4 class="subsection">Communication with the Inferior Debugger</h4>
3574
<p>The following resources control the communication with the inferior
3578
<table width="100%">
3580
<td align="left"><b>blockTTYInput</b><i> </i>(<i>class BlockTTYInput</i>)<i>
3582
<td align="right">Resource</td>
3585
<table width="95%" align="center">
3587
Whether <small>DDD</small> should block when reading data from the inferior debugger
3588
via the pseudo-tty interface. Most <small>UNIX</small> systems except <small>GNU</small>/Linux
3589
<em>require</em> this; set it to <code>on</code>. On <small>GNU</small>/Linux, set it to
3590
<code>off</code>. The value <code>auto</code> (default) will always select the
3591
"best" choice (that is, the best choice known to the <small>DDD</small>
3597
<table width="100%">
3599
<td align="left"><b>bufferGDBOutput</b><i> </i>(<i>class BufferGDBOutput</i>)<i>
3601
<td align="right">Resource</td>
3604
<table width="95%" align="center">
3606
If this is <code>on</code>, all output from the inferior debugger is buffered
3607
until a debugger prompt appears. This makes it easier for <small>DDD</small> to
3608
parse the output, but has the drawback that interaction with a running
3609
debuggee in the debugger console is not possible. If <code>off</code>, output
3610
is shown as soon as it arrives, enabling interaction, but making it
3611
harder for <small>DDD</small> to parse the output. If <code>auto</code> (default), output
3612
is buffered if and only if the execution window is open, which redirects
3613
debuggee output and thus enables interaction. See <a href="#Using%20the%20Execution%20Window">Using the Execution Window</a>, for details.
3618
<table width="100%">
3620
<td align="left"><b>contInterruptDelay</b><i> </i>(<i>class InterruptDelay</i>)<i>
3622
<td align="right">Resource</td>
3625
<table width="95%" align="center">
3627
The time (in ms) to wait before automatically interrupting a <code>cont</code>
3628
command. <small>DDD</small> cannot interrupt a <code>cont</code> command immediately,
3629
because this may disturb the status change of the process. Default is
3635
<table width="100%">
3637
<td align="left"><b>displayTimeout</b><i> </i>(<i>class DisplayTimeout</i>)<i>
3639
<td align="right">Resource</td>
3642
<table width="95%" align="center">
3644
The time (in ms) to wait for the inferior debugger to finish a partial
3645
display information. Default is <code>2000</code>.
3650
<table width="100%">
3652
<td align="left"><b>positionTimeout</b><i> </i>(<i>class PositionTimeout</i>)<i>
3654
<td align="right">Resource</td>
3657
<table width="95%" align="center">
3659
The time (in ms) to wait for the inferior debugger to finish a partial
3660
position information. Default is <code>500</code>.
3665
<table width="100%">
3667
<td align="left"><b>questionTimeout</b><i> </i>(<i>class QuestionTimeout</i>)<i>
3669
<td align="right">Resource</td>
3672
<table width="95%" align="center">
3674
The time (in seconds) to wait for the inferior debugger to reply.
3675
Default is <code>10</code>.
3680
<table width="100%">
3682
<td align="left"><b>runInterruptDelay</b><i> </i>(<i>class InterruptDelay</i>)<i>
3684
<td align="right">Resource</td>
3687
<table width="95%" align="center">
3689
The time (in ms) to wait before automatically interrupting a <code>run</code>
3690
command. <small>DDD</small> cannot interrupt a <code>cont</code> command immediately,
3691
because this may disturb process creation. Default is <code>2000</code>.
3696
<table width="100%">
3698
<td align="left"><b>stopAndContinue</b><i> </i>(<i>class StopAndContinue</i>)<i>
3700
<td align="right">Resource</td>
3703
<table width="95%" align="center">
3705
If <code>on</code> (default), debugger commands interrupt program execution,
3706
resuming execution after the command has completed. This only happens
3707
if the last debugger command was either a <code>run</code> or a
3708
<code>continue</code> command. If <code>off</code>, debugger commands do not
3709
interrupt program execution.
3714
<table width="100%">
3716
<td align="left"><b>synchronousDebugger</b><i> </i>(<i>class SynchronousDebugger</i>)<i>
3718
<td align="right">Resource</td>
3721
<table width="95%" align="center">
3723
If <code>on</code>, X events are not processed while the debugger is busy.
3724
This may result in slightly better performance on single-processor
3725
systems. See <a href="#Options">Options</a>, for the <code>--sync-debugger</code> option.
3730
<table width="100%">
3732
<td align="left"><b>terminateOnEOF</b><i> </i>(<i>class TerminateOnEOF</i>)<i>
3734
<td align="right">Resource</td>
3737
<table width="95%" align="center">
3739
If <code>on</code>, <small>DDD</small> terminates the inferior debugger when
3740
<small>DDD</small> detects an EOF condition (that is, as soon as the inferior
3741
debugger closes its output channel). This was the default behavior in
3742
<small>DDD</small> 2.x and earlier. If <code>off</code> (default), <small>DDD</small> takes
3748
<table width="100%">
3750
<td align="left"><b>useTTYCommand</b><i> </i>(<i>class UseTTYCommand</i>)<i>
3752
<td align="right">Resource</td>
3755
<table width="95%" align="center">
3757
If <code>on</code>, use the <small>GDB</small> <code>tty</code> command for redirecting
3758
input/output to the separate execution window. If <code>off</code>, use
3759
explicit redirection through shell redirection operators <code><</code> and
3760
<code>></code>. The default is <code>off</code> (explicit redirection), since on
3761
some systems, the <code>tty</code> command does not work properly on some
3762
<small>GDB</small> versions.
3768
<small class=header>
3769
Node:<a name="Windows">Windows</a>,
3770
Next:<a rel="next" accesskey="n" href="#Navigating">Navigating</a>,
3771
Previous:<a rel="previous" accesskey="p" href="#Invocation">Invocation</a>,
3772
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
3778
<h2 class="chapter">The DDD Windows</h2>
3780
<p><small>DDD</small> is composed of three main windows. From top to bottom, we
3784
<li>The <dfn>Data Window</dfn> shows the current data of the debugged program.
3785
See <a href="#Displaying%20Values">Displaying Values</a>, for details.
3786
<li>The <dfn>Source Window</dfn> shows the current source code of the debugged
3787
program. See <a href="#Navigating">Navigating</a>, for details.
3788
<li>The <dfn>Debugger Console</dfn> accepts debugger commands and shows debugger
3789
messages. See <a href="#Commands">Commands</a>, for details.
3793
<div align="center"><img src="PICS/ddd-all.jpg" alt="PICS/ddd-all.jpg"></div>
3795
<p>Besides these three main windows, there are some other optional windows:
3798
<li>The <dfn>Command Tool</dfn> offers buttons for frequently used commands.
3799
It is usually placed on the source window.
3800
See <a href="#Command%20Tool">Command Tool</a>, for details.
3801
<li>The <dfn>Machine Code Window</dfn> shows the current machine code. It is
3802
usually placed beneath the current source. See <a href="#Machine%20Code">Machine Code</a>, for
3804
<li>The <dfn>Execution Window</dfn> shows the input and output of the debugged
3805
program. See <a href="#Using%20the%20Execution%20Window">Using the Execution Window</a>, for details.
3809
<li><a accesskey="1" href="#Menu%20Bar">Menu Bar</a>: All <small>DDD</small> pull-down menus.
3810
<li><a accesskey="2" href="#Tool%20Bar">Tool Bar</a>: The <small>DDD</small> icon buttons.
3811
<li><a accesskey="3" href="#Command%20Tool">Command Tool</a>: The floating command tool.
3812
<li><a accesskey="4" href="#Getting%20Help">Getting Help</a>: What does this thing mean?
3813
<li><a accesskey="5" href="#Undo%20and%20Redo">Undo and Redo</a>: Oops!
3814
<li><a accesskey="6" href="#Customizing">Customizing</a>: You can customize <small>DDD</small>
3819
<small class=header>
3820
Node:<a name="Menu%20Bar">Menu Bar</a>,
3821
Next:<a rel="next" accesskey="n" href="#Tool%20Bar">Tool Bar</a>,
3822
Up:<a rel="up" accesskey="u" href="#Windows">Windows</a>
3828
<h3 class="section">The Menu Bar</h3>
3830
<p>The <small>DDD</small> Menu Bar gives you access to all <small>DDD</small> functions.
3833
<dt><code>File</code>
3834
<dd>Perform file-related operations such as selecting programs, processes,
3835
and sessions, printing graphs, recompiling, as well as exiting
3838
<br><dt><code>Edit</code>
3839
<dd>Perform standard editing operations, such as cutting, copying, pasting,
3840
and killing selected text. Also allows editing <small>DDD</small> options and
3843
<br><dt><code>View</code>
3844
<dd>Allows accessing the individual <small>DDD</small> windows.
3846
<br><dt><code>Program</code>
3847
<dd>Perform operations related to the program being debugged, such as
3848
starting and stopping the program.
3850
<br><dt><code>Commands</code>
3851
<dd>Perform operations related to <small>DDD</small> commands, such as accessing
3852
the command history or defining new commands.
3854
<br><dt><code>Status</code>
3855
<dd>Examine the program status, such as the stack traces, registers, or
3858
<br><dt><code>Source</code>
3859
<dd>Perform source-related operations such as looking up items or editing
3862
<br><dt><code>Data</code>
3863
<dd>Perform data-related operations such as editing displays or layouting
3866
<br><dt><code>Maintenance</code>
3867
<dd>Perform operations that are useful for debugging <small>DDD</small>. By
3868
default, this menu is disabled.
3870
<br><dt><code>Help</code>
3871
<dd>Give help on <small>DDD</small> usage.
3874
<p>There are two ways of selecting an item from a pull-down menu:
3877
<li>Select an item in the menu bar by moving the cursor over it and
3878
click <em>mouse button 1</em>. Then move the cursor over the menu item
3879
you want to choose and click left again.
3881
<li>Select an item in the menu bar by moving the cursor over it and
3882
click and hold <em>mouse button 1</em>. With the mouse button depressed,
3883
move the cursor over the menu item you want, then release it to make
3887
<p>The menus can also be <dfn>torn off</dfn> (i.e. turned into a persistent
3888
window) by selecting the dashed line at the top.
3890
<p>If a command in the pull-down menu is not applicable in a given
3891
situation, the command is <dfn>disabled</dfn> and its name appears faded.
3892
You cannot invoke items that are faded. For example, many commands on
3893
the <code>Edit</code> menu appear faded until you select text on which they
3894
are to operate; after you select a block of text, edit commands are
3898
<li><a accesskey="1" href="#File%20Menu">File Menu</a>: Selecting programs and processes.
3899
<li><a accesskey="2" href="#Edit%20Menu">Edit Menu</a>: Cut, copy, paste, and preferences.
3900
<li><a accesskey="3" href="#View%20Menu">View Menu</a>: All <small>DDD</small> windows.
3901
<li><a accesskey="4" href="#Program%20Menu">Program Menu</a>: Starting and stopping.
3902
<li><a accesskey="5" href="#Commands%20Menu">Commands Menu</a>: All <small>DDD</small> commands.
3903
<li><a accesskey="6" href="#Status%20Menu">Status Menu</a>: Examining the program status.
3904
<li><a accesskey="7" href="#Source%20Menu">Source Menu</a>: Navigating around.
3905
<li><a accesskey="8" href="#Data%20Menu">Data Menu</a>: Examining data.
3906
<li><a accesskey="9" href="#Maintenance%20Menu">Maintenance Menu</a>: Maintaining <small>DDD</small>.
3907
<li><a href="#Help%20Menu">Help Menu</a>: Getting help.
3908
<li><a href="#Customizing%20the%20Menu%20Bar">Customizing the Menu Bar</a>: Alternate key bindings, etc.
3913
<small class=header>
3914
Node:<a name="File%20Menu">File Menu</a>,
3915
Next:<a rel="next" accesskey="n" href="#Edit%20Menu">Edit Menu</a>,
3916
Up:<a rel="up" accesskey="u" href="#Menu%20Bar">Menu Bar</a>
3922
<h4 class="subsection">The File Menu</h4>
3924
<p>The <code>File</code> menu contains file-related operations such as selecting
3925
programs, processes, and sessions, printing graphs, recompiling, as well
3926
as exiting <small>DDD</small>.
3929
<dt><code>Open Program</code>
3930
<dd><dt><code>Open Class</code>
3931
<dd>Open a program or class to be debugged (<Ctrl+O>). See <a href="#Opening%20Programs">Opening Programs</a>, for details.
3933
<br><dt><code>Open Recent</code>
3934
<dd>Re-open a recently opened program to be debugged. See <a href="#Opening%20Programs">Opening Programs</a>, for details.
3936
<br><dt><code>Open Core Dump</code>
3937
<dd>Open a core dump for the currently debugged program. See <a href="#Opening%20Core%20Dumps">Opening Core Dumps</a>, for details.
3939
<br><dt><code>Open Source</code>
3940
<dd>Open a source file of the currently debugged program. See <a href="#Opening%20Source%20Files">Opening Source Files</a>, for details.
3942
<br><dt><code>Open Session</code>
3943
<dd>Resume a previously saved <small>DDD</small> session (<Ctrl+N>). See <a href="#Resuming%20Sessions">Resuming Sessions</a>, for details.
3945
<br><dt><code>Save Session As</code>
3946
<dd>Save the current <small>DDD</small> session such that you can resume it later
3947
(<Ctrl+S>). See <a href="#Saving%20Sessions">Saving Sessions</a>, for details.
3949
<br><dt><code>Attach to Process</code>
3950
<dd>Attach to a running process of the debugged program. See <a href="#Attaching%20to%20a%20Process">Attaching to a Process</a>, for details.
3952
<br><dt><code>Detach Process</code>
3953
<dd>Detach from the running process. See <a href="#Attaching%20to%20a%20Process">Attaching to a Process</a>, for
3956
<br><dt><code>Print Graph</code>
3957
<dd>Print the current graph on a printer. See <a href="#Printing%20the%20Graph">Printing the Graph</a>, for
3960
<br><dt><code>Change Directory</code>
3961
<dd>Change the working directory of your program. See <a href="#Working%20Directory">Working Directory</a>,
3964
<br><dt><code>Make</code>
3965
<dd>Run the <code>make</code> program (<Ctrl+M>). See <a href="#Recompiling">Recompiling</a>, for
3968
<br><dt><code>Close</code>
3969
<dd>Close this <small>DDD</small> window (<Ctrl+W>). See <a href="#Quitting">Quitting</a>, for details.
3971
<br><dt><code>Restart</code>
3972
<dd>Restart <small>DDD</small>.
3974
<br><dt><code>Exit</code>
3975
<dd>Exit <small>DDD</small> (<Ctrl+Q>). See <a href="#Quitting">Quitting</a>, for details.
3980
<small class=header>
3981
Node:<a name="Edit%20Menu">Edit Menu</a>,
3982
Next:<a rel="next" accesskey="n" href="#View%20Menu">View Menu</a>,
3983
Previous:<a rel="previous" accesskey="p" href="#File%20Menu">File Menu</a>,
3984
Up:<a rel="up" accesskey="u" href="#Menu%20Bar">Menu Bar</a>
3990
<h4 class="subsection">The Edit Menu</h4>
3992
<p>The <code>Edit</code> menu contains standard editing operations, such as
3993
cutting, copying, pasting, and killing selected text. Also allows
3994
editing <small>DDD</small> options and preferences.
3997
<dt><code>Undo</code>
3998
<dd>Undo the most recent action (<Ctrl+Z>). Almost all commands can be
3999
undone this way. See <a href="#Undo%20and%20Redo">Undo and Redo</a>, for details.
4001
<br><dt><code>Redo</code>
4002
<dd>Redo the action most recently undone (<Ctrl+Y>). Every command
4003
undone can be redone this way. See <a href="#Undo%20and%20Redo">Undo and Redo</a>, for details.
4005
<br><dt><code>Cut</code>
4006
<dd>Removes the selected text block from the current text area and makes it
4007
the X clipboard selection (<Ctrl+X> or <Shift+Del>;
4008
See <a href="#Customizing%20the%20Edit%20Menu">Customizing the Edit Menu</a>, for details). Before executing this
4009
command, you have to select a region in a text area--either with the
4010
mouse or with the usual text selection keys.
4012
<p>This item can also be applied to displays (see <a href="#Deleting%20Displays">Deleting Displays</a>).
4014
<br><dt><code>Copy</code>
4015
<dd>Makes a selected text block the X clipboard selection (<Ctrl+C> or
4016
<Ctrl+Ins>; See <a href="#Customizing%20the%20Edit%20Menu">Customizing the Edit Menu</a>, for details). You
4017
can select text by selecting a text region with the usual text selection
4018
keys or with the mouse. See <a href="#Customizing%20the%20Edit%20Menu">Customizing the Edit Menu</a>, for changing
4019
the default accelerator.
4021
<p>This item can also be applied to displays (see <a href="#Deleting%20Displays">Deleting Displays</a>).
4023
<br><dt><code>Paste</code>
4024
<dd>Inserts the current value of the X clipboard selection in the most
4025
recently selected text area (<Ctrl+V> or <Shift+Ins>;
4026
See <a href="#Customizing%20the%20Edit%20Menu">Customizing the Edit Menu</a>, for details). You can paste in text
4027
you have placed in the clipboard using <code>Copy</code> or <code>Cut</code>. You
4028
can also use <code>Paste</code> to insert text that was pasted into the
4029
clipboard from other applications.
4031
<br><dt><code>Clear</code>
4032
<dd>Clears the most recently selected text area (<Ctrl+U>).
4034
<br><dt><code>Delete</code>
4035
<dd>Removes the selected text block from the most recently selected text
4036
area, but does not make it the X clipboard selection.
4038
<p>This item can also be applied to displays (see <a href="#Deleting%20Displays">Deleting Displays</a>).
4040
<br><dt><code>Select All</code>
4041
<dd>Selects all characters from the most recently selected text area
4042
(<Ctrl+A> or or <Ctrl+Shift+A>; see <a href="#Customizing%20the%20Edit%20Menu">Customizing the Edit Menu</a>, for details).
4044
<br><dt><code>Preferences</code>
4045
<dd>Allows you to customize <small>DDD</small> interactively. See <a href="#Customizing">Customizing</a>,
4048
<br><dt><code>Debugger Settings</code>
4049
<dd>Allows you to customize the inferior debugger. See <a href="#Debugger%20Settings">Debugger Settings</a>, for details.
4051
<br><dt><code>Save Options</code>
4052
<dd>If set, all preferences and settings will be saved for the next <small>DDD</small>
4053
invocation. See <a href="#Saving%20Options">Saving Options</a>, for details.
4058
<small class=header>
4059
Node:<a name="View%20Menu">View Menu</a>,
4060
Next:<a rel="next" accesskey="n" href="#Program%20Menu">Program Menu</a>,
4061
Previous:<a rel="previous" accesskey="p" href="#Edit%20Menu">Edit Menu</a>,
4062
Up:<a rel="up" accesskey="u" href="#Menu%20Bar">Menu Bar</a>
4068
<h4 class="subsection">The View Menu</h4>
4070
<p>The <code>View</code> menu allows accessing the individual <small>DDD</small>
4074
<dt><code>Command Tool</code>
4075
<dd>Open and recenter the command tool (<Alt+8>). See <a href="#Command%20Tool">Command Tool</a>,
4078
<br><dt><code>Execution Window</code>
4079
<dd>Open the separate execution window (<Alt+9>). See <a href="#Using%20the%20Execution%20Window">Using the Execution Window</a>, for details.
4081
<br><dt><code>Debugger Console</code>
4082
<dd>Open the debugger console (<Alt+1>). See <a href="#Commands">Commands</a>, for details.
4084
<br><dt><code>Source Window</code>
4085
<dd>Open the source window (<Alt+2>). See <a href="#Navigating">Navigating</a>, for details.
4087
<br><dt><code>Data Window</code>
4088
<dd>Open the data window (<Alt+3>). See <a href="#Displaying%20Values">Displaying Values</a>, for details.
4090
<br><dt><code>Machine Code Window</code>
4091
<dd>Show machine code (<Alt+4>). See <a href="#Machine%20Code">Machine Code</a>, for details.
4096
<small class=header>
4097
Node:<a name="Program%20Menu">Program Menu</a>,
4098
Next:<a rel="next" accesskey="n" href="#Commands%20Menu">Commands Menu</a>,
4099
Previous:<a rel="previous" accesskey="p" href="#View%20Menu">View Menu</a>,
4100
Up:<a rel="up" accesskey="u" href="#Menu%20Bar">Menu Bar</a>
4106
<h4 class="subsection">The Program Menu</h4>
4108
<p>The <code>Program</code> menu performs operations related to the program being
4109
debugged, such as starting and stopping the program.
4111
<p>Most of these operations are also found on the command tool
4112
(see <a href="#Command%20Tool">Command Tool</a>).
4115
<dt><code>Run</code>
4116
<dd>Start program execution, prompting for program arguments (<F2>).
4117
See <a href="#Starting%20Program%20Execution">Starting Program Execution</a>, for details.
4119
<br><dt><code>Run Again</code>
4120
<dd>Start program execution with the most recently used arguments (<F3>).
4121
See <a href="#Starting%20Program%20Execution">Starting Program Execution</a>, for details.
4123
<br><dt><code>Run in Execution Window</code>
4124
<dd>If enabled, start next program execution in separate execution window.
4125
See <a href="#Using%20the%20Execution%20Window">Using the Execution Window</a>, for details.
4127
<br><dt><code>Step</code>
4128
<dd>Continue running your program until control reaches a different source
4129
line, then stop it and return control to <small>DDD</small> (<F5>).
4130
See <a href="#Resuming%20Execution">Resuming Execution</a>, for details.
4132
<br><dt><code>Step Instruction</code>
4133
<dd>Execute one machine instruction, then stop and return to <small>DDD</small>
4134
(<Shift+F5>). See <a href="#Machine%20Code%20Execution">Machine Code Execution</a>, for details.
4136
<br><dt><code>Next</code>
4137
<dd>Continue to the next source line in the current (innermost) stack frame
4138
(<F6>). This is similar to <code>Step</code>, but function calls that
4139
appear within the line of code are executed without stopping.
4140
See <a href="#Resuming%20Execution">Resuming Execution</a>, for details.
4142
<br><dt><code>Next Instruction</code>
4143
<dd>Execute one machine instruction, but if it is a function call,
4144
proceed until the function returns (<Shift+F6>).
4145
See <a href="#Machine%20Code%20Execution">Machine Code Execution</a>, for details.
4147
<br><dt><code>Until</code>
4148
<dd>Continue running until a source line past the current line, in the
4149
current stack frame, is reached (<F7>). See <a href="#Resuming%20Execution">Resuming Execution</a>,
4152
<br><dt><code>Finish</code>
4153
<dd>Continue running until just after function in the selected stack frame
4154
returns (<F8>). Print the returned value (if any). See <a href="#Resuming%20Execution">Resuming Execution</a>, for details.
4156
<br><dt><code>Continue</code>
4157
<dd>Resume program execution, at the address where your program last stopped
4158
(<F9>); any breakpoints set at that address are bypassed.
4159
See <a href="#Resuming%20Execution">Resuming Execution</a>, for details.
4161
<br><dt><code>Continue Without Signal</code>
4162
<dd>Continue execution without giving a signal (<Shift+F9>). This is
4163
useful when your program stopped on account of a signal and would
4164
ordinary see the signal when resumed with <code>Continue</code>.
4165
See <a href="#Signals">Signals</a>, for details.
4167
<br><dt><code>Kill</code>
4168
<dd>Kill the process of the debugged program (<F4>). See <a href="#Killing%20the%20Program">Killing the Program</a>, for details.
4170
<br><dt><code>Interrupt</code>
4171
<dd>Interrupt program execution (<Esc> or <Ctrl+C>;
4172
see <a href="#Customizing%20the%20Edit%20Menu">Customizing the Edit Menu</a>, for details). This is equivalent to
4173
sending an interrupt signal to the process. See <a href="#Interrupting">Interrupting</a>, for
4176
<br><dt><code>Abort</code>
4177
<dd>Abort program execution (and maybe debugger execution, too;
4178
<Ctrl+\>). This is equivalent to sending a <code>SIGABRT</code> signal to
4179
the process. See <a href="#Quitting">Quitting</a>, for details.
4184
<small class=header>
4185
Node:<a name="Commands%20Menu">Commands Menu</a>,
4186
Next:<a rel="next" accesskey="n" href="#Status%20Menu">Status Menu</a>,
4187
Previous:<a rel="previous" accesskey="p" href="#Program%20Menu">Program Menu</a>,
4188
Up:<a rel="up" accesskey="u" href="#Menu%20Bar">Menu Bar</a>
4194
<h4 class="subsection">The Commands Menu</h4>
4196
<p>The <code>Commands</code> menu performs operations related to <small>DDD</small>
4197
commands, such as accessing the command history or defining new
4200
<p>Most of these items are not meant to be actually executed via the menu;
4201
instead, they serve as <em>reminder</em> for the equivalent keyboard
4205
<dt><code>Command History</code>
4206
<dd>View the command history. See <a href="#Command%20History">Command History</a>, for details.
4208
<br><dt><code>Previous</code>
4209
<dd>Show the previous command from the command history (<Up>).
4210
See <a href="#Command%20History">Command History</a>, for details.
4212
<br><dt><code>Next</code>
4213
<dd>Show the next command from the command history (<Down>).
4214
See <a href="#Command%20History">Command History</a>, for details.
4216
<br><dt><code>Find Backward</code>
4217
<dd>Do an incremental search backward through the command history
4218
(<Ctrl+B>). See <a href="#Command%20History">Command History</a>, for details.
4220
<br><dt><code>Find Forward</code>
4221
<dd>Do an incremental search forward through the command history (<Ctrl+F>).
4222
See <a href="#Command%20History">Command History</a>, for details.
4224
<br><dt><code>Quit Search</code>
4225
<dd>Quit incremental search through the command history (<Esc>).
4226
See <a href="#Command%20History">Command History</a>, for details.
4228
<br><dt><code>Complete</code>
4229
<dd>Complete the current command in the debugger console (<Tab>).
4230
See <a href="#Entering%20Commands">Entering Commands</a>, for details.
4232
<br><dt><code>Apply</code>
4233
<dd>Apply the current command in the debugger console (<Apply>).
4234
See <a href="#Entering%20Commands">Entering Commands</a>, for details.
4236
<br><dt><code>Clear Line</code>
4237
<dd>Clear the current command line in the debugger console (<Ctrl+U>).
4238
See <a href="#Entering%20Commands">Entering Commands</a>, for details.
4240
<br><dt><code>Clear Window</code>
4241
<dd>Clear the debugger console (<Shift+Ctrl+U>). See <a href="#Entering%20Commands">Entering Commands</a>, for details.
4243
<br><dt><code>Define Command</code>
4244
<dd>Define a new debugger command. See <a href="#Defining%20Commands">Defining Commands</a>, for details.
4246
<br><dt><code>Edit Buttons</code>
4247
<dd>Customize <small>DDD</small> buttons. See <a href="#Defining%20Buttons">Defining Buttons</a>, for details.
4252
<small class=header>
4253
Node:<a name="Status%20Menu">Status Menu</a>,
4254
Next:<a rel="next" accesskey="n" href="#Source%20Menu">Source Menu</a>,
4255
Previous:<a rel="previous" accesskey="p" href="#Commands%20Menu">Commands Menu</a>,
4256
Up:<a rel="up" accesskey="u" href="#Menu%20Bar">Menu Bar</a>
4262
<h4 class="subsection">The Status Menu</h4>
4264
<p>The <code>Status</code> menu lets you examine the program status, such as the
4265
stack traces, registers, or threads.
4268
<dt><code>Backtrace</code>
4269
<dd>View the current backtrace. See <a href="#Backtraces">Backtraces</a>, for a discussion.
4271
<br><dt><code>Registers</code>
4272
<dd>View the current register contents. See <a href="#Registers">Registers</a>, for details.
4274
<br><dt><code>Threads</code>
4275
<dd>View the current threads. See <a href="#Threads">Threads</a>, for details.
4277
<br><dt><code>Signals</code>
4278
<dd>View and edit the current signal handling. See <a href="#Signals">Signals</a>, for details.
4280
<br><dt><code>Up</code>
4281
<dd>Select the stack frame (i.e. the function) that called this one
4282
(<Ctrl+Up>). This advances toward the outermost frame, to higher
4283
frame numbers, to frames that have existed longer. See <a href="#Stack">Stack</a>, for
4286
<br><dt><code>Down</code>
4287
<dd>Select the stack frame (i.e. the function) that was called by this one
4288
(<Ctrl+Down>). This advances toward the innermost frame, to lower
4289
frame numbers, to frames that were created more recently. See <a href="#Stack">Stack</a>,
4295
<small class=header>
4296
Node:<a name="Source%20Menu">Source Menu</a>,
4297
Next:<a rel="next" accesskey="n" href="#Data%20Menu">Data Menu</a>,
4298
Previous:<a rel="previous" accesskey="p" href="#Status%20Menu">Status Menu</a>,
4299
Up:<a rel="up" accesskey="u" href="#Menu%20Bar">Menu Bar</a>
4305
<h4 class="subsection">The Source Menu</h4>
4307
<p>The <code>Source</code> menu performs source-related operations such as
4308
looking up items or editing breakpoints.
4311
<dt><code>Breakpoints</code>
4312
<dd>Edit all Breakpoints. See <a href="#Editing%20all%20Breakpoints">Editing all Breakpoints</a>, for details.
4314
<br><dt><code>Lookup ()</code>
4315
<dd>Look up the argument <code>()</code> in the source code (<Ctrl+/>).
4316
See <a href="#Looking%20up%20Definitions">Looking up Definitions</a>, for details.
4318
<br><dt><code>Find >> ()</code>
4319
<dd>Look up the next occurrence of the argument <code>()</code> in the current
4320
source code (<Ctrl+.>). See <a href="#Textual%20Search">Textual Search</a>, for details.
4322
<br><dt><code>Find << ()</code>
4323
<dd>Look up the previous occurrence of the argument <code>()</code> in the current
4324
source code (<Ctrl+,>). See <a href="#Textual%20Search">Textual Search</a>, for details.
4326
<br><dt><code>Find Words Only</code>
4327
<dd>If enabled, find only complete words (<Alt+W>). See <a href="#Textual%20Search">Textual Search</a>, for details.
4329
<br><dt><code>Find Case Sensitive</code>
4330
<dd>If enabled, find is case-sensitive (<Alt+I>). See <a href="#Textual%20Search">Textual Search</a>, for details.
4332
<br><dt><code>Display Line Numbers</code>
4333
<dd>If enabled, prefix source lines with their line number (<Alt+N>).
4334
See <a href="#Customizing%20Source">Customizing Source</a>, for details.
4336
<br><dt><code>Display Machine Code</code>
4337
<dd>If enabled, show machine code (<Alt+4>). See <a href="#Machine%20Code">Machine Code</a>, for details.
4339
<br><dt><code>Edit Source</code>
4340
<dd>Invoke an editor for the current source file (<Shift+Ctrl+V>).
4341
See <a href="#Editing%20Source%20Code">Editing Source Code</a>, for details.
4343
<br><dt><code>Reload Source</code>
4344
<dd>Reload the current source file (<Shift+Ctrl+L>). See <a href="#Editing%20Source%20Code">Editing Source Code</a>, for details.
4349
<small class=header>
4350
Node:<a name="Data%20Menu">Data Menu</a>,
4351
Next:<a rel="next" accesskey="n" href="#Maintenance%20Menu">Maintenance Menu</a>,
4352
Previous:<a rel="previous" accesskey="p" href="#Source%20Menu">Source Menu</a>,
4353
Up:<a rel="up" accesskey="u" href="#Menu%20Bar">Menu Bar</a>
4359
<h4 class="subsection">The Data Menu</h4>
4361
<p>The <code>Data</code> menu performs data-related operations such as editing
4362
displays or layouting the display graph.
4365
<dt><code>Displays</code>
4366
<dd>Invoke the Display Editor. See <a href="#Editing%20all%20Displays">Editing all Displays</a>, for details.
4368
<br><dt><code>Watchpoints</code>
4369
<dd>Edit all Watchpoints. See <a href="#Editing%20all%20Watchpoints">Editing all Watchpoints</a>, for details.
4371
<br><dt><code>Memory</code>
4372
<dd>View a memory dump. See <a href="#Examining%20Memory">Examining Memory</a>, for details.
4374
<br><dt><code>Print ()</code>
4375
<dd>Print the value of <code>()</code> in the debugger console (<Ctrl+=>).
4376
See <a href="#Printing%20Values">Printing Values</a>, for details.
4378
<br><dt><code>Display ()</code>
4379
<dd>Display the value of <code>()</code> in the data window (<Ctrl+->).
4380
See <a href="#Displaying%20Values">Displaying Values</a>, for details.
4382
<br><dt><code>Detect Aliases</code>
4383
<dd>If enabled, detect shared data structures (<Alt+A>). See <a href="#Shared%20Structures">Shared Structures</a>, for a discussion.
4385
<br><dt><code>Display Local Variables</code>
4386
<dd>Show all local variables in a display (<Alt+L>). See <a href="#Displaying%20Local%20Variables">Displaying Local Variables</a>, for details.
4388
<br><dt><code>Display Arguments</code>
4389
<dd>Show all arguments of the current function in a display (<Alt+U>).
4390
See <a href="#Displaying%20Local%20Variables">Displaying Local Variables</a>, for details.
4392
<br><dt><code>Status Displays</code>
4393
<dd>Show current debugging information in a display. See <a href="#Displaying%20Program%20Status">Displaying Program Status</a>, for details.
4395
<br><dt><code>Align on Grid</code>
4396
<dd>Align all displays on the grid (<Alt+G>). See <a href="#Aligning%20Displays">Aligning Displays</a>, for a
4399
<br><dt><code>Rotate Graph</code>
4400
<dd>Rotate the graph by 90 degrees (<Alt+R>). See <a href="#Rotating%20the%20Graph">Rotating the Graph</a>, for details.
4402
<br><dt><code>Layout Graph</code>
4403
<dd>Layout the graph (<Alt+Y>). See <a href="#Layouting%20the%20Graph">Layouting the Graph</a>, for details.
4405
<br><dt><code>Refresh</code>
4406
<dd>Update all values in the data window (<Ctrl+L>). See <a href="#Refreshing%20the%20Data%20Window">Refreshing the Data Window</a>, for details.
4411
<small class=header>
4412
Node:<a name="Maintenance%20Menu">Maintenance Menu</a>,
4413
Next:<a rel="next" accesskey="n" href="#Help%20Menu">Help Menu</a>,
4414
Previous:<a rel="previous" accesskey="p" href="#Data%20Menu">Data Menu</a>,
4415
Up:<a rel="up" accesskey="u" href="#Menu%20Bar">Menu Bar</a>
4421
<h4 class="subsection">The Maintenance Menu</h4>
4423
<p>The <code>Maintenance</code> menu performs operations that are useful for
4424
debugging <small>DDD</small>.
4426
<p>By default, this menu is disabled; it is enabled by specifically
4427
requesting it at <small>DDD</small> invocation (via the <code>--maintenance</code>
4428
option; see <a href="#Options">Options</a>). It is also enabled when <small>DDD</small> gets a
4432
<dt><code>Debug </code><small>DDD</small><code></code>
4433
<dd>Invoke a debugger (typically, <small>GDB</small>) and attach it to this <small>DDD</small>
4434
process (<F12>). This is useful only if you are a <small>DDD</small> maintainer.
4436
<br><dt><code>Dump Core Now</code>
4437
<dd>Make this <small>DDD</small> process dump core. This can also be achieved by
4438
sending <small>DDD</small> a <code>SIGUSR1</code> signal.
4440
<br><dt><code>Tic Tac Toe</code>
4441
<dd>Invoke a Tic Tac Toe game. You must try to get three stop signs in a
4442
row, while preventing <small>DDD</small> from doing so with its skulls. Click
4443
on <code>New Game</code> to restart.
4445
<br><dt><code>When </code><small>DDD</small><code> Crashes</code>
4446
<dd>Select what to do when <small>DDD</small> gets a fatal signal.
4449
<dt><code>Debug </code><small>DDD</small><code></code>
4450
<dd>Invoke a debugger on the <small>DDD</small> core dump when <small>DDD</small>
4451
crashes. This is useful only if you are a <small>DDD</small> maintainer.
4453
<br><dt><code>Dump Core</code>
4454
<dd>Just dump core when <small>DDD</small> crashes; don't invoke a debugger. This
4455
is the default setting, as the core dump may contain important
4456
information required for debugging <small>DDD</small>.
4458
<br><dt><code>Do Nothing</code>
4459
<dd>Do not dump core or invoke a debugger when <small>DDD</small> crashes.
4462
<br><dt><code>Remove Menu</code>
4463
<dd>Make this menu inaccessible again.
4468
<small class=header>
4469
Node:<a name="Help%20Menu">Help Menu</a>,
4470
Next:<a rel="next" accesskey="n" href="#Customizing%20the%20Menu%20Bar">Customizing the Menu Bar</a>,
4471
Previous:<a rel="previous" accesskey="p" href="#Maintenance%20Menu">Maintenance Menu</a>,
4472
Up:<a rel="up" accesskey="u" href="#Menu%20Bar">Menu Bar</a>
4478
<h4 class="subsection">The Help Menu</h4>
4480
<p>The <code>Help</code> menu gives help on <small>DDD</small> usage. See <a href="#Getting%20Help">Getting Help</a>, for a discussion on how to get help within <small>DDD</small>.
4483
<dt><code>Overview</code>
4484
<dd>Explains the most important concepts of <small>DDD</small> help.
4486
<br><dt><code>On Item</code>
4487
<dd>Lets you click on an item to get help on it.
4489
<br><dt><code>On Window</code>
4490
<dd>Gives you help on this <small>DDD</small> window.
4492
<br><dt><code>What Now?</code>
4493
<dd>Gives a hint on what to do next.
4495
<br><dt><code>Tip of the Day</code>
4496
<dd>Shows the current tip of the day.
4498
<br><dt><code></code><small>DDD</small><code> Reference</code>
4499
<dd>Shows the <small>DDD</small> Manual.
4501
<br><dt><code></code><small>DDD</small><code> News</code>
4502
<dd>Shows what's new in this <small>DDD</small> release.
4504
<br><dt><code>Debugger Reference</code>
4505
<dd>Shows the on-line documentation for the inferior debugger.
4507
<br><dt><code></code><small>DDD</small><code> License</code>
4508
<dd>Shows the <small>DDD</small> License (see <a href="#License">License</a>).
4510
<br><dt><code></code><small>DDD</small><code> </code><small>WWW</small><code> Page</code>
4511
<dd>Invokes a <small>WWW</small> browser for the <small>DDD</small> <small>WWW</small> page.
4513
<br><dt><code>About </code><small>DDD</small><code></code>
4514
<dd>Shows version and copyright information.
4519
<small class=header>
4520
Node:<a name="Customizing%20the%20Menu%20Bar">Customizing the Menu Bar</a>,
4521
Previous:<a rel="previous" accesskey="p" href="#Help%20Menu">Help Menu</a>,
4522
Up:<a rel="up" accesskey="u" href="#Menu%20Bar">Menu Bar</a>
4528
<h4 class="subsection">Customizing the Menu Bar</h4>
4530
<p>The Menu Bar can be customized in various ways (see <a href="#Customizing">Customizing</a>).
4533
<li><a accesskey="1" href="#Auto-Raise%20Menus">Auto-Raise Menus</a>:
4534
<li><a accesskey="2" href="#Customizing%20the%20Edit%20Menu">Customizing the Edit Menu</a>:
4539
<small class=header>
4540
Node:<a name="Auto-Raise%20Menus">Auto-Raise Menus</a>,
4541
Next:<a rel="next" accesskey="n" href="#Customizing%20the%20Edit%20Menu">Customizing the Edit Menu</a>,
4542
Up:<a rel="up" accesskey="u" href="#Customizing%20the%20Menu%20Bar">Customizing the Menu Bar</a>
4548
<h5 class="subsubsection">Auto-Raise Menus</h5>
4550
<p>You can cause pull-down menus to be raised automatically.
4553
<table width="100%">
4555
<td align="left"><b>autoRaiseMenu</b><i> </i>(<i>class AutoRaiseMenu</i>)<i>
4557
<td align="right">Resource</td>
4560
<table width="95%" align="center">
4562
If <code>on</code> (default), <small>DDD</small> will always keep the pull down menu
4563
on top of the <small>DDD</small> main window. If this setting interferes with
4564
your window manager, or if your window manager does not auto-raise
4565
windows, set this resource to <code>off</code>.
4570
<table width="100%">
4572
<td align="left"><b>autoRaiseMenuDelay</b><i> </i>(<i>class AutoRaiseMenuDelay</i>)<i>
4574
<td align="right">Resource</td>
4577
<table width="95%" align="center">
4579
The time (in ms) during which an initial auto-raised window blocks
4580
further auto-raises. This is done to prevent two overlapping
4581
auto-raised windows from entering an <em>auto-raise loop</em>. Default is
4588
<small class=header>
4589
Node:<a name="Customizing%20the%20Edit%20Menu">Customizing the Edit Menu</a>,
4590
Previous:<a rel="previous" accesskey="p" href="#Auto-Raise%20Menus">Auto-Raise Menus</a>,
4591
Up:<a rel="up" accesskey="u" href="#Customizing%20the%20Menu%20Bar">Customizing the Menu Bar</a>
4597
<h5 class="subsubsection">Customizing the Edit Menu</h5>
4599
<p>In the Menu Bar, the <code>Edit</code> Menu can be customized in various ways.
4600
Use <code>Edit => Preferences => Startup</code> to customize
4603
<p>The <Ctrl+C> key can be bound to different actions, each in
4604
accordance with a specific style guide.
4607
<dt><code>Copy</code>
4608
<dd>This setting binds <Ctrl+C> to the Copy operation, as specified by
4609
the KDE style guide. In this setting, use <ESC> to interrupt the
4612
<br><dt><code>Interrupt</code>
4614
This (default) setting binds <Ctrl+C> to the Interrupt operation, as
4615
used in several <small>UNIX</small> command-line programs. In this setting, use
4616
<Ctrl+Ins> to copy text to the clipboard.
4618
<p>The <Ctrl+A> key can be bound to different actions, too.
4621
<dt><code>Select All</code>
4622
<dd>This (default) setting binds <Ctrl+A> to the <code>Select All</code>
4623
operation, as specified by the KDE style guide. In this setting, use
4624
<Home> to move the cursor to the beginning of a line.
4626
<br><dt><code>Beginning of Line</code>
4627
<dd>This setting binds <Ctrl+A> to the <code>Beginning of Line</code>
4628
operation, as used in several <small>UNIX</small> text-editing programs. In this
4629
setting, use <Ctrl+Shift+A> to select all text.
4632
<p>Here are the related <small>DDD</small> resources:
4635
<table width="100%">
4637
<td align="left"><b>cutCopyPasteBindings</b><i> </i>(<i>class BindingStyle</i>)<i>
4639
<td align="right">Resource</td>
4642
<table width="95%" align="center">
4644
Controls the key bindings for clipboard operations.
4647
<li>If this is <code>Motif</code> (default), Cut/Copy/Paste is on
4648
<Shift+Del>/<Ctrl+Ins>/<Shift+Ins>. This is conformant to
4649
the M*tif style guide.
4650
<li>If this is <code>KDE</code>, Cut/Copy/Paste is on
4651
<Ctrl+X>/<Ctrl+C>/<Ctrl+V>. This is conformant to the KDE
4652
style guide. Note that this means that <Ctrl+C> no longer
4653
interrupts the debuggee; use <ESC> instead.
4659
<table width="100%">
4661
<td align="left"><b>selectAllBindings</b><i> </i>(<i>class BindingStyle</i>)<i>
4663
<td align="right">Resource</td>
4666
<table width="95%" align="center">
4668
Controls the key bindings for the <code>Select All</code> operation.
4671
<li>If this is <code>Motif</code>, Select All is on <Shift+Ctrl+A>.
4672
<li>If this is <code>KDE</code> (default), Select All is on <Ctrl+A>. This is
4673
conformant to the KDE style guide. Note that this means that
4674
<Ctrl+A> no longer moves the cursor to the beginning of a line; use
4675
<Home> instead.
4682
<small class=header>
4683
Node:<a name="Tool%20Bar">Tool Bar</a>,
4684
Next:<a rel="next" accesskey="n" href="#Command%20Tool">Command Tool</a>,
4685
Previous:<a rel="previous" accesskey="p" href="#Menu%20Bar">Menu Bar</a>,
4686
Up:<a rel="up" accesskey="u" href="#Windows">Windows</a>
4692
<h3 class="section">The Tool Bar</h3>
4694
<p>Some <small>DDD</small> commands require an <em>argument</em>. This argument
4695
is specified in the <em>argument field</em>, labeled <code>():</code>.
4696
Basically, there are four ways to set arguments:
4699
<li>You can <em>key in</em> the argument manually.
4700
<li>You can <em>paste</em> the current selection into the argument field
4701
(typically using <kbd>mouse button 2</kbd>). To clear old contents
4702
beforehand, click on the <code>():</code> label.
4703
<li>You can <em>select an item</em> from the source and data windows. This
4704
will automatically copy the item to the argument field.
4705
<li>You can select a <em>previously used argument</em> from the drop-down
4706
menu at the right of the argument field.
4709
<p>Using <small>GDB</small> and Perl, the argument field provides a completion mechanism.
4710
You can enter the first few characters of an item an press the <TAB>
4711
key to complete it. Pressing <TAB> again shows alternative
4714
<p>After having entered an argument, you can select one of the buttons on
4715
the right. Most of these buttons also have menus associated with them;
4716
this is indicated by a small arrow in the upper right corner. Pressing
4717
and holding <em>mouse button 1</em> on such a button will pop up a menu
4718
with further operations.
4721
<div align="center"><img src="PICS/ddd-toolbar.jpg" alt="PICS/ddd-toolbar.jpg"></div>
4723
<p>These are the buttons of the tool bar. Note that not all buttons may be
4724
inactive, depending on the current state and the capabilities of the
4728
<dt><code>Lookup</code>
4731
<p>Look up the argument <code>()</code> in the source code. See <a href="#Looking%20up%20Definitions">Looking up Definitions</a>, for details.
4733
<br><dt><code>Find >></code>
4736
<p>Look up the next occurrence of the argument <code>()</code> in the current
4737
source code. See <a href="#Textual%20Search">Textual Search</a>, for details.
4739
<br><dt><code>Break/Clear</code>
4742
<p>Toggle a breakpoint (see <a href="#Breakpoints">Breakpoints</a>) at the location <code>()</code>.
4745
<dt><code>Break</code>
4746
<dd>If there is no breakpoint at <code>()</code>, then this button is labeled
4747
<code>Break</code>. Clicking on <code>Break</code> sets a breakpoint at the
4748
location <code>()</code>. See <a href="#Setting%20Breakpoints">Setting Breakpoints</a>, for details.
4750
<br><dt><code>Clear</code>
4751
<dd>If there already is a breakpoint at <code>()</code>, then this button is
4752
labeled <code>Clear</code>. Clicking on <code>Clear</code> clears (deletes) the
4753
breakpoint at the location <code>()</code>. See <a href="#Deleting%20Breakpoints">Deleting Breakpoints</a>, for
4757
<br><dt><code>Watch/Unwatch</code>
4760
<p>Toggle a watchpoint (see <a href="#Watchpoints">Watchpoints</a>) on the expression <code>()</code>.
4763
<dt><code>Watch</code>
4764
<dd>If <code>()</code> is not being watched, then this button is labeled
4765
<code>Watch</code>. Clicking on <code>Watch</code> creates a watchpoint on the
4766
expression <code>()</code>. See <a href="#Setting%20Watchpoints">Setting Watchpoints</a>, for details.
4768
<br><dt><code>Unwatch</code>
4769
<dd>If <code>()</code> is being watched, then this button is labeled
4770
<code>Unwatch</code>. Clicking on <code>Unwatch</code> clears (deletes) the
4771
watchpoint on <code>()</code>. See <a href="#Deleting%20Watchpoints">Deleting Watchpoints</a>, for details.
4774
<br><dt><code>Print</code>
4777
<p>Print the value of <code>()</code> in the debugger console. See <a href="#Printing%20Values">Printing Values</a>, for details.
4779
<br><dt><code>Display</code>
4782
<p>Display the value of <code>()</code> in the data window. See <a href="#Displaying%20Values">Displaying Values</a>, for details.
4784
<br><dt><code>Plot</code>
4787
<p>Plot <code>()</code> in a plot window. See <a href="#Plotting%20Values">Plotting Values</a>, for details.
4789
<br><dt><code>Show/Hide</code>
4792
<p>Toggle details of the selected display(s). See <a href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>, for a discussion.
4794
<br><dt><code>Rotate</code>
4797
<p>Rotate the selected display(s). See <a href="#Rotating%20Displays">Rotating Displays</a>, for details.
4799
<br><dt><code>Set</code>
4802
<p>Set (change) the value of <code>()</code>. See <a href="#Assignment">Assignment</a>, for details.
4804
<br><dt><code>Undisp</code>
4807
<p>Undisplay (delete) the selected display(s). See <a href="#Deleting%20Displays">Deleting Displays</a>,
4812
<li><a accesskey="1" href="#Customizing%20the%20Tool%20Bar">Customizing the Tool Bar</a>:
4817
<small class=header>
4818
Node:<a name="Customizing%20the%20Tool%20Bar">Customizing the Tool Bar</a>,
4819
Up:<a rel="up" accesskey="u" href="#Tool%20Bar">Tool Bar</a>
4825
<h4 class="subsection">Customizing the Tool Bar</h4>
4827
<p>The <small>DDD</small> tool bar buttons can appear in a variety of styles,
4828
customized via <code>Edit => Preferences => Startup</code>.
4831
<dt><code>Images</code>
4832
<dd>This lets each tool bar button show an image illustrating the action.
4834
<br><dt><code>Captions</code>
4835
<dd>This shows the action name below the image.
4838
<p>The default is to have images as well as captions, but you can choose to
4839
have only images (saving space) or only captions.
4842
<div align="center"><img src="PICS/ddd-toolbars.jpg" alt="PICS/ddd-toolbars.jpg"></div>
4844
<p>If you choose to have neither images nor captions, tool bar buttons are
4845
labeled like other buttons, as in <small>DDD</small> 2.x. Note that this
4846
implies that in the stacked window configuration, the common tool bar
4847
cannot be displayed; it is replaced by two separate tool bars, as in
4848
<small>DDD</small> 2.x.
4850
<p>If you enable <code>Flat</code> buttons (default), the border of tool bar
4851
buttons will appear only if the mouse pointer is over them. This
4852
latest-and-greatest <small>GUI</small> invention can be disabled, such that
4853
the button border is always shown.
4855
<p>If you enable <code>Color</code> buttons, tool bar images will be colored when
4856
entered. If <small>DDD</small> was built using M*tif 2.0 and later, you can
4857
also choose a third setting, where buttons appear in color all the time.
4859
<p>Here are the related resources (see <a href="#Customizing">Customizing</a>):
4862
<table width="100%">
4864
<td align="left"><b>activeButtonColorKey</b><i> </i>(<i>class ColorKey</i>)<i>
4866
<td align="right">Resource</td>
4869
<table width="95%" align="center">
4871
The <small>XPM</small> color key to use for the images of active buttons
4872
(entered or armed). <code>c</code> means color, <code>g</code> (default) means
4873
grey, and <code>m</code> means monochrome.
4878
<table width="100%">
4880
<td align="left"><b>buttonCaptions</b><i> </i>(<i>class ButtonCaptions</i>)<i>
4882
<td align="right">Resource</td>
4885
<table width="95%" align="center">
4887
Whether the tool bar buttons should be shown using captions
4888
(<code>on</code>, default) or not (<code>off</code>). If neither captions nor
4889
images are enabled, tool bar buttons are shown using ordinary labels.
4890
See also <code>buttonImages</code>, below.
4895
<table width="100%">
4897
<td align="left"><b>buttonCaptionGeometry</b><i> </i>(<i>class ButtonCaptionGeometry</i>)<i>
4899
<td align="right">Resource</td>
4902
<table width="95%" align="center">
4904
The geometry of the caption subimage within the button icons. Default
4905
is <code>29x7+0-0</code>.
4910
<table width="100%">
4912
<td align="left"><b>buttonImages</b><i> </i>(<i>class ButtonImages</i>)<i>
4914
<td align="right">Resource</td>
4917
<table width="95%" align="center">
4919
Whether the tool bar buttons should be shown using images (<code>on</code>,
4920
default) or not (<code>off</code>). If neither captions nor images are
4921
enabled, tool bar buttons are shown using ordinary labels. See also
4922
<code>buttonCaptions</code>, above.
4927
<table width="100%">
4929
<td align="left"><b>buttonImageGeometry</b><i> </i>(<i>class ButtonImageGeometry</i>)<i>
4931
<td align="right">Resource</td>
4934
<table width="95%" align="center">
4936
The geometry of the image within the button icon. Default is
4937
<code>25x21+2+0</code>.
4942
<table width="100%">
4944
<td align="left"><b>buttonColorKey</b><i> </i>(<i>class ColorKey</i>)<i>
4946
<td align="right">Resource</td>
4949
<table width="95%" align="center">
4951
The <small>XPM</small> color key to use for the images of inactive buttons
4952
(non-entered or insensitive). <code>c</code> means color, <code>g</code>
4953
(default) means grey, and <code>m</code> means monochrome.
4958
<table width="100%">
4960
<td align="left"><b>flatToolbarButtons</b><i> </i>(<i>class FlatButtons</i>)<i>
4962
<td align="right">Resource</td>
4965
<table width="95%" align="center">
4967
If <code>on</code> (default), all tool bar buttons with images or captions
4968
are given a `flat' appearance--the 3-D border only shows up when the
4969
pointer is over the icon. If <code>off</code>, the 3-D border is shown all
4975
<table width="100%">
4977
<td align="left"><b>flatDialogButtons</b><i> </i>(<i>class FlatButtons</i>)<i>
4979
<td align="right">Resource</td>
4982
<table width="95%" align="center">
4984
If <code>on</code> (default), all dialog buttons with images or captions
4985
are given a `flat' appearance--the 3-D border only shows up when
4986
the pointer is over the icon. If <code>off</code>, the 3-D border is shown
4993
<small class=header>
4994
Node:<a name="Command%20Tool">Command Tool</a>,
4995
Next:<a rel="next" accesskey="n" href="#Getting%20Help">Getting Help</a>,
4996
Previous:<a rel="previous" accesskey="p" href="#Tool%20Bar">Tool Bar</a>,
4997
Up:<a rel="up" accesskey="u" href="#Windows">Windows</a>
5003
<h3 class="section">The Command Tool</h3>
5005
<p>The command tool is a small window that gives you access to the most
5006
frequently used <small>DDD</small> commands. It can be moved around on top of
5007
the <small>DDD</small> windows, but it can also be placed besides them.
5009
<p>By default, the command tool <em>sticks</em> to the <small>DDD</small> source
5010
window: Whenever you move the <small>DDD</small> source window, the command
5011
tool follows such that the distance between source window and command
5012
tool remains the same. By default, the command tool is also
5013
<em>auto-raised</em>, such that it stays on top of other <small>DDD</small>
5016
<p>The command tool can be configured to appear as a command tool bar above
5017
the source window; see <code>Edit => Preferences => Source
5018
=> Tool Buttons Location</code> for details.
5020
<p>Whenever you save <small>DDD</small> state, <small>DDD</small> also saves the distance
5021
between command tool and source window, such that you can select your
5022
own individual command tool placement. To move the command tool to its
5023
saved position, use <code>View => Command Tool</code>.
5026
<div align="center"><img src="PICS/ddd-tool.jpg" alt="PICS/ddd-tool.jpg"></div>
5028
<p>These are the buttons of the command tool. Note that not all buttons
5029
may be inactive, depending on the current state and the capabilities of
5030
the inferior debugger.
5033
<dt><code>Run</code>
5034
<dd>Start program execution. When you click this button, your program will
5035
begin to execute immediately. See <a href="#Starting%20Program%20Execution">Starting Program Execution</a>, for
5038
<br><dt><code>Interrupt</code>
5039
<dd>Interrupt program execution. This is equivalent to sending an interrupt
5040
signal to the process. See <a href="#Interrupting">Interrupting</a>, for details.
5042
<br><dt><code>Step</code>
5043
<dd>Continue running your program until control reaches a different source
5044
line, then stop it and return control to <small>DDD</small>. See <a href="#Resuming%20Execution">Resuming Execution</a>, for details.
5046
<br><dt><code>Stepi</code>
5047
<dd>Execute one machine instruction, then stop and return to <small>DDD</small>.
5048
See <a href="#Machine%20Code%20Execution">Machine Code Execution</a>, for details.
5050
<br><dt><code>Next</code>
5051
<dd>Continue to the next source line in the current (innermost) stack
5052
frame. This is similar to <code>Step</code>, but function calls that appear
5053
within the line of code are executed without stopping.
5054
See <a href="#Resuming%20Execution">Resuming Execution</a>, for details.
5056
<br><dt><code>Nexti</code>
5057
<dd>Execute one machine instruction, but if it is a function call,
5058
proceed until the function returns.
5059
See <a href="#Machine%20Code%20Execution">Machine Code Execution</a>, for details.
5061
<br><dt><code>Until</code>
5062
<dd>Continue running until a source line past the current line, in the
5063
current stack frame, is reached. See <a href="#Resuming%20Execution">Resuming Execution</a>, for details.
5065
<br><dt><code>Finish</code>
5066
<dd>Continue running until just after function in the selected stack frame
5067
returns. Print the returned value (if any). See <a href="#Resuming%20Execution">Resuming Execution</a>,
5070
<br><dt><code>Cont</code>
5071
<dd>Resume program execution, at the address where your program last
5072
stopped; any breakpoints set at that address are bypassed.
5073
See <a href="#Resuming%20Execution">Resuming Execution</a>, for details.
5075
<br><dt><code>Kill</code>
5076
<dd>Kill the process of the debugged program. See <a href="#Killing%20the%20Program">Killing the Program</a>,
5079
<br><dt><code>Up</code>
5080
<dd>Select the stack frame (i.e. the function) that called this one. This
5081
advances toward the outermost frame, to higher frame numbers, to frames
5082
that have existed longer. See <a href="#Stack">Stack</a>, for details.
5084
<br><dt><code>Down</code>
5085
<dd>Select the stack frame (i.e. the function) that was called by this one.
5086
This advances toward the innermost frame, to lower frame numbers, to
5087
frames that were created more recently. See <a href="#Stack">Stack</a>, for details.
5089
<br><dt><code>Undo</code>
5090
<dd>Undo the most recent action. Almost all commands can be undone this
5091
way. See <a href="#Undo%20and%20Redo">Undo and Redo</a>, for details.
5093
<br><dt><code>Redo</code>
5094
<dd>Redo the action most recently undone. Every command undone can be
5095
redone this way. See <a href="#Undo%20and%20Redo">Undo and Redo</a>, for details.
5097
<br><dt><code>Edit</code>
5098
<dd>Invoke an editor for the current source file. See <a href="#Editing%20Source%20Code">Editing Source Code</a>, for details.
5100
<br><dt><code>Make</code>
5101
<dd>Run the <code>make</code> program with the most recently given arguments.
5102
See <a href="#Recompiling">Recompiling</a>, for details.
5106
<li><a accesskey="1" href="#Customizing%20the%20Command%20Tool">Customizing the Command Tool</a>:
5107
<li><a accesskey="2" href="#Customizing%20Tool%20Position">Customizing Tool Position</a>:
5112
<small class=header>
5113
Node:<a name="Customizing%20the%20Command%20Tool">Customizing the Command Tool</a>,
5114
Next:<a rel="next" accesskey="n" href="#Customizing%20Tool%20Position">Customizing Tool Position</a>,
5115
Up:<a rel="up" accesskey="u" href="#Command%20Tool">Command Tool</a>
5121
<h4 class="subsection">Customizing the Command Tool</h4>
5123
<p>The Command Tool can be customized in various ways.
5126
<li><a accesskey="1" href="#Disabling%20the%20Command%20Tool">Disabling the Command Tool</a>:
5129
<p>See <a href="#Customizing%20Buttons">Customizing Buttons</a>, for details on customizing the tool buttons.
5133
<small class=header>
5134
Node:<a name="Disabling%20the%20Command%20Tool">Disabling the Command Tool</a>,
5135
Up:<a rel="up" accesskey="u" href="#Customizing%20the%20Command%20Tool">Customizing the Command Tool</a>
5141
<h5 class="subsubsection">Disabling the Command Tool</h5>
5143
<p>You can disable the command tool and show its buttons in a separate row
5144
beneath the tool bar. To disable the command tool, set <code>Edit
5145
=> Preferences => Source => Tool Buttons Location
5146
=> Source Window</code>.
5149
<div align="center"><img src="PICS/ddd-source-prefs.jpg" alt="PICS/ddd-source-prefs.jpg"></div>
5151
<p>Here's the related resource:
5154
<table width="100%">
5156
<td align="left"><b>commandToolBar</b><i> </i>(<i>class ToolBar</i>)<i>
5158
<td align="right">Resource</td>
5161
<table width="95%" align="center">
5163
Whether the tool buttons should be shown in a tool bar above the source
5164
window (<code>on</code>) or within the command tool (<code>off</code>, default).
5165
Enabling the command tool bar disables the command tool and vice versa.
5171
<small class=header>
5172
Node:<a name="Customizing%20Tool%20Position">Customizing Tool Position</a>,
5173
Previous:<a rel="previous" accesskey="p" href="#Customizing%20the%20Command%20Tool">Customizing the Command Tool</a>,
5174
Up:<a rel="up" accesskey="u" href="#Command%20Tool">Command Tool</a>
5180
<h4 class="subsection">Command Tool Position</h4>
5182
<p>The following resources control the position of the command tool
5183
(see <a href="#Customizing">Customizing</a>):
5186
<table width="100%">
5188
<td align="left"><b>autoRaiseTool</b><i> </i>(<i>class AutoRaiseTool</i>)<i>
5190
<td align="right">Resource</td>
5193
<table width="95%" align="center">
5195
If <code>on</code> (default), <small>DDD</small> will always keep the command tool on
5196
top of other <small>DDD</small> windows. If this setting interferes with your
5197
window manager, or if your window manager keeps the command tool on top
5198
anyway, set this resource to <code>off</code>.
5203
<table width="100%">
5205
<td align="left"><b>stickyTool</b><i> </i>(<i>class StickyTool</i>)<i>
5207
<td align="right">Resource</td>
5210
<table width="95%" align="center">
5212
If <code>on</code> (default), the command tool automatically follows every
5213
movement of the source window. Whenever the source window is moved, the
5214
command tool is moved by the same offset such that its position relative
5215
to the source window remains unchanged. If <code>off</code>, the command tool
5216
does not follow source window movements.
5221
<table width="100%">
5223
<td align="left"><b>toolRightOffset</b><i> </i>(<i>class Offset</i>)<i>
5225
<td align="right">Resource</td>
5228
<table width="95%" align="center">
5230
The distance between the right border of the command tool and the
5231
right border of the source text (in pixels). Default is 8.
5236
<table width="100%">
5238
<td align="left"><b>toolTopOffset</b><i> </i>(<i>class Offset</i>)<i>
5240
<td align="right">Resource</td>
5243
<table width="95%" align="center">
5245
The distance between the upper border of the command tool and the
5246
upper border of the source text (in pixels). Default is 8.
5251
<li><a accesskey="1" href="#Customizing%20Tool%20Decoration">Customizing Tool Decoration</a>:
5256
<small class=header>
5257
Node:<a name="Customizing%20Tool%20Decoration">Customizing Tool Decoration</a>,
5258
Up:<a rel="up" accesskey="u" href="#Customizing%20Tool%20Position">Customizing Tool Position</a>
5264
<h5 class="subsubsection">Customizing Tool Decoration</h5>
5266
<p>The following resources control the decoration of the command tool
5267
(see <a href="#Customizing">Customizing</a>):
5270
<table width="100%">
5272
<td align="left"><b>decorateTool</b><i> </i>(<i>class Decorate</i>)<i>
5274
<td align="right">Resource</td>
5277
<table width="95%" align="center">
5279
This resource controls the decoration of the command tool.
5282
<li>If this is <code>off</code>, the command tool is created as a <em>transient
5283
window</em>. Several window managers keep transient windows automatically
5284
on top of their parents, which is appropriate for the command tool.
5285
However, your window manager may be configured not to decorate transient
5286
windows, which means that you cannot easily move the command tool
5289
<li>If this is <code>on</code>, <small>DDD</small> realizes the command tool as a
5290
<em>top-level window</em>. Such windows are always decorated by the
5291
window manager. However, top-level windows are not automatically kept
5292
on top of other windows, such that you may wish to set the
5293
<code>autoRaiseTool</code> resource, too.
5295
<li>If this is <code>auto</code> (default), <small>DDD</small> checks whether the window
5296
manager decorates transients. If yes, the command tool is realized as a
5297
transient window (as in the <code>off</code> setting); if no, the command tool
5298
is realized as a top-level window (as in the <code>on</code> setting). Hence,
5299
the command tool is always decorated using the "best" method, but the
5300
extra check takes some time.
5307
<small class=header>
5308
Node:<a name="Getting%20Help">Getting Help</a>,
5309
Next:<a rel="next" accesskey="n" href="#Undo%20and%20Redo">Undo and Redo</a>,
5310
Previous:<a rel="previous" accesskey="p" href="#Command%20Tool">Command Tool</a>,
5311
Up:<a rel="up" accesskey="u" href="#Windows">Windows</a>
5317
<h3 class="section">Getting Help</h3>
5319
<p><small>DDD</small> has an extensive on-line help system. Here's how to get
5320
help while working with <small>DDD</small>.
5323
<li>You can get a short help text on most <small>DDD</small> buttons by simply
5324
moving the mouse pointer on it and leave it there. After a second, a
5325
small window (called <dfn>button tip</dfn>; also known as <dfn>tool tip</dfn> or
5326
<dfn>balloon help</dfn>) pops up, giving a hint on the button's meaning. The
5327
button tip disappears as soon as you move the mouse pointer to another
5330
<li>The <dfn>status line</dfn> also displays information about the currently selected
5331
item. By clicking on the status line, you can redisplay the most
5334
<li>You can get detailed help on any visible <small>DDD</small> item. Just
5335
point on the item you want help and press the <code>F1</code> key. This
5336
pops up a detailed help text.
5338
<li>The <small>DDD</small> dialogs all contain <code>Help</code> buttons that give
5339
detailed information about the dialog.
5341
<li>You can get help on debugger commands by entering <code>help</code> at the
5342
debugger prompt. See <a href="#Entering%20Commands">Entering Commands</a>, for details on entering
5345
<li>If you are totally stuck, try <code>Help => What Now?</code> (the
5346
<code>What Now?</code> item in the <code>Help</code> menu) or press <Ctrl+F1>.
5347
Depending on the current state, <small>DDD</small> will give you some hints on
5348
what you can do next.
5350
<li>Of course, you can always refer to the <em>on-line documentation</em>:
5353
<li><code>Help => </code><small>DDD</small><code> Reference</code> gives you access to the
5354
<small>DDD</small> manual, the ultimate <small>DDD</small> reference.
5356
<li><code>Help => Debugger Reference</code> shows you the
5357
on-line documentation of the inferior debugger.
5359
<li><code>Help => </code><small>DDD</small><code> </code><small>WWW</small><code> Page</code> gives you access to the
5360
latest and greatest information on <small>DDD</small>.
5363
<li>Finally, the <small>DDD</small> <dfn>Tip Of The Day</dfn> gives you important hints
5364
with each new <small>DDD</small> invocation.
5367
<p>All these functions can be customized in various ways
5368
(see <a href="#Customizing%20Help">Customizing Help</a>).
5370
<p>If, after all, you made a mistake, don't worry: almost every <small>DDD</small>
5371
command can be undone. See <a href="#Undo%20and%20Redo">Undo and Redo</a>, for details.
5375
<small class=header>
5376
Node:<a name="Undo%20and%20Redo">Undo and Redo</a>,
5377
Next:<a rel="next" accesskey="n" href="#Customizing">Customizing</a>,
5378
Previous:<a rel="previous" accesskey="p" href="#Getting%20Help">Getting Help</a>,
5379
Up:<a rel="up" accesskey="u" href="#Windows">Windows</a>
5385
<h3 class="section">Undoing and Redoing Commands</h3>
5387
<p>Almost every <small>DDD</small> command can be undone, using <code>Edit
5388
=> Undo</code> or the <code>Undo</code> button on the command tool.
5390
<p>Likewise, <code>Edit => Redo</code> repeats the command most recently
5393
<p>The <code>Edit</code> menu shows which commands are to be undone and redone
5394
next; this is also indicated by the popup help on the <code>Undo</code> and
5395
<code>Redo</code> buttons.
5399
<small class=header>
5400
Node:<a name="Customizing">Customizing</a>,
5401
Previous:<a rel="previous" accesskey="p" href="#Undo%20and%20Redo">Undo and Redo</a>,
5402
Up:<a rel="up" accesskey="u" href="#Windows">Windows</a>
5408
<h3 class="section">Customizing DDD</h3>
5410
<p><small>DDD</small> is controlled by several <em>resources</em>--user-defined
5411
variables that take specific values in order to control and customize
5412
<small>DDD</small> behavior.
5414
<p>Most <small>DDD</small> resources can be set interactively while <small>DDD</small> is
5415
running or when invoking <small>DDD</small>. See <a href="#Resource%20Index">Resource Index</a>, for the full list
5416
of <small>DDD</small> resources.
5418
<p>We first discuss how customizing works in general; then we turn to
5419
customizing parts of <small>DDD</small> introduced so far.
5422
<li><a accesskey="1" href="#How%20Customizing%20Works">How Customizing Works</a>:
5423
<li><a accesskey="2" href="#Customizing%20Help">Customizing Help</a>:
5424
<li><a accesskey="3" href="#Customizing%20Undo">Customizing Undo</a>:
5425
<li><a accesskey="4" href="#Customizing%20Windows">Customizing Windows</a>:
5426
<li><a accesskey="5" href="#Debugger%20Settings">Debugger Settings</a>:
5431
<small class=header>
5432
Node:<a name="How%20Customizing%20Works">How Customizing Works</a>,
5433
Next:<a rel="next" accesskey="n" href="#Customizing%20Help">Customizing Help</a>,
5434
Up:<a rel="up" accesskey="u" href="#Customizing">Customizing</a>
5440
<h4 class="subsection">How Customizing DDD Works</h4>
5443
<li><a accesskey="1" href="#Resources">Resources</a>:
5444
<li><a accesskey="2" href="#Changing%20Resources">Changing Resources</a>:
5445
<li><a accesskey="3" href="#Saving%20Options">Saving Options</a>:
5450
<small class=header>
5451
Node:<a name="Resources">Resources</a>,
5452
Next:<a rel="next" accesskey="n" href="#Changing%20Resources">Changing Resources</a>,
5453
Up:<a rel="up" accesskey="u" href="#How%20Customizing%20Works">How Customizing Works</a>
5459
<h5 class="subsubsection">Resources</h5>
5461
<p>Just like any X program, <small>DDD</small> has a number of places to get
5462
resource values from. For <small>DDD</small>, the most important places to
5463
specify resources are:
5466
<li>The <code>~/.ddd/init</code> file (<code>~</code> stands for your home
5467
directory). This file is read in by <small>DDD</small> upon start-up; the
5468
resources specified herein override all other sources (except for
5469
resources given implicitly by command-line options).
5471
<p>If the environment variable <code>DDD_STATE</code> is set, its value
5472
is used instead of <code>~/.ddd/</code>.
5474
</p><li>The <code>Ddd</code> application-defaults file. This file is
5475
typically compiled into the <small>DDD</small> executable. If it exists, its
5476
resource values override the values compiled into <small>DDD</small>. If the
5477
versions of the <code>Ddd</code> application-defaults file and the
5478
<small>DDD</small> executable do not match, <small>DDD</small> may not function
5479
properly; <small>DDD</small> will give you a warning in this case.<a rel="footnote" href="#fn-8"><sup>8</sup></a>
5481
<li>The command-line options. These options override all other resource
5484
<li>If the environment variable <code>DDD_SESSION</code> is set, it
5485
indicates the name of a session to start, overriding all options and
5486
resources. This is used by <small>DDD</small> when restarting itself.
5489
<p>Not every resource has a matching command-line option. Each resource
5490
(whether in <code>~/.ddd/init</code> or <code>Ddd</code>) is
5491
specified using a line
5493
<pre class="example"> Ddd*<var>resource</var>: <var>value</var>
5496
<p>For instance, to set the <code>pollChildStatus</code> resource to <code>off</code>,
5497
you would specify in <code>~/.ddd/init</code>:
5499
<pre class="example"> Ddd*pollChildStatus: off
5502
<p>For more details on the syntax of resource specifications, see the
5503
section <cite>RESOURCES</cite> in the <cite>X(1)</cite> manual page.
5507
<small class=header>
5508
Node:<a name="Changing%20Resources">Changing Resources</a>,
5509
Next:<a rel="next" accesskey="n" href="#Saving%20Options">Saving Options</a>,
5510
Previous:<a rel="previous" accesskey="p" href="#Resources">Resources</a>,
5511
Up:<a rel="up" accesskey="u" href="#How%20Customizing%20Works">How Customizing Works</a>
5517
<h5 class="subsubsection">Changing Resources</h5>
5519
<p>You can change <small>DDD</small> resources by three methods:
5522
<li>Use <small>DDD</small> to change the options, notably <code>Edit =>
5523
Preferences</code>. This works for the most important <small>DDD</small> resources.
5524
Be sure to save the options (see <a href="#Saving%20Options">Saving Options</a>) such that they
5525
apply to future <small>DDD</small> sessions, too.
5527
<li>You can also invoke <small>DDD</small> with an appropriate command-line option.
5528
This changes the related <small>DDD</small> resource for this particular
5529
<small>DDD</small> invocation. However, if you save the options (see <a href="#Saving%20Options">Saving Options</a>), the changed resource will also apply to future invocations.
5531
<li>Finally, you can set the appropriate resource in a file named
5532
<code>.ddd/init</code> in your home directory.
5533
See <a href="#Resource%20Index">Resource Index</a>, for a list of <small>DDD</small> resources to be set.
5538
<small class=header>
5539
Node:<a name="Saving%20Options">Saving Options</a>,
5540
Previous:<a rel="previous" accesskey="p" href="#Changing%20Resources">Changing Resources</a>,
5541
Up:<a rel="up" accesskey="u" href="#How%20Customizing%20Works">How Customizing Works</a>
5547
<h5 class="subsubsection">Saving Options</h5>
5549
<p>You can save the current option settings by setting <code>Edit =>
5550
Save Options</code>. Options are saved in a file named
5551
<code>.ddd/init</code> in your home directory when <small>DDD</small> exits. If a
5552
session <var>session</var> is active, options will be saved in
5553
<code>~/.ddd/sessions/</code><var>session</var><code>/init</code> instead.
5555
<p>The options are automatically saved when exiting <small>DDD</small>. You can turn
5556
off this feature by unsetting <code>Edit => Save Options</code>. This
5557
is tied to the following resource:
5560
<table width="100%">
5562
<td align="left"><b>saveOptionsOnExit</b><i> </i>(<i>class SaveOnExit</i>)<i>
5564
<td align="right">Resource</td>
5567
<table width="95%" align="center">
5569
If <code>on</code> (default), the current option settings are automatically saved
5570
when <small>DDD</small> exits.
5576
<small class=header>
5577
Node:<a name="Customizing%20Help">Customizing Help</a>,
5578
Next:<a rel="next" accesskey="n" href="#Customizing%20Undo">Customizing Undo</a>,
5579
Previous:<a rel="previous" accesskey="p" href="#How%20Customizing%20Works">How Customizing Works</a>,
5580
Up:<a rel="up" accesskey="u" href="#Customizing">Customizing</a>
5586
<h4 class="subsection">Customizing DDD Help</h4>
5588
<p><small>DDD</small> Help can be customized in various ways.
5591
<li><a accesskey="1" href="#Button%20tips">Button tips</a>: Turning off tips.
5592
<li><a accesskey="2" href="#Tip%20of%20the%20day">Tip of the day</a>: Turning off the tip of the day.
5593
<li><a accesskey="3" href="#Help%20Helpers">Help Helpers</a>: Helper programs invoked by Help.
5598
<small class=header>
5599
Node:<a name="Button%20tips">Button tips</a>,
5600
Next:<a rel="next" accesskey="n" href="#Tip%20of%20the%20day">Tip of the day</a>,
5601
Up:<a rel="up" accesskey="u" href="#Customizing%20Help">Customizing Help</a>
5607
<h5 class="subsubsection">Button Tips</h5>
5609
<p>Button tips are helpful for novices, but may be distracting for
5610
experienced users. You can turn off button tips via <code>Edit
5611
=> Preferences => General => Automatic display of
5612
Button Hints => as Popup Tips</code>.
5614
<p>You can also turn off the hint that is displayed in the status line.
5615
Just toggle <code>Edit => Preferences => General =>
5616
Automatic Display of Button Hints => in the Status Line</code>.
5619
<div align="center"><img src="PICS/ddd-general-prefs.jpg" alt="PICS/ddd-general-prefs.jpg"></div>
5621
<p>These are the related <small>DDD</small> resources (see <a href="#Customizing">Customizing</a>):
5624
<table width="100%">
5626
<td align="left"><b>buttonTips</b><i> </i>(<i>class Tips</i>)<i>
5628
<td align="right">Resource</td>
5631
<table width="95%" align="center">
5633
If <code>on</code> (default), enable button tips.
5638
<table width="100%">
5640
<td align="left"><b>buttonDocs</b><i> </i>(<i>class Docs</i>)<i>
5642
<td align="right">Resource</td>
5645
<table width="95%" align="center">
5647
If <code>on</code> (default), show button hints in the status line.
5653
<small class=header>
5654
Node:<a name="Tip%20of%20the%20day">Tip of the day</a>,
5655
Next:<a rel="next" accesskey="n" href="#Help%20Helpers">Help Helpers</a>,
5656
Previous:<a rel="previous" accesskey="p" href="#Button%20tips">Button tips</a>,
5657
Up:<a rel="up" accesskey="u" href="#Customizing%20Help">Customizing Help</a>
5663
<h5 class="subsubsection">Tip of the day</h5>
5665
<p>You can turn off the tip of the day by toggling <code>Edit =>
5666
Preferences => Startup => Startup Windows => Tip of
5669
<p>Here is the related <small>DDD</small> resource (see <a href="#Customizing">Customizing</a>):
5672
<table width="100%">
5674
<td align="left"><b>startupTips</b><i> </i>(<i>class StartupTips</i>)<i>
5676
<td align="right">Resource</td>
5679
<table width="95%" align="center">
5681
If <code>on</code> (default), show a tip of the day upon <small>DDD</small> startup.
5685
<p>See <a href="#Options">Options</a>, for options to set this resource upon <small>DDD</small>
5688
<p>The actual tips are controlled by these resources (see <a href="#Customizing">Customizing</a>):
5691
<table width="100%">
5693
<td align="left"><b>startupTipCount</b><i> </i>(<i>class StartupTipCount</i>)<i>
5695
<td align="right">Resource</td>
5698
<table width="95%" align="center">
5700
The number <var>n</var> of the tip of the day to be shown at startup. See
5701
also the <code>tip</code><var>n</var><code></code> resources.
5706
<table width="100%">
5708
<td align="left"><b>tip</b><i></i><var>n</var><i> </i>(<i>class Tip</i>)<i>
5710
<td align="right">Resource</td>
5713
<table width="95%" align="center">
5715
The tip of the day numbered <var>n</var> (a string).
5721
<small class=header>
5722
Node:<a name="Help%20Helpers">Help Helpers</a>,
5723
Previous:<a rel="previous" accesskey="p" href="#Tip%20of%20the%20day">Tip of the day</a>,
5724
Up:<a rel="up" accesskey="u" href="#Customizing%20Help">Customizing Help</a>
5730
<h5 class="subsubsection">Help Helpers</h5>
5732
<p><small>DDD</small> relies on a number of external commands, specified via
5733
<code>Edit => Preferences => Helpers</code>.
5736
<div align="center"><img src="PICS/ddd-helpers.jpg" alt="PICS/ddd-helpers.jpg"></div>
5738
<p>To uncompress help texts, you can define a <code>Uncompress</code> command:
5741
<table width="100%">
5743
<td align="left"><b>uncompressCommand</b><i> </i>(<i>class UncompressCommand</i>)<i>
5745
<td align="right">Resource</td>
5748
<table width="95%" align="center">
5750
The command to uncompress the built-in <small>DDD</small> manual, the
5751
<small>DDD</small> license, and the <small>DDD</small> news. Takes a compressed text
5752
from standard input and writes the uncompressed text to standard output.
5753
The default value is <code>gzip -d -c</code>; typical values include
5754
<code>zcat</code> and <code>gunzip -c</code>.
5758
<p>To view <small>WWW</small> pages, you can define a <code>Web Browser</code> command:
5761
<table width="100%">
5763
<td align="left"><b>wwwCommand</b><i> </i>(<i>class WWWCommand</i>)<i>
5765
<td align="right">Resource</td>
5768
<table width="95%" align="center">
5770
The command to invoke a <small>WWW</small> browser. The string <code>@URL@</code> is
5771
replaced by the <small>URL</small> to open. Default is to try a running
5772
Netscape first (trying <code>mozilla</code>, then <code>netscape</code>), then
5773
<code>$WWWBROWSER</code>, then to invoke a new Netscape process, then to
5774
let a running Emacs or XEmacs do the job (via <code>gnudoit</code>), then
5775
to invoke Mosaic, then to invoke Lynx in an xterm.
5777
<p>To specify <code>netscape-6.0</code> as browser, use the setting:
5779
<pre class="example"> Ddd*wwwCommand: \
5780
netscape-6.0 -remote 'openURL(@URL@)' \
5781
|| netscape-6.0 '@URL@'
5784
<p>This command first tries to connect to a running <code>netscape-6.0</code>
5785
browser; if this fails, it starts a new <code>netscape-6.0</code> process.
5789
<p>This is the default <small>WWW</small> Page shown by <code>Help => </code><small>DDD</small><code>
5790
</code><small>WWW</small><code> Page</code>:
5793
<table width="100%">
5795
<td align="left"><b>wwwPage</b><i> </i>(<i>class </i><small>WWW</small><i>Page</i>)<i>
5797
<td align="right">Resource</td>
5800
<table width="95%" align="center">
5802
The <small>DDD</small> <small>WWW</small> page. Value:
5803
<a href="http://www.gnu.org/software/ddd/">http://www.gnu.org/software/ddd/</a>
5809
<small class=header>
5810
Node:<a name="Customizing%20Undo">Customizing Undo</a>,
5811
Next:<a rel="next" accesskey="n" href="#Customizing%20Windows">Customizing Windows</a>,
5812
Previous:<a rel="previous" accesskey="p" href="#Customizing%20Help">Customizing Help</a>,
5813
Up:<a rel="up" accesskey="u" href="#Customizing">Customizing</a>
5819
<h4 class="subsection">Customizing Undo</h4>
5821
<p><small>DDD</small> Undo can be customized in various ways.
5823
<p>To set a maximum size for the undo buffer, set <code>Edit =>
5824
Preferences => General => Undo Buffer Size</code>.
5826
<p>This is related to the <code>maxUndoSize</code> resource:
5829
<table width="100%">
5831
<td align="left"><b>maxUndoSize</b><i> </i>(<i>class MaxUndoSize</i>)<i>
5833
<td align="right">Resource</td>
5836
<table width="95%" align="center">
5838
The maximum memory usage (in bytes) of the undo buffer. Useful for
5839
limiting <small>DDD</small> memory usage. A negative value means to place no
5840
limit. Default is <code>2000000</code>, or 2000 kBytes.
5844
<p>You can also limit the number of entries in the undo buffer, regardless
5845
of size (see <a href="#Customizing">Customizing</a>):
5848
<table width="100%">
5850
<td align="left"><b>maxUndoDepth</b><i> </i>(<i>class MaxUndoDepth</i>)<i>
5852
<td align="right">Resource</td>
5855
<table width="95%" align="center">
5857
The maximum number of entries in the undo buffer. This limits the
5858
number of actions that can be undone, and the number of states that
5859
can be shown in historic mode. Useful for limiting <small>DDD</small>
5860
memory usage. A negative value (default) means to place no limit.
5864
<p>To clear the undo buffer at any time, thus reducing memory usage, use
5865
<code>Edit => Preferences => General => Clear Undo
5870
<small class=header>
5871
Node:<a name="Customizing%20Windows">Customizing Windows</a>,
5872
Next:<a rel="next" accesskey="n" href="#Debugger%20Settings">Debugger Settings</a>,
5873
Previous:<a rel="previous" accesskey="p" href="#Customizing%20Undo">Customizing Undo</a>,
5874
Up:<a rel="up" accesskey="u" href="#Customizing">Customizing</a>
5880
<h4 class="subsection">Customizing the DDD Windows</h4>
5882
<p>You can customize the <small>DDD</small> Windows in various ways.
5885
<li><a accesskey="1" href="#Splash%20Screen">Splash Screen</a>: Turning off the splash screen.
5886
<li><a accesskey="2" href="#Window%20Layout">Window Layout</a>: Re-arranging windows.
5887
<li><a accesskey="3" href="#Customizing%20Fonts">Customizing Fonts</a>: Using alternate fonts.
5888
<li><a accesskey="4" href="#Toggling%20Windows">Toggling Windows</a>: Turning off windows.
5889
<li><a accesskey="5" href="#Text%20Fields">Text Fields</a>: Popdown histories.
5890
<li><a accesskey="6" href="#Icons">Icons</a>: Iconifying <small>DDD</small> windows.
5891
<li><a accesskey="7" href="#Adding%20Buttons">Adding Buttons</a>: Create your own button set.
5892
<li><a accesskey="8" href="#More%20Customizations">More Customizations</a>:
5897
<small class=header>
5898
Node:<a name="Splash%20Screen">Splash Screen</a>,
5899
Next:<a rel="next" accesskey="n" href="#Window%20Layout">Window Layout</a>,
5900
Up:<a rel="up" accesskey="u" href="#Customizing%20Windows">Customizing Windows</a>
5906
<h5 class="subsubsection">Splash Screen</h5>
5908
<p>You can turn off the <small>DDD</small> splash screen shown upon startup. Just
5909
select <code>Edit => Preferences => Startup </code><small>DDD</small><code>
5910
Splash Screen</code>.
5913
<div align="center"><img src="PICS/ddd-startup-prefs.jpg" alt="PICS/ddd-startup-prefs.jpg"></div>
5915
<p>The value applies only to the next <small>DDD</small> invocation.
5917
<p>This setting is related to the following resource:
5920
<table width="100%">
5922
<td align="left"><b>splashScreen</b><i> </i>(<i>class SplashScreen</i>)<i>
5924
<td align="right">Resource</td>
5927
<table width="95%" align="center">
5929
If <code>on</code> (default), show a <small>DDD</small> splash screen upon
5934
<p>You can also customize the appearance of the splash screen
5935
(see <a href="#Customizing">Customizing</a>):
5938
<table width="100%">
5940
<td align="left"><b>splashScreenColorKey</b><i> </i>(<i>class ColorKey</i>)<i>
5942
<td align="right">Resource</td>
5945
<table width="95%" align="center">
5947
The color key to use for the <small>DDD</small> splash screen. Possible
5951
<li><code>c</code> (default) for a color visual,
5952
<li><code>g</code> for a multi-level greyscale visual,
5953
<li><code>g4</code> for a 4-level greyscale visual, and
5954
<li><code>m</code> for a dithered monochrome visual.
5955
<li><code>best</code> chooses the best visual available for your display.
5958
<p>Please note: if <small>DDD</small> runs on a monochrome display, or if <small>DDD</small> was
5959
compiled without the <small>XPM</small> library, only the monochrome version
5960
(<code>m</code>) can be shown.
5966
<small class=header>
5967
Node:<a name="Window%20Layout">Window Layout</a>,
5968
Next:<a rel="next" accesskey="n" href="#Customizing%20Fonts">Customizing Fonts</a>,
5969
Previous:<a rel="previous" accesskey="p" href="#Splash%20Screen">Splash Screen</a>,
5970
Up:<a rel="up" accesskey="u" href="#Customizing%20Windows">Customizing Windows</a>
5976
<h5 class="subsubsection">Window Layout</h5>
5978
<p>By default, <small>DDD</small> stacks commands, source, and data in one single
5979
top-level window. To have separate top-level windows for source, data,
5980
and debugger console, set <code>Edit => Preferences =>
5981
Startup => Window Layout => Separate Windows</code>.
5984
<div align="center"><img src="PICS/ddd-separate.jpg" alt="PICS/ddd-separate.jpg"></div>
5986
<p>Here are the related <small>DDD</small> resources:
5989
<table width="100%">
5991
<td align="left"><b>separateDataWindow</b><i> </i>(<i>class Separate</i>)<i>
5993
<td align="right">Resource</td>
5996
<table width="95%" align="center">
5998
If <code>on</code>, the data window and the debugger console are realized in
5999
different top-level windows. If <code>off</code> (default), the data window
6000
is attached to the debugger console.
6005
<table width="100%">
6007
<td align="left"><b>separateSourceWindow</b><i> </i>(<i>class Separate</i>)<i>
6009
<td align="right">Resource</td>
6012
<table width="95%" align="center">
6014
If <code>on</code>, the source window and the debugger console are realized in
6015
different top-level windows. If <code>off</code> (default), the source window
6016
is attached to the debugger console.
6020
<p>By default, the <small>DDD</small> tool bars are located on top of the window.
6021
If you prefer the tool bar being located at the bottom, as in
6022
<small>DDD</small> 2.x and earlier, set <code>Edit => Preferences
6023
=> Startup => Tool Bar Appearance => Bottom</code>.
6025
<p>This is related to the <code>toolbarsAtBottom</code> resource:
6028
<table width="100%">
6030
<td align="left"><b>toolbarsAtBottom</b><i> </i>(<i>class ToolbarsAtBottom</i>)<i>
6032
<td align="right">Resource</td>
6035
<table width="95%" align="center">
6037
Whether source and data tool bars should be placed above source and
6038
data, respectively (<code>off</code>, default), or below, as in <small>DDD</small>
6039
2.x (<code>on</code>).
6043
<p>The bottom setting is only supported for separate tool bars--that is,
6044
you must either choose separate windows or configure the tool bar to
6045
have neither images nor captions (see <a href="#Customizing%20the%20Tool%20Bar">Customizing the Tool Bar</a>).
6047
<p>If you use stacked windows, you can choose whether there should be one
6048
tool bar or two tool bars. By default, <small>DDD</small> uses two tool bars
6049
if you use separate windows and disable captions and images, but you can
6050
also explicitly change the setting via this resource:
6053
<table width="100%">
6055
<td align="left"><b>commonToolBar</b><i> </i>(<i>class ToolBar</i>)<i>
6057
<td align="right">Resource</td>
6060
<table width="95%" align="center">
6062
Whether the tool bar buttons should be shown in one common tool bar at
6063
the top of the common <small>DDD</small> window (<code>on</code>, default), or
6064
whether they should be placed in two separate tool bars, one for data,
6065
and one for source operations, as in <small>DDD</small> 2.x (<code>off</code>).
6069
<p>You can also change the location of the <em>status line</em>
6070
(see <a href="#Customizing">Customizing</a>):
6073
<table width="100%">
6075
<td align="left"><b>statusAtBottom</b><i> </i>(<i>class StatusAtBottom</i>)<i>
6077
<td align="right">Resource</td>
6080
<table width="95%" align="center">
6082
If <code>on</code> (default), the status line is placed at the bottom of the
6083
<small>DDD</small> source window. If <code>off</code>, the status line is placed at
6084
the top of the <small>DDD</small> source window (as in <small>DDD</small> 1.x).
6088
<p>See <a href="#Options">Options</a>, for options to set these resources upon <small>DDD</small>
6093
<small class=header>
6094
Node:<a name="Customizing%20Fonts">Customizing Fonts</a>,
6095
Next:<a rel="next" accesskey="n" href="#Toggling%20Windows">Toggling Windows</a>,
6096
Previous:<a rel="previous" accesskey="p" href="#Window%20Layout">Window Layout</a>,
6097
Up:<a rel="up" accesskey="u" href="#Customizing%20Windows">Customizing Windows</a>
6103
<h5 class="subsubsection">Customizing Fonts</h5>
6105
<p>You can configure the basic <small>DDD</small> fonts at run-time. Each
6106
font is specified using two members:
6109
<li>The <dfn>font family</dfn> is an X font specifications, where the initial
6110
<code></code><var>foundry</var><code>-</code> specification may be omitted, as well as any
6111
specification after <var>family</var>. Thus, a pair
6112
<code></code><var>family</var><code>-</code><var>weight</var><code></code> usually suffices.
6114
<li>The <dfn>font size</dfn> is given as (resolution-independent) 1/10 points.
6117
<p>To specify fonts, select <code>Edit => Preferences =>
6121
<div align="center"><img src="PICS/ddd-font-prefs.jpg" alt="PICS/ddd-font-prefs.jpg"></div>
6123
<p>The <code>Browse</code> button opens a font selection program, where you can
6124
select fonts and attributes interactively. Clicking <code>quit</code> or
6125
<code>select</code> in the font selector causes all non-default values to be
6126
transferred to the <small>DDD</small> font preferences panel.
6128
<p>The following fonts can be set using the preferences panel:
6131
<dt><code>Default Font</code>
6132
<dd>The default <small>DDD</small> font to use for labels, menus, and buttons.
6133
Default is <code>helvetica-bold</code>.
6135
<br><dt><code>Variable Width</code>
6136
<dd>The variable width <small>DDD</small> font to use for help texts and messages.
6137
Default is <code>helvetica-medium</code>.
6139
<br><dt><code>Fixed Width</code>
6140
<dd>The fixed width <small>DDD</small> font to use for source code, the debugger
6141
console, text fields, and the execution window. Default
6142
is <code>lucidatypewriter-medium</code>.
6144
<br><dt><code>Data</code>
6145
<dd>The <small>DDD</small> font to use for data displays. Default
6146
is <code>lucidatypewriter-medium</code>.
6149
<p>Changes in this panel will take effect only in the next <small>DDD</small> session.
6150
To make it effective right now, restart <small>DDD</small> (using <code>File
6151
=> Restart </code><small>DDD</small><code></code>).
6153
<p>After having made changes in the panel, <small>DDD</small> will automatically
6154
offer you to restart itself, such that you can see the changes taking
6157
<p>The <code>Reset</code> button restores the most recently saved preferences.
6159
<p>Here are the resources related to font specifications:
6162
<table width="100%">
6164
<td align="left"><b>defaultFont</b><i> </i>(<i>class Font</i>)<i>
6166
<td align="right">Resource</td>
6169
<table width="95%" align="center">
6171
The default <small>DDD</small> font to use for labels, menus, buttons, etc.
6172
The font is specified as an X font spec, where the initial <var>Foundry</var>
6173
specification may be omitted, as well as any specification after
6176
<p>Default value is <code>helvetica-bold</code>.
6178
<p>To set the default <small>DDD</small> font to, say, <code>helvetica medium</code>,
6181
<pre class="example"> Ddd*defaultFont: helvetica-medium
6184
<p>in your <code>~/.ddd/init</code> file.
6189
<table width="100%">
6191
<td align="left"><b>defaultFontSize</b><i> </i>(<i>class FontSize</i>)<i>
6193
<td align="right">Resource</td>
6196
<table width="95%" align="center">
6198
The size of the default <small>DDD</small> font, in 1/10 points. This resource
6199
overrides any font size specification in the <code>defaultFont</code> resource
6200
(see above). The default value is <code>120</code> for a 12.0 point font.
6205
<table width="100%">
6207
<td align="left"><b>variableWidthFont</b><i> </i>(<i>class Font</i>)<i>
6209
<td align="right">Resource</td>
6212
<table width="95%" align="center">
6214
The variable width <small>DDD</small> font to use for help texts and messages.
6215
The font is specified as an X font spec, where the initial <var>Foundry</var>
6216
specification may be omitted, as well as any specification after
6219
<p>Default value is <code>helvetica-medium-r</code>.
6221
<p>To set the variable width <small>DDD</small> font family to, say,
6222
<code>times</code>, insert a line
6224
<pre class="example"> Ddd*fixedWidthFont: times-medium
6227
<p>in your <code>~/.ddd/init</code> file.
6232
<table width="100%">
6234
<td align="left"><b>variableWidthFontSize</b><i> </i>(<i>class FontSize</i>)<i>
6236
<td align="right">Resource</td>
6239
<table width="95%" align="center">
6241
The size of the variable width <small>DDD</small> font, in 1/10 points. This
6242
resource overrides any font size specification in the
6243
<code>variableWidthFont</code> resource (see above). The default value is
6244
<code>120</code> for a 12.0 point font.
6249
<table width="100%">
6251
<td align="left"><b>fixedWidthFont</b><i> </i>(<i>class Font</i>)<i>
6253
<td align="right">Resource</td>
6256
<table width="95%" align="center">
6258
The fixed width <small>DDD</small> font to use for source code, the debugger
6259
console, text fields, and the execution window. The font
6260
is specified as an X font spec, where the initial <var>Foundry</var>
6261
specification may be omitted, as well as any specification after
6264
<p>Default value is <code>lucidatypewriter-medium</code>.
6266
<p>To set the fixed width <small>DDD</small> font family to, say, <code>courier</code>,
6269
<pre class="example"> Ddd*fixedWidthFont: courier-medium
6272
<p>in your <code>~/.ddd/init</code> file.
6277
<table width="100%">
6279
<td align="left"><b>fixedWidthFontSize</b><i> </i>(<i>class FontSize</i>)<i>
6281
<td align="right">Resource</td>
6284
<table width="95%" align="center">
6286
The size of the fixed width <small>DDD</small> font, in 1/10 points. This
6287
resource overrides any font size specification in the
6288
<code>fixedWidthFont</code> resource (see above). The default value is
6289
<code>120</code> for a 12.0 point font.
6294
<table width="100%">
6296
<td align="left"><b>dataFont</b><i> </i>(<i>class Font</i>)<i>
6298
<td align="right">Resource</td>
6301
<table width="95%" align="center">
6303
The fixed width <small>DDD</small> font to use data displays. The font
6304
is specified as an X font spec, where the initial <var>Foundry</var>
6305
specification may be omitted, as well as any specification after
6308
<p>Default value is <code>lucidatypewriter-medium</code>.
6310
<p>To set the <small>DDD</small> data font family to, say, <code>courier</code>,
6313
<pre class="example"> Ddd*dataFont: courier-medium
6316
<p>in your <code>~/.ddd/init</code> file.
6321
<table width="100%">
6323
<td align="left"><b>dataFontSize</b><i> </i>(<i>class FontSize</i>)<i>
6325
<td align="right">Resource</td>
6328
<table width="95%" align="center">
6330
The size of the <small>DDD</small> data font, in 1/10 points. This
6331
resource overrides any font size specification in the
6332
<code>dataFont</code> resource (see above). The default value is
6333
<code>120</code> for a 12.0 point font.
6337
<p>As all font size resources have the same class (and by default the
6338
same value), you can easily change the default <small>DDD</small> font size
6339
to, say, 9.0 points by inserting a line
6341
<pre class="example"> Ddd*FontSize: 90
6344
<p>in your <code>~/.ddd/init</code> file.
6346
<p>Here's how to specify the command to select fonts:
6349
<table width="100%">
6351
<td align="left"><b>fontSelectCommand</b><i> </i>(<i>class FontSelectCommand</i>)<i>
6353
<td align="right">Resource</td>
6356
<table width="95%" align="center">
6358
A command to select from a list of fonts. The string <code>@FONT@</code> is
6359
replaced by the current <small>DDD</small> default font; the string
6360
<code>@TYPE@</code> is replaced by a symbolic name of the <small>DDD</small> font
6361
to edit. The program must either place the name of the selected font in
6362
the <code>PRIMARY</code> selection or print the selected font on standard
6363
output. A typical value is:
6364
<pre class="example"> Ddd*fontSelectCommand: xfontsel -print
6369
<p>See <a href="#Options">Options</a>, for options to set these resources upon <small>DDD</small>
6374
<small class=header>
6375
Node:<a name="Toggling%20Windows">Toggling Windows</a>,
6376
Next:<a rel="next" accesskey="n" href="#Text%20Fields">Text Fields</a>,
6377
Previous:<a rel="previous" accesskey="p" href="#Customizing%20Fonts">Customizing Fonts</a>,
6378
Up:<a rel="up" accesskey="u" href="#Customizing%20Windows">Customizing Windows</a>
6384
<h5 class="subsubsection">Toggling Windows</h5>
6386
<p>In the default stacked window setting, you can turn the individual
6387
<small>DDD</small> windows on and off by toggling the respective items in the
6388
<code>View</code> menu (see <a href="#View%20Menu">View Menu</a>). When using separate windows
6389
(see <a href="#Window%20Layout">Window Layout</a>), you can close the individual windows via
6390
<code>File => Close</code> or by closing them via your window manager.
6392
<p>Whether windows are opened or closed when starting <small>DDD</small> is
6393
controlled by the following resources, immediately tied to the
6394
<code>View</code> menu items:
6397
<table width="100%">
6399
<td align="left"><b>openDataWindow</b><i> </i>(<i>class Window</i>)<i>
6401
<td align="right">Resource</td>
6404
<table width="95%" align="center">
6406
If <code>off</code> (default), the data window is closed upon start-up.
6411
<table width="100%">
6413
<td align="left"><b>openDebuggerConsole</b><i> </i>(<i>class Window</i>)<i>
6415
<td align="right">Resource</td>
6418
<table width="95%" align="center">
6420
If <code>off</code>, the debugger console is closed upon start-up.
6425
<table width="100%">
6427
<td align="left"><b>openSourceWindow</b><i> </i>(<i>class Window</i>)<i>
6429
<td align="right">Resource</td>
6432
<table width="95%" align="center">
6434
If <code>off</code>, the source window is closed upon start-up.
6438
<p>See <a href="#Options">Options</a>, for options to set these resources upon <small>DDD</small>
6443
<small class=header>
6444
Node:<a name="Text%20Fields">Text Fields</a>,
6445
Next:<a rel="next" accesskey="n" href="#Icons">Icons</a>,
6446
Previous:<a rel="previous" accesskey="p" href="#Toggling%20Windows">Toggling Windows</a>,
6447
Up:<a rel="up" accesskey="u" href="#Customizing%20Windows">Customizing Windows</a>
6453
<h5 class="subsubsection">Text Fields</h5>
6455
<p>The <small>DDD</small> text fields can be customized using the following
6459
<table width="100%">
6461
<td align="left"><b>popdownHistorySize</b><i> </i>(<i>class HistorySize</i>)<i>
6463
<td align="right">Resource</td>
6466
<table width="95%" align="center">
6468
The maximum number of items to display in pop-down value histories. A
6469
value of <code>0</code> (default) means an unlimited number of values.
6474
<table width="100%">
6476
<td align="left"><b>sortPopdownHistory</b><i> </i>(<i>class SortPopdownHistory</i>)<i>
6478
<td align="right">Resource</td>
6481
<table width="95%" align="center">
6483
If <code>on</code> (default), items in the pop-down value histories are sorted
6484
alphabetically. If <code>off</code>, most recently used values will appear at
6491
<small class=header>
6492
Node:<a name="Icons">Icons</a>,
6493
Next:<a rel="next" accesskey="n" href="#Adding%20Buttons">Adding Buttons</a>,
6494
Previous:<a rel="previous" accesskey="p" href="#Text%20Fields">Text Fields</a>,
6495
Up:<a rel="up" accesskey="u" href="#Customizing%20Windows">Customizing Windows</a>
6501
<h5 class="subsubsection">Icons</h5>
6503
<p>If you frequently switch between <small>DDD</small> and other multi-window
6504
applications, you may like to set <code>Edit => Preferences
6505
=> General => Iconify all windows at once</code>. This
6506
way, all <small>DDD</small> windows are iconified and deiconified as a group.
6508
<p>This is tied to the following resource:
6511
<table width="100%">
6513
<td align="left"><b>groupIconify</b><i> </i>(<i>class GroupIconify</i>)<i>
6515
<td align="right">Resource</td>
6518
<table width="95%" align="center">
6520
If this is <code>on</code>, (un)iconifying any <small>DDD</small> window
6521
causes all other <small>DDD</small> windows to (un)iconify as well.
6522
Default is <code>off</code>, meaning that each <small>DDD</small> window can
6523
be iconified on its own.
6527
<p>If you want to keep <small>DDD</small> off your desktop during a longer
6528
computation, you may like to set <code>Edit => Preferences
6529
=> General => Uniconify when ready</code>. This way, you can
6530
iconify <small>DDD</small> while it is busy on a command (e.g. running a
6531
program); <small>DDD</small> will automatically pop up again after becoming
6532
ready (e.g. after the debugged program has stopped at a breakpoint).
6533
See <a href="#Program%20Stop">Program Stop</a>, for a discussion.
6535
<p>Here is the related resource:
6538
<table width="100%">
6540
<td align="left"><b>uniconifyWhenReady</b><i> </i>(<i>class UniconifyWhenReady</i>)<i>
6542
<td align="right">Resource</td>
6545
<table width="95%" align="center">
6547
If this is <code>on</code> (default), the <small>DDD</small> windows are uniconified
6548
automatically whenever <small>GDB</small> becomes ready. This way, you can iconify
6549
<small>DDD</small> during some longer operation and have it uniconify itself as
6550
soon as the program stops. Setting this to <code>off</code> leaves the
6551
<small>DDD</small> windows iconified.
6557
<small class=header>
6558
Node:<a name="Adding%20Buttons">Adding Buttons</a>,
6559
Next:<a rel="next" accesskey="n" href="#More%20Customizations">More Customizations</a>,
6560
Previous:<a rel="previous" accesskey="p" href="#Icons">Icons</a>,
6561
Up:<a rel="up" accesskey="u" href="#Customizing%20Windows">Customizing Windows</a>
6567
<h5 class="subsubsection">Adding Buttons</h5>
6569
<p>You can extend <small>DDD</small> with new buttons. See <a href="#Defining%20Buttons">Defining Buttons</a>,
6574
<small class=header>
6575
Node:<a name="More%20Customizations">More Customizations</a>,
6576
Previous:<a rel="previous" accesskey="p" href="#Adding%20Buttons">Adding Buttons</a>,
6577
Up:<a rel="up" accesskey="u" href="#Customizing%20Windows">Customizing Windows</a>
6583
<h5 class="subsubsection">More Customizations</h5>
6585
<p>You can change just about any label, color, keyboard mapping, etc. by
6586
changing resources from the <code>Ddd</code> application defaults file which
6587
comes with the <small>DDD</small> source distribution. Here's how it works:
6590
<li>Identify the appropriate resource in the <code>Ddd</code> file.
6592
<li>Copy the resource line to your <code>~/.ddd/init</code> file
6593
and change it at will.
6596
<p>See <a href="#Application%20Defaults">Application Defaults</a>, for details on the application-defaults
6601
<small class=header>
6602
Node:<a name="Debugger%20Settings">Debugger Settings</a>,
6603
Previous:<a rel="previous" accesskey="p" href="#Customizing%20Windows">Customizing Windows</a>,
6604
Up:<a rel="up" accesskey="u" href="#Customizing">Customizing</a>
6610
<h4 class="subsection">Debugger Settings</h4>
6612
<p>For most inferior debuggers, you can change their internal settings
6613
using <code>Edit => Settings</code>. Using the settings editor, you
6614
can determine whether C++ names are to be demangled, how many array
6615
elements are to print, and so on.
6618
<div align="center"><img src="PICS/ddd-settings.jpg" alt="PICS/ddd-settings.jpg"></div>
6620
<p>The capabilities of the settings editor depend on the capabilities of
6621
your inferior debugger. Clicking on <code>?</code> gives an an explanation on
6622
the specific item; the <small>GDB</small> documentation gives more details.
6624
<p>Use <code>Edit => Undo</code> to undo changes. Clicking on
6625
<code>Reset</code> restores the most recently saved settings.
6627
<p>Some debugger settings are insensitive and cannot be changed, because
6628
doing so would endanger <small>DDD</small> operation. See the
6629
<code>gdbInitCommands</code> and <code>dbxInitCommands</code> resources for details.
6631
<p>All debugger settings (except source and object paths) are saved with
6632
<small>DDD</small> options.
6636
<small class=header>
6637
Node:<a name="Navigating">Navigating</a>,
6638
Next:<a rel="next" accesskey="n" href="#Stopping">Stopping</a>,
6639
Previous:<a rel="previous" accesskey="p" href="#Windows">Windows</a>,
6640
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
6646
<h2 class="chapter">Navigating through the Code</h2>
6648
<p>This chapter discusses how to access code from within <small>DDD</small>.
6651
<li><a accesskey="1" href="#Compiling%20for%20Debugging">Compiling for Debugging</a>: Always use `-g' to compile.
6652
<li><a accesskey="2" href="#Opening%20Files">Opening Files</a>: How to open a program for debugging.
6653
<li><a accesskey="3" href="#Looking%20up%20Items">Looking up Items</a>: Searching files and functions.
6654
<li><a accesskey="4" href="#Customizing%20Source">Customizing Source</a>: Arranging the source window.
6659
<small class=header>
6660
Node:<a name="Compiling%20for%20Debugging">Compiling for Debugging</a>,
6661
Next:<a rel="next" accesskey="n" href="#Opening%20Files">Opening Files</a>,
6662
Up:<a rel="up" accesskey="u" href="#Navigating">Navigating</a>
6668
<h3 class="section">Compiling for Debugging</h3>
6670
<p>In order to debug a program effectively, you need to generate debugging
6671
information when you compile it. This debugging information is stored
6672
in the object file; it describes the data type of each variable or
6673
function and the correspondence between source line numbers and
6674
addresses in the executable code.<a rel="footnote" href="#fn-9"><sup>9</sup></a>
6676
<p>To request debugging information, specify the <code>-g</code> option when you
6679
<p>Many C compilers are unable to handle the <code>-g</code> and <code>-O</code>
6680
options together. Using those compilers, you cannot generate optimized
6681
executables containing debugging information.
6683
<p><small>GCC</small>, the <small>GNU</small> C compiler, supports <code>-g</code> with or without
6684
<code>-O</code>, making it possible to debug optimized code. We recommend
6685
that you <em>always</em> use <code>-g</code> whenever you compile a program.
6686
You may think your program is correct, but there is no sense in pushing
6689
<p>When you debug a program compiled with <code>-g -O</code>, remember that the
6690
optimizer is rearranging your code; the debugger shows you what is
6691
really there. Do not be too surprised when the execution path does not
6692
exactly match your source file! An extreme example: if you define a
6693
variable, but never use it, <small>DDD</small> never sees that
6694
variable--because the compiler optimizes it out of existence.
6698
<small class=header>
6699
Node:<a name="Opening%20Files">Opening Files</a>,
6700
Next:<a rel="next" accesskey="n" href="#Looking%20up%20Items">Looking up Items</a>,
6701
Previous:<a rel="previous" accesskey="p" href="#Compiling%20for%20Debugging">Compiling for Debugging</a>,
6702
Up:<a rel="up" accesskey="u" href="#Navigating">Navigating</a>
6708
<h3 class="section">Opening Files</h3>
6710
<p>If you did not invoke <small>DDD</small> specifying a program to be debugged,
6711
you can use the <code>File</code> menu to open programs, core dumps and
6715
<li><a accesskey="1" href="#Opening%20Programs">Opening Programs</a>: How to open a program for debugging.
6716
<li><a accesskey="2" href="#Opening%20Core%20Dumps">Opening Core Dumps</a>: Analyze a previous crash.
6717
<li><a accesskey="3" href="#Opening%20Source%20Files">Opening Source Files</a>: Open a source file of the program.
6718
<li><a accesskey="4" href="#Filtering%20Files">Filtering Files</a>: <small>DDD</small> only lists matching files.
6723
<small class=header>
6724
Node:<a name="Opening%20Programs">Opening Programs</a>,
6725
Next:<a rel="next" accesskey="n" href="#Opening%20Core%20Dumps">Opening Core Dumps</a>,
6726
Up:<a rel="up" accesskey="u" href="#Opening%20Files">Opening Files</a>
6732
<h4 class="subsection">Opening Programs</h4>
6734
<p>To open a program to be debugged, select <code>File => Open
6735
Program</code>.<a rel="footnote" href="#fn-10"><sup>10</sup></a>
6736
Click on <code>Open</code> to open the program
6738
<p>In <small>JDB</small>, select <code>File => Open Class</code> instead. This gives you
6739
a list of available classes to choose from.
6742
<div align="center"><img src="PICS/ddd-open.jpg" alt="PICS/ddd-open.jpg"></div>
6744
<p>To re-open a recently debugged program or class, select <code>File
6745
=> Open Recent</code> and choose a program or class from the list.
6747
<p>If no sources are found, See <a href="#Source%20Path">Source Path</a>, for specifying source
6752
<small class=header>
6753
Node:<a name="Opening%20Core%20Dumps">Opening Core Dumps</a>,
6754
Next:<a rel="next" accesskey="n" href="#Opening%20Source%20Files">Opening Source Files</a>,
6755
Previous:<a rel="previous" accesskey="p" href="#Opening%20Programs">Opening Programs</a>,
6756
Up:<a rel="up" accesskey="u" href="#Opening%20Files">Opening Files</a>
6762
<h4 class="subsection">Opening Core Dumps</h4>
6764
<p>If a previous run of the program has crashed and you want to find out
6765
why, you can have <small>DDD</small> examine its <dfn>core dump</dfn>.<a rel="footnote" href="#fn-11"><sup>11</sup></a>
6767
<p>To open a core dump for the program, select <code>File => Open
6768
Core Dump</code>. Click on <code>Open</code> to open the core dump.
6770
<p>Before <code>Open Core Dump</code>, you should first use <code>File =>
6771
Open Program</code> to specify the program that generated the core dump and to
6772
load its symbol table.
6776
<small class=header>
6777
Node:<a name="Opening%20Source%20Files">Opening Source Files</a>,
6778
Next:<a rel="next" accesskey="n" href="#Filtering%20Files">Filtering Files</a>,
6779
Previous:<a rel="previous" accesskey="p" href="#Opening%20Core%20Dumps">Opening Core Dumps</a>,
6780
Up:<a rel="up" accesskey="u" href="#Opening%20Files">Opening Files</a>
6786
<h4 class="subsection">Opening Source Files</h4>
6788
<p>To open a source file of the debugged program, select <code>File
6789
=> Open Source</code>.
6792
<li>Using <small>GDB</small>, this gives you a list of the sources used for compiling your
6795
<li>Using other inferior debuggers, this gives you a list of accessible
6796
source files, which may or may not be related to your program.
6799
<p>Click on <code>Open</code> to open the source file. See <a href="#Source%20Path">Source Path</a>, if no
6804
<small class=header>
6805
Node:<a name="Filtering%20Files">Filtering Files</a>,
6806
Previous:<a rel="previous" accesskey="p" href="#Opening%20Source%20Files">Opening Source Files</a>,
6807
Up:<a rel="up" accesskey="u" href="#Opening%20Files">Opening Files</a>
6813
<h4 class="subsection">Filtering Files</h4>
6815
<p>When presenting files to be opened, <small>DDD</small> by default filters files
6816
when opening execution files, core dumps, or source files, such that the
6817
selection shows only suitable files. This requires that <small>DDD</small>
6818
opens each file, which may take time. See <a href="#Customizing%20File%20Filtering">Customizing File Filtering</a>, if you want to turn off this feature.
6822
<small class=header>
6823
Node:<a name="Looking%20up%20Items">Looking up Items</a>,
6824
Next:<a rel="next" accesskey="n" href="#Customizing%20Source">Customizing Source</a>,
6825
Previous:<a rel="previous" accesskey="p" href="#Opening%20Files">Opening Files</a>,
6826
Up:<a rel="up" accesskey="u" href="#Navigating">Navigating</a>
6832
<h3 class="section">Looking up Items</h3>
6834
<p>As soon as the source of the debugged program is available, the
6835
<em>source window</em> displays its current source text. (see <a href="#Source%20Path">Source Path</a>, if a source text cannot be found.)
6837
<p>In the source window, you can lookup and examine function and variable
6838
definitions as well as search for arbitrary occurrences in the source
6842
<li><a accesskey="1" href="#Looking%20up%20Definitions">Looking up Definitions</a>: Jump towards a specific item.
6843
<li><a accesskey="2" href="#Textual%20Search">Textual Search</a>: Search within the current source.
6844
<li><a accesskey="3" href="#Looking%20up%20Previous%20Locations">Looking up Previous Locations</a>: Navigate back and forth.
6845
<li><a accesskey="4" href="#Source%20Path">Source Path</a>: Make <small>DDD</small> know where to search.
6850
<small class=header>
6851
Node:<a name="Looking%20up%20Definitions">Looking up Definitions</a>,
6852
Next:<a rel="next" accesskey="n" href="#Textual%20Search">Textual Search</a>,
6853
Up:<a rel="up" accesskey="u" href="#Looking%20up%20Items">Looking up Items</a>
6859
<h4 class="subsection">Looking up Definitions</h4>
6861
<p>If you wish to lookup a specific function or variable definition whose
6862
name is visible in the source text, click with <em>mouse button 1</em> on
6863
the function or variable name. The name is copied to the argument
6864
field. Change the name if desired and click on the <code>Lookup</code> button
6865
to find its definition.
6868
<div align="center"><img src="PICS/ddd-source-popup.jpg" alt="PICS/ddd-source-popup.jpg"></div>
6870
<p>As a faster alternative, you can simply press <em>mouse button 3</em> on the
6871
function name and select the <code>Lookup</code> item from the source popup
6874
<p>As an even faster alternative, you can also double-click on a function
6875
call (an identifier followed by a <code>(</code> character) to lookup the
6876
function definition.
6878
<p>If a source file is not found, See <a href="#Source%20Path">Source Path</a>, for specifying source
6883
<small class=header>
6884
Node:<a name="Textual%20Search">Textual Search</a>,
6885
Next:<a rel="next" accesskey="n" href="#Looking%20up%20Previous%20Locations">Looking up Previous Locations</a>,
6886
Previous:<a rel="previous" accesskey="p" href="#Looking%20up%20Definitions">Looking up Definitions</a>,
6887
Up:<a rel="up" accesskey="u" href="#Looking%20up%20Items">Looking up Items</a>
6893
<h4 class="subsection">Textual Search</h4>
6895
<p>If the item you wish to search is visible in the source text, click with
6896
<em>mouse button 1</em> on it. The identifier is copied to the argument
6897
field. Click on the <code>Find >></code> button to find following occurrences
6898
and on <code>Find >> => Find << ()</code> to find previous occurrences.
6900
<p>By default, <small>DDD</small> finds only complete words. To search for
6901
arbitrary substrings, change the value of the <code>Source =>
6902
Find Words Only</code> option.
6906
<small class=header>
6907
Node:<a name="Looking%20up%20Previous%20Locations">Looking up Previous Locations</a>,
6908
Next:<a rel="next" accesskey="n" href="#Source%20Path">Source Path</a>,
6909
Previous:<a rel="previous" accesskey="p" href="#Textual%20Search">Textual Search</a>,
6910
Up:<a rel="up" accesskey="u" href="#Looking%20up%20Items">Looking up Items</a>
6916
<h4 class="subsection">Looking up Previous Locations</h4>
6918
<p>After looking up a location, use <code>Edit => Undo</code> (or the
6919
<code>Undo</code> button on the command tool) to go back to the original
6920
locations. <code>Edit => Redo</code> brings you back again to the
6921
location you looked for.
6924
<div align="center"><img src="PICS/ddd-source.jpg" alt="PICS/ddd-source.jpg"></div>
6928
<small class=header>
6929
Node:<a name="Source%20Path">Source Path</a>,
6930
Previous:<a rel="previous" accesskey="p" href="#Looking%20up%20Previous%20Locations">Looking up Previous Locations</a>,
6931
Up:<a rel="up" accesskey="u" href="#Looking%20up%20Items">Looking up Items</a>
6937
<h4 class="subsection">Specifying Source Directories</h4>
6939
<p>Executable programs sometimes do not record the directories of the
6940
source files from which they were compiled, just the names. Even when
6941
they do, the directories could be moved between the compilation and your
6944
<p>Here's how <small>GDB</small> accesses source files; other inferior debuggers have
6947
<p><small>GDB</small> has a list of directories to search for source files; this is called
6948
the <dfn>source path</dfn>. Each time <small>GDB</small> wants a source file, it tries all
6949
the directories in the list, in the order they are present in the list,
6950
until it finds a file with the desired name. Note that the executable
6951
search path is <em>not</em> used for this purpose. Neither is the current
6952
working directory, unless it happens to be in the source path.
6954
<p>If <small>GDB</small> cannot find a source file in the source path, and the object
6955
program records a directory, <small>GDB</small> tries that directory too. If the
6956
source path is empty, and there is no record of the compilation
6957
directory, <small>GDB</small> looks in the current directory as a last resort.
6959
<p>To specify a source path for your inferior debugger, use <code>Edit
6960
=> Debugger Settings</code> (see <a href="#Debugger%20Settings">Debugger Settings</a> and search for
6961
appropriate entries (in <small>GDB</small>, this is <code>Search path for source
6964
<p>If <code>Debugger Settings</code> has no suitable entry, you can also specify
6965
a source path for the inferior debugger when invoking <small>DDD</small>.
6966
See <a href="#Inferior%20Debugger%20Options">Inferior Debugger Options</a>, for details.
6968
<p>When using <small>JDB</small>, you can set the <code>CLASSPATH</code> environment variable to
6969
specify directories where <small>JDB</small> (and <small>DDD</small>) should search for
6972
<p>If DDD does not find a source file for any reason, check the
6976
<li>In order to debug a program effectively, you need to generate debugging
6977
information when you compile it. Without debugging information, the
6978
inferior debugger will be unable to locate the source code. To request
6979
debugging information, specify the <code>-g</code> option when you run the
6980
compiler. See <a href="#Compiling%20for%20Debugging">Compiling for Debugging</a>, for details.
6982
<li>You may need to tell your inferior debugger where the source code files
6983
are. See <a href="#Source%20Path">Source Path</a>, for details.
6985
<p>Using <small>GDB</small>, you can also create a local <code>.gdbinit</code> file that
6986
contains a line <code>directory </code><var>path</var><code></code>. Here, <var>path</var> is a
6987
colon-separated list of source paths.
6992
<small class=header>
6993
Node:<a name="Customizing%20Source">Customizing Source</a>,
6994
Previous:<a rel="previous" accesskey="p" href="#Looking%20up%20Items">Looking up Items</a>,
6995
Up:<a rel="up" accesskey="u" href="#Navigating">Navigating</a>
7001
<h3 class="section">Customizing the Source Window</h3>
7003
<p>The source window can be customized in a number of ways, most of them
7004
accessed via <code>Edit => Preferences => Source</code>.
7007
<div align="center"><img src="PICS/ddd-source-prefs.jpg" alt="PICS/ddd-source-prefs.jpg"></div>
7010
<li><a accesskey="1" href="#Customizing%20Glyphs">Customizing Glyphs</a>:
7011
<li><a accesskey="2" href="#Customizing%20Searching">Customizing Searching</a>:
7012
<li><a accesskey="3" href="#Customizing%20Source%20Appearance">Customizing Source Appearance</a>:
7013
<li><a accesskey="4" href="#Customizing%20Source%20Scrolling">Customizing Source Scrolling</a>:
7014
<li><a accesskey="5" href="#Customizing%20Source%20Lookup">Customizing Source Lookup</a>:
7015
<li><a accesskey="6" href="#Customizing%20File%20Filtering">Customizing File Filtering</a>:
7020
<small class=header>
7021
Node:<a name="Customizing%20Glyphs">Customizing Glyphs</a>,
7022
Next:<a rel="next" accesskey="n" href="#Customizing%20Searching">Customizing Searching</a>,
7023
Up:<a rel="up" accesskey="u" href="#Customizing%20Source">Customizing Source</a>
7029
<h4 class="subsection">Customizing Glyphs</h4>
7031
<p>In the source text, the current execution position and breakpoints are
7032
indicated by symbols (<dfn>glyphs</dfn>). As an alternative, <small>DDD</small> can
7033
also indicate these positions using text characters. If you wish to
7034
disable glyphs, set <code>Edit => Preferences => Source
7035
=> Show Position and Breakpoints => as Text Characters</code>
7036
option. This also makes <small>DDD</small> run slightly faster, especially
7039
<p>This setting is tied to this resource:
7042
<table width="100%">
7044
<td align="left"><b>displayGlyphs</b><i> </i>(<i>class DisplayGlyphs</i>)<i>
7046
<td align="right">Resource</td>
7049
<table width="95%" align="center">
7051
If this is <code>on</code>, the current execution position and breakpoints are
7052
displayed as glyphs; otherwise, they are shown through characters in the
7053
text. The default is <code>on</code>. See <a href="#Options">Options</a>, for the
7054
<code>--glyphs</code> and <code>--no-glyphs</code> options.
7058
<p>You can further control glyphs using the following resources:
7061
<table width="100%">
7063
<td align="left"><b>cacheGlyphImages</b><i> </i>(<i>class CacheMachineCode</i>)<i>
7065
<td align="right">Resource</td>
7068
<table width="95%" align="center">
7070
Whether to cache (share) glyph images (<code>on</code>) or not (<code>off</code>).
7071
Caching glyph images requires less X resources, but has been reported to
7072
fail with OSF/Motif 2.1 on XFree86 servers. Default is <code>off</code> for
7073
OSF/Motif 2.1 or later on <small>GNU</small>/Linux machines, and <code>on</code>
7079
<table width="100%">
7081
<td align="left"><b>glyphUpdateDelay</b><i> </i>(<i>class GlyphUpdateDelay</i>)<i>
7083
<td align="right">Resource</td>
7086
<table width="95%" align="center">
7088
A delay (in ms) that says how much time to wait before updating glyphs
7089
while scrolling the source text. A small value results in glyphs
7090
being scrolled with the text, a large value disables glyphs while
7091
scrolling and makes scrolling faster. Default: <code>10</code>.
7096
<table width="100%">
7098
<td align="left"><b>maxGlyphs</b><i> </i>(<i>class MaxGlyphs</i>)<i>
7100
<td align="right">Resource</td>
7103
<table width="95%" align="center">
7105
The maximum number of glyphs to be displayed (default: <code>10</code>).
7106
Raising this value causes more glyphs to be allocated, possibly
7107
wasting resources that are never needed.
7113
<small class=header>
7114
Node:<a name="Customizing%20Searching">Customizing Searching</a>,
7115
Next:<a rel="next" accesskey="n" href="#Customizing%20Source%20Appearance">Customizing Source Appearance</a>,
7116
Previous:<a rel="previous" accesskey="p" href="#Customizing%20Glyphs">Customizing Glyphs</a>,
7117
Up:<a rel="up" accesskey="u" href="#Customizing%20Source">Customizing Source</a>
7123
<h4 class="subsection">Customizing Searching</h4>
7125
<p>Searching in the source text (see <a href="#Textual%20Search">Textual Search</a>) is controlled by
7126
these resources, changed via the <code>Source</code> menu:
7129
<table width="100%">
7131
<td align="left"><b>findCaseSensitive</b><i> </i>(<i>class FindCaseSensitive</i>)<i>
7133
<td align="right">Resource</td>
7136
<table width="95%" align="center">
7138
If this is <code>on</code> (default), the <code>Find</code> commands are
7139
case-sensitive. Otherwise, occurrences are found regardless of case.
7144
<table width="100%">
7146
<td align="left"><b>findWordsOnly</b><i> </i>(<i>class FindWordsOnly</i>)<i>
7148
<td align="right">Resource</td>
7151
<table width="95%" align="center">
7153
If this is <code>on</code> (default), the <code>Find</code> commands find
7154
complete words only. Otherwise, arbitrary occurrences are found.
7160
<small class=header>
7161
Node:<a name="Customizing%20Source%20Appearance">Customizing Source Appearance</a>,
7162
Next:<a rel="next" accesskey="n" href="#Customizing%20Source%20Scrolling">Customizing Source Scrolling</a>,
7163
Previous:<a rel="previous" accesskey="p" href="#Customizing%20Searching">Customizing Searching</a>,
7164
Up:<a rel="up" accesskey="u" href="#Customizing%20Source">Customizing Source</a>
7170
<h4 class="subsection">Customizing Source Appearance</h4>
7172
<p>You can have <small>DDD</small> show line numbers within the source window.
7173
Use <code>Edit => Preferences => Source => Display
7174
Source Line Numbers</code>.
7177
<table width="100%">
7179
<td align="left"><b>displayLineNumbers</b><i> </i>(<i>class DisplayLineNumbers</i>)<i>
7181
<td align="right">Resource</td>
7184
<table width="95%" align="center">
7186
If this is <code>on</code>, lines in the source text are prefixed with
7187
their respective line number. The default is <code>off</code>.
7191
<p>You can instruct <small>DDD</small> to indent the source code, leaving more
7192
room for breakpoints and execution glyphs. This is done using the
7193
<code>Edit => Preferences => Source => Source
7194
indentation</code> slider. The default value is <code>0</code> for no indentation
7198
<table width="100%">
7200
<td align="left"><b>indentSource</b><i> </i>(<i>class Indent</i>)<i>
7202
<td align="right">Resource</td>
7205
<table width="95%" align="center">
7207
The number of columns to indent the source code, such that there is
7208
enough place to display breakpoint locations. Default: <code>0</code>.
7212
<p>By default, <small>DDD</small> uses a minimum indentation for script languages.
7215
<table width="100%">
7217
<td align="left"><b>indentScript</b><i> </i>(<i>class Indent</i>)<i>
7219
<td align="right">Resource</td>
7222
<table width="95%" align="center">
7224
The minimum indentation for script languages, such as Perl, Python, and
7225
Bash. Default: <code>4</code>.
7229
<p>The maximum width of line numbers is controlled by this resource.
7232
<table width="100%">
7234
<td align="left"><b>lineNumberWidth</b><i> </i>(<i>class LineNumberWidth</i>)<i>
7236
<td align="right">Resource</td>
7239
<table width="95%" align="center">
7241
The number of columns to use for line numbers (if displaying line
7242
numbers is enabled). Line numbers wider than this value extend into
7243
the breakpoint space. Default: <code>4</code>.
7247
<p>If your source code uses a tab width different from <code>8</code> (the
7248
default), you can set an alternate width using the <code>Edit =>
7249
Preferences => Source => Tab width</code> slider.
7252
<table width="100%">
7254
<td align="left"><b>tabWidth</b><i> </i>(<i>class TabWidth</i>)<i>
7256
<td align="right">Resource</td>
7259
<table width="95%" align="center">
7261
The tab width used in the source window (default: <code>8</code>)
7267
<small class=header>
7268
Node:<a name="Customizing%20Source%20Scrolling">Customizing Source Scrolling</a>,
7269
Next:<a rel="next" accesskey="n" href="#Customizing%20Source%20Lookup">Customizing Source Lookup</a>,
7270
Previous:<a rel="previous" accesskey="p" href="#Customizing%20Source%20Appearance">Customizing Source Appearance</a>,
7271
Up:<a rel="up" accesskey="u" href="#Customizing%20Source">Customizing Source</a>
7277
<h4 class="subsection">Customizing Source Scrolling</h4>
7279
<p>These resources control when the source window is scrolled:
7282
<table width="100%">
7284
<td align="left"><b>linesAboveCursor</b><i> </i>(<i>class LinesAboveCursor</i>)<i>
7286
<td align="right">Resource</td>
7289
<table width="95%" align="center">
7291
The minimum number of lines to show before the current location.
7292
Default is <code>2</code>.
7297
<table width="100%">
7299
<td align="left"><b>linesBelowCursor</b><i> </i>(<i>class LinesBelowCursor</i>)<i>
7301
<td align="right">Resource</td>
7304
<table width="95%" align="center">
7306
The minimum number of lines to show after the current location.
7307
Default is <code>3</code>.
7313
<small class=header>
7314
Node:<a name="Customizing%20Source%20Lookup">Customizing Source Lookup</a>,
7315
Next:<a rel="next" accesskey="n" href="#Customizing%20File%20Filtering">Customizing File Filtering</a>,
7316
Previous:<a rel="previous" accesskey="p" href="#Customizing%20Source%20Scrolling">Customizing Source Scrolling</a>,
7317
Up:<a rel="up" accesskey="u" href="#Customizing%20Source">Customizing Source</a>
7323
<h4 class="subsection">Customizing Source Lookup</h4>
7325
<p>Some <small>DBX</small> and <small>XDB</small> variants do not properly handle paths in source file
7326
specifications. If you want the inferior debugger to refer to source
7327
locations by source base names only, unset the <code>Edit =>
7328
Preferences => Source => Refer to Program Sources by full
7329
path name</code> option.
7331
<p>This is related to the following resource:
7334
<table width="100%">
7336
<td align="left"><b>useSourcePath</b><i> </i>(<i>class UseSourcePath</i>)<i>
7338
<td align="right">Resource</td>
7341
<table width="95%" align="center">
7343
If this is <code>off</code> (default), the inferior debugger refers to
7344
source code locations only by their base names. If this is
7345
<code>on</code> (default), <small>DDD</small> uses the full source code paths.
7349
<p>By default, <small>DDD</small> caches source files in memory. This is
7350
convenient for remote debugging, since remote file access may be slow.
7351
If you want to reduce memory usage, unset the <code>Edit =>
7352
Preferences => Source => Cache source files</code> option.
7354
<p>This is related to the following resource:
7357
<table width="100%">
7359
<td align="left"><b>cacheSourceFiles</b><i> </i>(<i>class CacheSourceFiles</i>)<i>
7361
<td align="right">Resource</td>
7364
<table width="95%" align="center">
7366
Whether to cache source files (<code>on</code>, default) or not
7367
(<code>off</code>). Caching source files requires more memory, but makes
7368
<small>DDD</small> run faster.
7374
<small class=header>
7375
Node:<a name="Customizing%20File%20Filtering">Customizing File Filtering</a>,
7376
Previous:<a rel="previous" accesskey="p" href="#Customizing%20Source%20Lookup">Customizing Source Lookup</a>,
7377
Up:<a rel="up" accesskey="u" href="#Customizing%20Source">Customizing Source</a>
7383
<h4 class="subsection">Customizing File Filtering</h4>
7385
<p>You can control whether <small>DDD</small> should filter files to be opened.
7388
<table width="100%">
7390
<td align="left"><b>filterFiles</b><i> </i>(<i>class FilterFiles</i>)<i>
7392
<td align="right">Resource</td>
7395
<table width="95%" align="center">
7397
If this is <code>on</code> (default), <small>DDD</small> filters files when opening
7398
execution files, core dumps, or source files, such that the selection
7399
shows only suitable files. This requires that <small>DDD</small> opens each
7400
file, which may take time. If this is <code>off</code>, <small>DDD</small> always
7401
presents all available files.
7407
<small class=header>
7408
Node:<a name="Stopping">Stopping</a>,
7409
Next:<a rel="next" accesskey="n" href="#Running">Running</a>,
7410
Previous:<a rel="previous" accesskey="p" href="#Navigating">Navigating</a>,
7411
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
7417
<h2 class="chapter">Stopping the Program</h2>
7419
<p>The principal purposes of using a debugger are so that you can stop your
7420
program before it terminates; or so that, if your program runs into
7421
trouble, you can investigate and find out why.
7423
<p>Inside <small>DDD</small>, your program may stop for any of several reasons,
7424
such as a signal, a breakpoint, or reaching a new line after a
7425
<small>DDD</small> command such as <code>Step</code>. You may then examine and
7426
change variables, set new breakpoints or remove old ones, and then
7429
<p>The inferior debuggers supported by <small>DDD</small> support two mechanisms
7430
for stopping a program upon specific events:
7434
<li>A <dfn>breakpoint</dfn> makes your program stop whenever a certain point in
7435
the program is reached. For each breakpoint, you can add conditions to
7436
control in finer detail whether your program stops. Typically,
7437
breakpoints are set before running the program.
7439
<li>A <dfn>watchpoint</dfn> is a special breakpoint that stops your program when
7440
the value of an expression changes.
7444
<li><a accesskey="1" href="#Breakpoints">Breakpoints</a>: Stop at a certain point.
7445
<li><a accesskey="2" href="#Watchpoints">Watchpoints</a>: Stop at a certain condition.
7446
<li><a accesskey="3" href="#Interrupting">Interrupting</a>: Stop manually.
7447
<li><a accesskey="4" href="#Stopping%20X%20Programs">Stopping X Programs</a>: Take care of grabbed pointers!
7452
<small class=header>
7453
Node:<a name="Breakpoints">Breakpoints</a>,
7454
Next:<a rel="next" accesskey="n" href="#Watchpoints">Watchpoints</a>,
7455
Up:<a rel="up" accesskey="u" href="#Stopping">Stopping</a>
7461
<h3 class="section">Breakpoints</h3>
7464
<li><a accesskey="1" href="#Setting%20Breakpoints">Setting Breakpoints</a>:
7465
<li><a accesskey="2" href="#Deleting%20Breakpoints">Deleting Breakpoints</a>:
7466
<li><a accesskey="3" href="#Disabling%20Breakpoints">Disabling Breakpoints</a>:
7467
<li><a accesskey="4" href="#Temporary%20Breakpoints">Temporary Breakpoints</a>:
7468
<li><a accesskey="5" href="#Editing%20Breakpoint%20Properties">Editing Breakpoint Properties</a>:
7469
<li><a accesskey="6" href="#Breakpoint%20Conditions">Breakpoint Conditions</a>:
7470
<li><a accesskey="7" href="#Breakpoint%20Ignore%20Counts">Breakpoint Ignore Counts</a>:
7471
<li><a accesskey="8" href="#Breakpoint%20Commands">Breakpoint Commands</a>:
7472
<li><a accesskey="9" href="#Moving%20and%20Copying%20Breakpoints">Moving and Copying Breakpoints</a>:
7473
<li><a href="#Looking%20up%20Breakpoints">Looking up Breakpoints</a>:
7474
<li><a href="#Editing%20all%20Breakpoints">Editing all Breakpoints</a>:
7475
<li><a href="#Hardware-Assisted%20Breakpoints">Hardware-Assisted Breakpoints</a>:
7480
<small class=header>
7481
Node:<a name="Setting%20Breakpoints">Setting Breakpoints</a>,
7482
Next:<a rel="next" accesskey="n" href="#Deleting%20Breakpoints">Deleting Breakpoints</a>,
7483
Up:<a rel="up" accesskey="u" href="#Breakpoints">Breakpoints</a>
7489
<h4 class="subsection">Setting Breakpoints</h4>
7491
<p>You can set breakpoints by location or by name.
7493
<h5 class="subsubsection">Setting Breakpoints by Location</h5>
7495
<p>Breakpoints are set at a specific location in the program.
7497
<p>If the source line is visible, click with <em>mouse button 1</em> on the
7498
left of the source line and then on the <code>Break</code> button.
7500
<p>As a faster alternative, you can simply press <em>mouse button 3</em> on
7501
the left of the source line and select the <code>Set Breakpoint</code> item
7502
from the line popup menu.
7505
<div align="center"><img src="PICS/ddd-line-popup.jpg" alt="PICS/ddd-line-popup.jpg"></div>
7507
<p>As an even faster alternative, you can simply double-click on the left
7508
of the source line to set a breakpoint.
7510
<p>As yet another alternative, you can select <code>Source =>
7511
Breakpoints</code>. Click on the <code>Break</code> button and enter the location.
7513
<p>(If you find this number of alternatives confusing, be aware that
7514
<small>DDD</small> users fall into three categories, which must all be
7515
supported. <em>Novice users</em> explore <small>DDD</small> and may prefer to
7516
use one single mouse button. <em>Advanced users</em> know how to use
7517
shortcuts and prefer popup menus. <em>Experienced users</em> prefer the
7518
command line interface.)
7520
<p>Breakpoints are indicated by a plain stop sign, or as <code>#</code><var>n</var><code></code>,
7521
where <var>n</var> is the breakpoint number. A greyed out stop sign (or
7522
<code>_</code><var>n</var><code>_</code>) indicates a disabled breakpoint. A stop sign with a
7523
question mark (or <code>?</code><var>n</var><code>?</code>) indicates a conditional breakpoint
7524
or a breakpoint with an ignore count set.
7526
<p>If you set a breakpoint by mistake, use <code>Edit => Undo</code> to delete
7529
<h5 class="subsubsection">Setting Breakpoints by Name</h5>
7531
<p>If the function name is visible, click with <em>mouse button 1</em> on the
7532
function name. The function name is then copied to the argument field.
7533
Click on the <code>Break</code> button to set a breakpoint there.
7535
<p>As a shorter alternative, you can simply press <em>mouse button 3</em> on
7536
the function name and select the <code>Break at</code> item from the popup
7539
<p>As yet another alternative, you can click on <code>Break...</code> from
7540
the Breakpoint editor (invoked through <code>Source =>
7541
Breakpoints</code>) and enter the function name.
7543
<h5 class="subsubsection">Setting Regexp Breakpoints</h5>
7545
<p>Using <small>GDB</small>, you can also set a breakpoint on all functions that match a
7546
given string. <code>Break => Set Breakpoints at Regexp ()</code> sets
7547
a breakpoint on all functions whose name matches the <em>regular
7548
expression</em> given in <code>()</code>. Here are some examples:
7551
<li>To set a breakpoint on every function that starts with <code>Xm</code>, set
7552
<code>()</code> to <code>^Xm</code>.
7553
<li>To set a breakpoint on every member of class <code>Date</code>, set
7554
<code>()</code> to <code>^Date::</code>.
7555
<li>To set a breakpoint on every function whose name contains
7556
<code>_fun</code>, set <code>()</code> to <code>_fun</code>.
7557
<li>To set a breakpoint on every function that ends in <code>_test</code>,
7558
set <code>()</code> to <code>_test$</code>.
7563
<small class=header>
7564
Node:<a name="Deleting%20Breakpoints">Deleting Breakpoints</a>,
7565
Next:<a rel="next" accesskey="n" href="#Disabling%20Breakpoints">Disabling Breakpoints</a>,
7566
Previous:<a rel="previous" accesskey="p" href="#Setting%20Breakpoints">Setting Breakpoints</a>,
7567
Up:<a rel="up" accesskey="u" href="#Breakpoints">Breakpoints</a>
7573
<h4 class="subsection">Deleting Breakpoints</h4>
7575
<p>To delete a visible breakpoint, click with <em>mouse button 1</em> on the
7576
breakpoint. The breakpoint location is copied to the argument field.
7577
Click on the <code>Clear</code> button to delete all breakpoints there.
7579
<p>If the function name is visible, click with <em>mouse button 1</em> on the
7580
function name. The function name is copied to the argument field.
7581
Click on the <code>Clear</code> button to clear all breakpoints there.
7583
<p>As a faster alternative, you can simply press <em>mouse button 3</em> on
7584
the breakpoint and select the <code>Delete Breakpoint</code> item from the
7587
<p>As yet another alternative, you can select the breakpoint and click on
7588
<code>Delete</code> in the Breakpoint editor (invoked through <code>Source
7589
=> Breakpoints</code>).
7591
<p>As an even faster alternative, you can simply double-click on the
7592
breakpoint while holding <Ctrl>.
7596
<small class=header>
7597
Node:<a name="Disabling%20Breakpoints">Disabling Breakpoints</a>,
7598
Next:<a rel="next" accesskey="n" href="#Temporary%20Breakpoints">Temporary Breakpoints</a>,
7599
Previous:<a rel="previous" accesskey="p" href="#Deleting%20Breakpoints">Deleting Breakpoints</a>,
7600
Up:<a rel="up" accesskey="u" href="#Breakpoints">Breakpoints</a>
7606
<h4 class="subsection">Disabling Breakpoints</h4>
7608
<p>Rather than deleting a breakpoint or watchpoint, you might prefer to
7609
<dfn>disable</dfn> it. This makes the breakpoint inoperative as if it had
7610
been deleted, but remembers the information on the breakpoint so that
7611
you can <dfn>enable</dfn> it again later.<a rel="footnote" href="#fn-12"><sup>12</sup></a>
7613
<p>To disable a breakpoint, press <em>mouse button 3</em> on the breakpoint
7614
symbol and select the <code>Disable Breakpoint</code> item from the breakpoint
7615
popup menu. To enable it again, select <code>Enable Breakpoint</code>.
7618
<div align="center"><img src="PICS/ddd-bp-popup.jpg" alt="PICS/ddd-bp-popup.jpg"></div>
7620
<p>As an alternative, you can select the breakpoint and click on
7621
<code>Disable</code> or <code>Enable</code> in the Breakpoint editor (invoked
7622
through <code>Source => Breakpoints</code>.
7624
<p>Disabled breakpoints are indicated by a grey stop sign, or
7625
<code>_</code><var>n</var><code>_</code>, where <var>n</var> is the breakpoint number.
7627
<p>The <code>Disable Breakpoint</code> item is also accessible via the
7628
<code>Clear</code> button. Just press and hold <em>mouse button 1</em> on the
7629
button to get a popup menu.
7633
<small class=header>
7634
Node:<a name="Temporary%20Breakpoints">Temporary Breakpoints</a>,
7635
Next:<a rel="next" accesskey="n" href="#Editing%20Breakpoint%20Properties">Editing Breakpoint Properties</a>,
7636
Previous:<a rel="previous" accesskey="p" href="#Disabling%20Breakpoints">Disabling Breakpoints</a>,
7637
Up:<a rel="up" accesskey="u" href="#Breakpoints">Breakpoints</a>
7643
<h4 class="subsection">Temporary Breakpoints</h4>
7645
<p>A <dfn>temporary breakpoint</dfn> is immediately deleted as soon as it is
7646
reached.<a rel="footnote" href="#fn-13"><sup>13</sup></a>
7648
<p>To set a temporary breakpoint, press <em>mouse button 3</em> on the left
7649
of the source line and select the <code>Set Temporary Breakpoint</code> item
7650
from the popup menu.
7652
<p>As a faster alternative, you can simply double-click on the left of the
7653
source line while holding <Ctrl>.
7655
<p>Temporary breakpoints are convenient to make the program continue up to
7656
a specific location: just set the temporary breakpoint at this location
7657
and continue execution.
7659
<p>The <code>Continue Until Here</code> item from the popup menu sets a temporary
7660
breakpoint on the left of the source line and immediately continues
7661
execution. Execution stops when the temporary breakpoint is reached.
7663
<p>The <code>Set Temporary Breakpoint</code> and <code>Continue Until Here</code> items
7664
are also accessible via the <code>Break</code> button. Just press and hold
7665
<em>mouse button 1</em> on the button to get a popup menu.
7669
<small class=header>
7670
Node:<a name="Editing%20Breakpoint%20Properties">Editing Breakpoint Properties</a>,
7671
Next:<a rel="next" accesskey="n" href="#Breakpoint%20Conditions">Breakpoint Conditions</a>,
7672
Previous:<a rel="previous" accesskey="p" href="#Temporary%20Breakpoints">Temporary Breakpoints</a>,
7673
Up:<a rel="up" accesskey="u" href="#Breakpoints">Breakpoints</a>
7679
<h4 class="subsection">Editing Breakpoint Properties</h4>
7681
<p>You can change all properties of a breakpoint by pressing <em>mouse
7682
button 3</em> on the breakpoint symbol and select <code>Properties</code>
7683
from the breakpoint popup menu. This will pop up a dialog showing the
7684
current properties of the selected breakpoint.
7687
<div align="center"><img src="PICS/ddd-bp-properties.jpg" alt="PICS/ddd-bp-properties.jpg"></div>
7689
<p>As an even faster alternative, you can simply double-click on the
7693
<li>Click on <code>Lookup</code> to move the cursor to the breakpoint's
7695
<li>Click on <code>Enable</code> to enable the breakpoint.
7696
<li>Click on <code>Disable</code> to disable the breakpoint.
7697
<li>Click on <code>Temp</code> to make the breakpoint temporary.<a rel="footnote" href="#fn-14"><sup>14</sup></a>
7698
<li>Click on <code>Delete</code> to delete the breakpoint.
7703
<small class=header>
7704
Node:<a name="Breakpoint%20Conditions">Breakpoint Conditions</a>,
7705
Next:<a rel="next" accesskey="n" href="#Breakpoint%20Ignore%20Counts">Breakpoint Ignore Counts</a>,
7706
Previous:<a rel="previous" accesskey="p" href="#Editing%20Breakpoint%20Properties">Editing Breakpoint Properties</a>,
7707
Up:<a rel="up" accesskey="u" href="#Breakpoints">Breakpoints</a>
7713
<h4 class="subsection">Breakpoint Conditions</h4>
7715
<p>The simplest sort of breakpoint breaks every time your program reaches a
7716
specified place. You can also specify a <dfn>condition</dfn> for a
7717
breakpoint. A condition is just a Boolean expression in your
7718
programming language. A breakpoint with a condition evaluates the
7719
expression each time your program reaches it, and your program stops
7720
only if the condition is <em>true</em>.
7722
<p>This is the converse of using assertions for program validation; in that
7723
situation, you want to stop when the assertion is violated-that is,
7724
when the condition is false. In C, if you want to test an assertion
7725
expressed by the condition <var>assertion</var>, you should set the condition
7726
<code>!</code><var>assertion</var><code></code> on the appropriate breakpoint.
7728
<p>Break conditions can have side effects, and may even call functions in
7729
your program. This can be useful, for example, to activate functions
7730
that log program progress, or to use your own print functions to format
7731
special data structures. The effects are completely predictable unless
7732
there is another enabled breakpoint at the same address. (In that case,
7733
<small>DDD</small> might see the other breakpoint first and stop your program
7734
without checking the condition of this one.)
7736
<p>Note that breakpoint commands are usually more convenient and flexible
7737
for the purpose of performing side effects when a breakpoint is reached.
7738
See <a href="#Breakpoint%20Commands">Breakpoint Commands</a>, for details.
7742
<small class=header>
7743
Node:<a name="Breakpoint%20Ignore%20Counts">Breakpoint Ignore Counts</a>,
7744
Next:<a rel="next" accesskey="n" href="#Breakpoint%20Commands">Breakpoint Commands</a>,
7745
Previous:<a rel="previous" accesskey="p" href="#Breakpoint%20Conditions">Breakpoint Conditions</a>,
7746
Up:<a rel="up" accesskey="u" href="#Breakpoints">Breakpoints</a>
7752
<h4 class="subsection">Breakpoint Ignore Counts</h4>
7754
<p>A special case of a breakpoint condition is to stop only when the
7755
breakpoint has been reached a certain number of times. This is so
7756
useful that there is a special way to do it, using the <dfn>ignore
7757
count</dfn> of the breakpoint. Every breakpoint has an ignore count, which
7758
is an integer. Most of the time, the ignore count is zero, and
7759
therefore has no effect. But if your program reaches a breakpoint whose
7760
ignore count is positive, then instead of stopping, it just decrements
7761
the ignore count by one and continues. As a result, if the ignore count
7762
value is <var>n</var>, the breakpoint does not stop the next <var>n</var> times
7763
your program reaches it.
7765
<p>In the field <code>Ignore Count</code> of the <code>Breakpoint Properties</code>
7766
panel, you can specify the breakpoint ignore count.<a rel="footnote" href="#fn-15"><sup>15</sup></a>
7768
<p>If a breakpoint has a positive ignore count and a condition, the
7769
condition is not checked. Once the ignore count reaches zero,
7770
<small>DDD</small> resumes checking the condition.
7774
<small class=header>
7775
Node:<a name="Breakpoint%20Commands">Breakpoint Commands</a>,
7776
Next:<a rel="next" accesskey="n" href="#Moving%20and%20Copying%20Breakpoints">Moving and Copying Breakpoints</a>,
7777
Previous:<a rel="previous" accesskey="p" href="#Breakpoint%20Ignore%20Counts">Breakpoint Ignore Counts</a>,
7778
Up:<a rel="up" accesskey="u" href="#Breakpoints">Breakpoints</a>
7784
<h4 class="subsection">Breakpoint Commands</h4>
7786
<p>You can give any breakpoint (or watchpoint) a series of <small>DDD</small>
7787
commands to execute when your program stops due to that breakpoint. For
7788
example, you might want to print the values of certain expressions, or
7789
enable other breakpoints.<a rel="footnote" href="#fn-16"><sup>16</sup></a>
7791
<p>Using the <code>Commands</code> buttons of the <code>Breakpoint Properties</code>
7792
panel, you can edit commands to be executed when the breakpoint is hit.
7794
<p>To edit breakpoint commands, click on <code>Edit >></code> and enter the
7795
commands in the commands editor. When done with editing, click on
7796
<code>Edit <<</code> to close the commands editor.
7798
<p>Using <small>GDB</small>, you can also <dfn>record</dfn> a command sequence to be executed.
7799
To record a command sequence, follow these steps:
7802
<li>Click on <code>Record</code> to begin the recording of the breakpoint
7804
<li>Now interact with <small>DDD</small>. While recording, <small>DDD</small> does not
7805
execute commands, but simply records them to be executed when the
7806
breakpoint is hit. The recorded debugger commands are shown in the
7808
<li>To stop the recording, click on <code>End</code> or enter <code>end</code> at the
7809
<small>GDB</small> prompt. To <dfn>cancel</dfn> the recording, click on <code>Interrupt</code>
7810
or press <ESC>.
7811
<li>You can edit the breakpoint commands just recorded using <code>Edit >></code>.
7816
<small class=header>
7817
Node:<a name="Moving%20and%20Copying%20Breakpoints">Moving and Copying Breakpoints</a>,
7818
Next:<a rel="next" accesskey="n" href="#Looking%20up%20Breakpoints">Looking up Breakpoints</a>,
7819
Previous:<a rel="previous" accesskey="p" href="#Breakpoint%20Commands">Breakpoint Commands</a>,
7820
Up:<a rel="up" accesskey="u" href="#Breakpoints">Breakpoints</a>
7826
<h4 class="subsection">Moving and Copying Breakpoints</h4>
7828
<p>To move a breakpoint to a different location, press <em>mouse button
7829
1</em> on the stop sign and drag it to the desired location.<a rel="footnote" href="#fn-17"><sup>17</sup></a> This is equivalent to
7830
deleting the breakpoint at the old location and setting a breakpoint at
7831
the new location. The new breakpoint inherits all properties of the old
7832
breakpoint, except the breakpoint number.
7834
<p>To copy a breakpoint to a new location, press <Shift> while
7839
<small class=header>
7840
Node:<a name="Looking%20up%20Breakpoints">Looking up Breakpoints</a>,
7841
Next:<a rel="next" accesskey="n" href="#Editing%20all%20Breakpoints">Editing all Breakpoints</a>,
7842
Previous:<a rel="previous" accesskey="p" href="#Moving%20and%20Copying%20Breakpoints">Moving and Copying Breakpoints</a>,
7843
Up:<a rel="up" accesskey="u" href="#Breakpoints">Breakpoints</a>
7849
<h4 class="subsection">Looking up Breakpoints</h4>
7851
<p>If you wish to lookup a specific breakpoint, select <code>Source
7852
=> Breakpoints => Lookup</code>. After selecting a breakpoint
7853
from the list and clicking the <code>Lookup</code> button, the breakpoint
7854
location is displayed.
7856
<p>As an alternative, you can enter <code>#</code><var>n</var><code></code> in the argument field,
7857
where <var>n</var> is the breakpoint number, and click on the <code>Lookup</code>
7858
button to find its definition.
7862
<small class=header>
7863
Node:<a name="Editing%20all%20Breakpoints">Editing all Breakpoints</a>,
7864
Next:<a rel="next" accesskey="n" href="#Hardware-Assisted%20Breakpoints">Hardware-Assisted Breakpoints</a>,
7865
Previous:<a rel="previous" accesskey="p" href="#Looking%20up%20Breakpoints">Looking up Breakpoints</a>,
7866
Up:<a rel="up" accesskey="u" href="#Breakpoints">Breakpoints</a>
7872
<h4 class="subsection">Editing all Breakpoints</h4>
7874
<p>To view and edit all breakpoints at once, select <code>Source =>
7875
Breakpoints</code>. This will popup the <dfn>Breakpoint Editor</dfn> which
7876
displays the state of all breakpoints.
7879
<div align="center"><img src="PICS/ddd-edit-breakpoints.jpg" alt="PICS/ddd-edit-breakpoints.jpg"></div>
7881
<p>In the breakpoint editor, you can select individual breakpoints by
7882
clicking on them. Pressing <Ctrl> while clicking toggles the
7883
selection. To edit the properties of all selected breakpoints, click on
7888
<small class=header>
7889
Node:<a name="Hardware-Assisted%20Breakpoints">Hardware-Assisted Breakpoints</a>,
7890
Previous:<a rel="previous" accesskey="p" href="#Editing%20all%20Breakpoints">Editing all Breakpoints</a>,
7891
Up:<a rel="up" accesskey="u" href="#Breakpoints">Breakpoints</a>
7897
<h4 class="subsection">Hardware-Assisted Breakpoints</h4>
7899
<p>Using <small>GDB</small>, a few more commands related to breakpoints can be invoked
7900
through the debugger console:
7903
<dt><code>hbreak </code><var>position</var><code></code>
7904
<dd>Sets a hardware-assisted breakpoint at <var>position</var>. This command
7905
requires hardware support and some target hardware may not have this
7906
support. The main purpose of this is <small>EPROM</small>/<small>ROM</small> code
7907
debugging, so you can set a breakpoint at an instruction without
7908
changing the instruction.
7910
<br><dt><code>thbreak </code><var>pos</var><code></code>
7911
<dd>Set a temporary hardware-assisted breakpoint at <var>pos</var>.
7914
<p>See <a href="gdb.html#Setting%20breakpoints">Setting breakpoints</a>, for details.
7918
<small class=header>
7919
Node:<a name="Watchpoints">Watchpoints</a>,
7920
Next:<a rel="next" accesskey="n" href="#Interrupting">Interrupting</a>,
7921
Previous:<a rel="previous" accesskey="p" href="#Breakpoints">Breakpoints</a>,
7922
Up:<a rel="up" accesskey="u" href="#Stopping">Stopping</a>
7928
<h3 class="section">Watchpoints</h3>
7930
<p>You can make the program stop as soon as some variable value changes, or
7931
when some variable is read or written. This is called <dfn>setting a
7932
watchpoint on a variable</dfn>.<a rel="footnote" href="#fn-18"><sup>18</sup></a>
7934
<p>Watchpoints have much in common with breakpoints: in particular, you can
7935
enable and disable them. You can also set conditions, ignore counts,
7936
and commands to be executed when a watched variable changes its value.
7938
<p>Please note: on architectures without special watchpoint support,
7939
watchpoints currently make the program execute two orders of magnitude
7940
more slowly. This is so because the inferior debugger must interrupt
7941
the program after each machine instruction in order to examine whether
7942
the watched value has changed. However, this delay can be well worth it
7943
to catch errors when you have no clue what part of your program is the
7947
<li><a accesskey="1" href="#Setting%20Watchpoints">Setting Watchpoints</a>:
7948
<li><a accesskey="2" href="#Editing%20Watchpoint%20Properties">Editing Watchpoint Properties</a>:
7949
<li><a accesskey="3" href="#Editing%20all%20Watchpoints">Editing all Watchpoints</a>:
7950
<li><a accesskey="4" href="#Deleting%20Watchpoints">Deleting Watchpoints</a>:
7955
<small class=header>
7956
Node:<a name="Setting%20Watchpoints">Setting Watchpoints</a>,
7957
Next:<a rel="next" accesskey="n" href="#Editing%20Watchpoint%20Properties">Editing Watchpoint Properties</a>,
7958
Up:<a rel="up" accesskey="u" href="#Watchpoints">Watchpoints</a>
7964
<h4 class="subsection">Setting Watchpoints</h4>
7966
<p>If the variable name is visible, click with <em>mouse button 1</em> on the
7967
variable name. The variable name is copied to the argument field.
7968
Otherwise, enter the variable name in the argument field. Click on the
7969
<code>Watch</code> button to set a watchpoint there.
7971
<p>Using <small>GDB</small> and <small>JDB</small> 1.2, you can set different types of watchpoints.
7972
Click and hold <em>mouse button 1</em> on the <code>Watch</code> button to get a
7977
<small class=header>
7978
Node:<a name="Editing%20Watchpoint%20Properties">Editing Watchpoint Properties</a>,
7979
Next:<a rel="next" accesskey="n" href="#Editing%20all%20Watchpoints">Editing all Watchpoints</a>,
7980
Previous:<a rel="previous" accesskey="p" href="#Setting%20Watchpoints">Setting Watchpoints</a>,
7981
Up:<a rel="up" accesskey="u" href="#Watchpoints">Watchpoints</a>
7987
<h4 class="subsection">Editing Watchpoint Properties</h4>
7989
<p>To change the properties of a watchpoint, enter the name of the watched
7990
variable in the argument field. Click and hold <em>mouse button 1</em> on
7991
the <code>Watch</code> button and select <code>Watchpoint Properties</code>.
7993
<p>The Watchpoint Properties panel has the same functionality as the
7994
Breakpoint Properties panel (see <a href="#Editing%20Breakpoint%20Properties">Editing Breakpoint Properties</a>). As
7995
an additional feature, you can click on <code>Print</code> to see the current
7996
value of a watched variable.
8000
<small class=header>
8001
Node:<a name="Editing%20all%20Watchpoints">Editing all Watchpoints</a>,
8002
Next:<a rel="next" accesskey="n" href="#Deleting%20Watchpoints">Deleting Watchpoints</a>,
8003
Previous:<a rel="previous" accesskey="p" href="#Editing%20Watchpoint%20Properties">Editing Watchpoint Properties</a>,
8004
Up:<a rel="up" accesskey="u" href="#Watchpoints">Watchpoints</a>
8010
<h4 class="subsection">Editing all Watchpoints</h4>
8012
<p>To view and edit all watchpoints at once, select <code>Data =>
8013
Watchpoints</code>. This will popup the <dfn>Watchpoint Editor</dfn> which
8014
displays the state of all watchpoints.
8016
<p>The Watchpoint Editor has the same functionality as the Breakpoint
8017
Editor (see <a href="#Editing%20all%20Breakpoints">Editing all Breakpoints</a>). As an additional feature, you
8018
can click on <code>Print</code> to see the current value of a watched
8023
<small class=header>
8024
Node:<a name="Deleting%20Watchpoints">Deleting Watchpoints</a>,
8025
Previous:<a rel="previous" accesskey="p" href="#Editing%20all%20Watchpoints">Editing all Watchpoints</a>,
8026
Up:<a rel="up" accesskey="u" href="#Watchpoints">Watchpoints</a>
8032
<h4 class="subsection">Deleting Watchpoints</h4>
8034
<p>To delete a watchpoint, enter the name of the watched variable in the
8035
argument field and click the <code>Unwatch</code> button.
8039
<small class=header>
8040
Node:<a name="Interrupting">Interrupting</a>,
8041
Next:<a rel="next" accesskey="n" href="#Stopping%20X%20Programs">Stopping X Programs</a>,
8042
Previous:<a rel="previous" accesskey="p" href="#Watchpoints">Watchpoints</a>,
8043
Up:<a rel="up" accesskey="u" href="#Stopping">Stopping</a>
8049
<h3 class="section">Interrupting</h3>
8051
<p>If the program is already running (see <a href="#Running">Running</a>), you can interrupt
8052
it any time by clicking the <code>Interrupt</code> button or typing <ESC>
8053
in a <small>DDD</small> window.<a rel="footnote" href="#fn-19"><sup>19</sup></a> Using <small>GDB</small>, this is
8054
equivalent to sending a <code>SIGINT</code> (Interrupt) signal.
8056
<p><code>Interrupt</code> and <ESC> also interrupt a running debugger
8057
command, such as printing data.
8061
<small class=header>
8062
Node:<a name="Stopping%20X%20Programs">Stopping X Programs</a>,
8063
Previous:<a rel="previous" accesskey="p" href="#Interrupting">Interrupting</a>,
8064
Up:<a rel="up" accesskey="u" href="#Stopping">Stopping</a>
8070
<h3 class="section">Stopping X Programs</h3>
8072
<p>If your program is a modal X application, <small>DDD</small> may interrupt it
8073
while it has grabbed the mouse pointer, making further interaction
8074
impossible--your X display will be unresponsive to any user actions.
8076
<p>By default, <small>DDD</small> will check after each interaction whether the
8077
pointer is grabbed. If the pointer is grabbed, <small>DDD</small> will
8078
continue the debugged program such that you can continue to use your X
8081
<p>This is how this feature works: When the program stops, <small>DDD</small>
8082
checks for input events such as keyboard or mouse interaction. If
8083
<small>DDD</small> does not receive any event within the next 5 seconds,
8084
<small>DDD</small> checks whether the mouse pointer is grabbed by attempting to
8085
grab and ungrab it. If this attempt fails, then <small>DDD</small> considers
8086
the pointer grabbed.
8088
<p>Unfortunately, <small>DDD</small> cannot determine the program that grabbed the
8089
pointer--it may be the debugged program, or another program.
8090
Consequently, you have another 10 seconds to cancel continuation before
8091
<small>DDD</small> continues the program automatically.
8093
<p>There is one situation where this fails: if you lock your X display
8094
while <small>DDD</small> is running, then <small>DDD</small> will consider a resulting pointer
8095
grab as a result of running the program--and automatically continue
8096
execution of the debugged program. Consequently, you can turn off this
8097
feature via <code>Edit => Preferences => General =>
8098
Continue Automatically when Mouse Pointer is Frozen</code>.
8101
<li><a accesskey="1" href="#Customizing%20Grab%20Checking">Customizing Grab Checking</a>:
8106
<small class=header>
8107
Node:<a name="Customizing%20Grab%20Checking">Customizing Grab Checking</a>,
8108
Up:<a rel="up" accesskey="u" href="#Stopping%20X%20Programs">Stopping X Programs</a>
8114
<h4 class="subsection">Customizing Grab Checking</h4>
8116
<p>The grab checks are controlled by the following resources:
8119
<table width="100%">
8121
<td align="left"><b>checkGrabs</b><i> </i>(<i>class CheckGrabs</i>)<i>
8123
<td align="right">Resource</td>
8126
<table width="95%" align="center">
8128
If this is <code>on</code> (default), <small>DDD</small> will check after each
8129
interaction whether the pointer is grabbed. If this is so, <small>DDD</small>
8130
will automatically continue execution of debugged program.
8135
<table width="100%">
8137
<td align="left"><b>checkGrabDelay</b><i> </i>(<i>class CheckGrabDelay</i>)<i>
8139
<td align="right">Resource</td>
8142
<table width="95%" align="center">
8144
The time to wait (in ms) after a debugger command before checking for a
8145
grabbed pointer. If <small>DDD</small> sees some pointer event within this
8146
delay, the pointer cannot be grabbed and an explicit check for a grabbed
8147
pointer is unnecessary. Default is <code>5000</code>, or 5 seconds.
8152
<table width="100%">
8154
<td align="left"><b>grabAction</b><i> </i>(<i>class grabAction</i>)<i>
8156
<td align="right">Resource</td>
8159
<table width="95%" align="center">
8161
The action to take after having detected a grabbed mouse pointer.
8162
This is a list of newline-separated commands. Default is
8163
<code>cont</code>, meaning to continue the debuggee. Other possible
8164
choices include <code>kill</code> (killing the debuggee) or <code>quit</code>
8165
(exiting <small>DDD</small>).
8170
<table width="100%">
8172
<td align="left"><b>grabActionDelay</b><i> </i>(<i>class grabActionDelay</i>)<i>
8174
<td align="right">Resource</td>
8177
<table width="95%" align="center">
8179
The time to wait (in ms) before taking an action due to having
8180
detected a grabbed pointer. During this delay, a working dialog pops
8181
up telling the user about imminent execution of the grab action (see
8182
the <code>grabAction</code> resource, above). If the pointer grab is
8183
released within this delay, the working dialog pops down and no action
8184
is taken. This is done to exclude pointer grabs from sources other
8185
than the debugged program (including <small>DDD</small>). Default is
8186
<code>10000</code>, or 10 seconds.
8192
<small class=header>
8193
Node:<a name="Running">Running</a>,
8194
Next:<a rel="next" accesskey="n" href="#Examining%20Data">Examining Data</a>,
8195
Previous:<a rel="previous" accesskey="p" href="#Stopping">Stopping</a>,
8196
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
8202
<h2 class="chapter">Running the Program</h2>
8204
<p>You may start the debugged program with its arguments, if any, in an
8205
environment of your choice. You may redirect your program's input and
8206
output, debug an already running process, or kill a child process.
8209
<li><a accesskey="1" href="#Starting%20Program%20Execution">Starting Program Execution</a>:
8210
<li><a accesskey="2" href="#Using%20the%20Execution%20Window">Using the Execution Window</a>:
8211
<li><a accesskey="3" href="#Attaching%20to%20a%20Process">Attaching to a Process</a>:
8212
<li><a accesskey="4" href="#Program%20Stop">Program Stop</a>:
8213
<li><a accesskey="5" href="#Resuming%20Execution">Resuming Execution</a>:
8214
<li><a accesskey="6" href="#Continuing%20Somewhere%20Else">Continuing Somewhere Else</a>:
8215
<li><a accesskey="7" href="#Stack">Stack</a>:
8216
<li><a accesskey="8" href="#Undoing%20Program%20Execution">Undoing Program Execution</a>:
8217
<li><a accesskey="9" href="#Threads">Threads</a>:
8218
<li><a href="#Signals">Signals</a>:
8219
<li><a href="#Killing%20the%20Program">Killing the Program</a>:
8224
<small class=header>
8225
Node:<a name="Starting%20Program%20Execution">Starting Program Execution</a>,
8226
Next:<a rel="next" accesskey="n" href="#Using%20the%20Execution%20Window">Using the Execution Window</a>,
8227
Up:<a rel="up" accesskey="u" href="#Running">Running</a>
8233
<h3 class="section">Starting Program Execution</h3>
8235
<p>To start execution of the debugged program, select <code>Program
8236
=> Run</code>. You will then be prompted for the arguments to pass to
8237
your program. You can either select from a list of previously used
8238
arguments or enter own arguments in the text field. Afterwards, press
8239
the <code>Run</code> button to start execution with the selected arguments.
8242
<div align="center"><img src="PICS/ddd-arguments.jpg" alt="PICS/ddd-arguments.jpg"></div>
8244
<p>To run your program again, with the same arguments, select <code>Program
8245
=> Run Again</code> or press the <code>Run</code> button on the command tool.
8246
You may also enter <code>run</code>, followed by arguments at the debugger
8249
<p>When you click on <code>Run</code>, your program begins to execute
8250
immediately. See <a href="#Stopping">Stopping</a>, for a discussion of how to arrange for
8251
your program to stop. Once your program has stopped, you may call
8252
functions in your program to examine data. See <a href="#Examining%20Data">Examining Data</a>, for
8255
<p>If the modification time of your symbol file has changed since the last
8256
time <small>GDB</small> read its symbols, <small>GDB</small> discards its symbol table, and reads it
8257
again. When it does this, <small>GDB</small> and <small>DDD</small> try to retain your
8258
current debugger state, such as breakpoints.
8261
<li><a accesskey="1" href="#Arguments">Arguments</a>: Your program's arguments.
8262
<li><a accesskey="2" href="#Environment">Environment</a>: Your program's environment.
8263
<li><a accesskey="3" href="#Working%20Directory">Working Directory</a>: Your program's directory.
8264
<li><a accesskey="4" href="#Input%2fOutput">Input/Output</a>: Your program's I/O.
8269
<small class=header>
8270
Node:<a name="Arguments">Arguments</a>,
8271
Next:<a rel="next" accesskey="n" href="#Environment">Environment</a>,
8272
Up:<a rel="up" accesskey="u" href="#Starting%20Program%20Execution">Starting Program Execution</a>
8278
<h4 class="subsection">Your Program's Arguments</h4>
8280
<p>The arguments to your program are specified by the arguments of the
8281
<code>run</code> command, as composed in <code>Program => Run</code>.
8283
<p>In <small>GDB</small>, the arguments are passed to a shell, which expands wildcard
8284
characters and performs redirection of I/O, and thence to your program.
8285
Your <code>SHELL</code> environment variable (if it exists) specifies what
8286
shell <small>GDB</small> uses. If you do not define <code>SHELL</code>, <small>GDB</small> uses
8287
<code>/bin/sh</code>.
8289
<p>If you use another inferior debugger, the exact semantics on how the
8290
arguments are interpreted depend on the inferior debugger you are using.
8291
Normally, the shell is used to pass the arguments, so that you may use
8292
normal conventions (such as wildcard expansion or variable substitution)
8293
in describing the arguments.
8297
<small class=header>
8298
Node:<a name="Environment">Environment</a>,
8299
Next:<a rel="next" accesskey="n" href="#Working%20Directory">Working Directory</a>,
8300
Previous:<a rel="previous" accesskey="p" href="#Arguments">Arguments</a>,
8301
Up:<a rel="up" accesskey="u" href="#Starting%20Program%20Execution">Starting Program Execution</a>
8307
<h4 class="subsection">Your Program's Environment</h4>
8309
<p>Your program normally inherits its environment from the inferior
8310
debugger, which again inherits it from <small>DDD</small>, which again inherits
8311
it from its parent process (typically the shell or desktop).
8313
<p>In <small>GDB</small>, you can use the commands <code>set environment</code> and
8314
<code>unset environment</code> to change parts of the environment that
8315
affect your program. See <a href="gdb.html#Your%20program's%20environment">Your program's environment</a>,
8318
<p>The following environment variables are set by <small>DDD</small>:
8321
<dt><code>DDD</code>
8322
<dd>Set to a string indicating the <small>DDD</small> version. By testing
8323
whether <code>DDD</code> is set, a debuggee (or inferior debugger) can
8324
determine whether it was invoked by <small>DDD</small>.
8326
<br><dt><code>TERM</code>
8327
<dd>Set to <code>dumb</code>, the <small>DDD</small> terminal type. This is set for the
8328
inferior debugger only.<a rel="footnote" href="#fn-20"><sup>20</sup></a>
8330
<br><dt><code>TERMCAP</code>
8331
<dd>Set to `' (none), the <small>DDD</small> terminal capabilities.
8333
<br><dt><code>PAGER</code>
8334
<dd>Set to <code>cat</code>, the preferred <small>DDD</small> pager.
8337
<p>The inferior debugger, in turn, might also set or unset some environment
8342
<small class=header>
8343
Node:<a name="Working%20Directory">Working Directory</a>,
8344
Next:<a rel="next" accesskey="n" href="#Input%2fOutput">Input/Output</a>,
8345
Previous:<a rel="previous" accesskey="p" href="#Environment">Environment</a>,
8346
Up:<a rel="up" accesskey="u" href="#Starting%20Program%20Execution">Starting Program Execution</a>
8352
<h4 class="subsection">Your Program's Working Directory</h4>
8354
<p>Your program normally inherits its working directory from the inferior
8355
debugger, which again inherits it from <small>DDD</small>, which again inherits
8356
it from its parent process (typically the shell or desktop).
8358
<p>You can change the working directory of the inferior debugger via
8359
<code>File => Change Directory</code> or via the <code>cd</code> command of
8360
the inferior debugger.
8364
<small class=header>
8365
Node:<a name="Input%2fOutput">Input/Output</a>,
8366
Previous:<a rel="previous" accesskey="p" href="#Working%20Directory">Working Directory</a>,
8367
Up:<a rel="up" accesskey="u" href="#Starting%20Program%20Execution">Starting Program Execution</a>
8373
<h4 class="subsection">Your Program's Input and Output</h4>
8375
<p>By default, the program you run under <small>DDD</small> does input and output to
8376
the debugger console. Normally, you can redirect your program's input
8377
and/or output using <dfn>shell redirections</dfn> with the arguments--that
8378
is, additional arguments like <code>< </code><var>input</var><code></code> or <code>>
8379
</code><var>output</var><code></code>. You can enter these shell redirections just like other
8380
arguments (see <a href="#Arguments">Arguments</a>).
8382
<p><em>Warning:</em> While input and output redirection work, you cannot use
8383
pipes to pass the output of the program you are debugging to another
8384
program; if you attempt this, <small>DDD</small> may wind up debugging the wrong
8385
program. See <a href="#Attaching%20to%20a%20Process">Attaching to a Process</a>, for an alternative.
8387
<p>If command output is sent to the debugger console, it is impossible for
8388
<small>DDD</small> to distinguish between the output of the debugged program
8389
and the output of the inferior debugger.
8391
<p>Program output that confuses <small>DDD</small> includes:
8394
<li>Primary debugger prompts (e.g. <code>(gdb) </code>, <code>(dbx) </code> or
8395
<code>(ladebug) </code>)
8397
<li>Secondary debugger prompts (e.g. <code>></code>)
8399
<li>Confirmation prompts (e.g. <code>(y or n) </code>)
8401
<li>Prompts for more output (e.g. <code>Press RETURN to continue</code>)
8403
<li>Display output (e.g. <code>$pc = 0x1234</code>)
8406
<p>If your program outputs any of these strings, you may encounter problems
8407
with <small>DDD</small> mistaking them for debugger output. These problems can
8408
easily be avoided by redirecting program I/O, for instance to the
8409
separate execution window (see <a href="#Using%20the%20Execution%20Window">Using the Execution Window</a>).
8411
<p>If the inferior debugger changes the default <small>TTY</small> settings, for
8412
instance through a <code>stty</code> command in its initialization file,
8413
<small>DDD</small> may also become confused. The same applies to debugged programs
8414
which change the default <small>TTY</small> settings.
8416
<p>The behavior of the debugger console can be controlled using the
8420
<table width="100%">
8422
<td align="left"><b>lineBufferedConsole</b><i> </i>(<i>class LineBuffered</i>)<i>
8424
<td align="right">Resource</td>
8427
<table width="95%" align="center">
8429
If this is <code>on</code> (default), each line from the inferior debugger is
8430
output on each own, such that the final line is placed at the bottom of
8431
the debugger console. If this is <code>off</code>, all lines are output as a
8432
whole. This is faster, but results in a random position of the last
8439
<small class=header>
8440
Node:<a name="Using%20the%20Execution%20Window">Using the Execution Window</a>,
8441
Next:<a rel="next" accesskey="n" href="#Attaching%20to%20a%20Process">Attaching to a Process</a>,
8442
Previous:<a rel="previous" accesskey="p" href="#Starting%20Program%20Execution">Starting Program Execution</a>,
8443
Up:<a rel="up" accesskey="u" href="#Running">Running</a>
8449
<h3 class="section">Using the Execution Window</h3>
8451
<p>By default, input and output of your program go to the debugger console.
8452
As an alternative, <small>DDD</small> can also invoke an <dfn>execution
8453
window</dfn>, where the program terminal input and output is
8454
shown.<a rel="footnote" href="#fn-21"><sup>21</sup></a>
8456
<p>To activate the execution window, select <code>Program => Run in
8457
Execution Window</code>.
8459
<p>Using the execution window has an important side effect: The output of
8460
your program no longer gets intermixed with the output of the inferior
8461
debugger. This makes it far easier for <small>DDD</small> to parse the debugger
8462
output correctly. See <a href="#Debugger%20Communication">Debugger Communication</a>, for details on the
8463
<code>bufferGDBOutput</code> resource.
8465
<p>The execution window is opened automatically as soon as you start the
8466
debugged program. While the execution window is active, <small>DDD</small>
8467
redirects the standard input, output, and error streams of your program
8468
to the execution window. Note that the device <code>/dev/tty</code> still
8469
refers to the debugger console, <em>not</em> the execution window.
8471
<p>You can override the <small>DDD</small> stream redirection by giving alternate
8472
redirection operations as arguments. For instance, to have your program
8473
read from <var>file</var>, but to write to the execution window, invoke your
8474
program with <code>< </code><var>file</var><code></code> as argument. Likewise, to redirect the
8475
standard error output to the debugger console, use <code>2> /dev/tty</code>
8476
(assuming the inferior debugger and/or your <small>UNIX</small> shell support standard
8480
<li><a accesskey="1" href="#Customizing%20the%20Execution%20Window">Customizing the Execution Window</a>:
8485
<small class=header>
8486
Node:<a name="Customizing%20the%20Execution%20Window">Customizing the Execution Window</a>,
8487
Up:<a rel="up" accesskey="u" href="#Using%20the%20Execution%20Window">Using the Execution Window</a>
8493
<h4 class="subsection">Customizing the Execution Window</h4>
8495
<p>You can customize the <small>DDD</small> execution window and use a different
8496
<small>TTY</small> command. The command is set by <code>Edit =>
8497
Preferences => Helpers => Execution Window</code>:
8500
<table width="100%">
8502
<td align="left"><b>termCommand</b><i> </i>(<i>class TermCommand</i>)<i>
8504
<td align="right">Resource</td>
8507
<table width="95%" align="center">
8509
The command to invoke for the execution window--a <small>TTY</small>
8510
emulator that shows the input/output of the debugged program. A Bourne
8511
shell command to run in the separate <small>TTY</small> is appended to this
8512
string. The string <code>@FONT@</code> is replaced by the name of the fixed
8513
width font used by <small>DDD</small>. A simple value is
8515
<pre class="example"> Ddd*termCommand: xterm -fn @FONT@ -e /bin/sh -c
8520
<p>You can also set the terminal type:
8523
<table width="100%">
8525
<td align="left"><b>termType</b><i> </i>(<i>class TermType</i>)<i>
8527
<td align="right">Resource</td>
8530
<table width="95%" align="center">
8532
The terminal type provided by the <code>termCommand</code> resource--that is,
8533
the value of the <code>TERM</code> environment variable to be passed to the
8534
debugged program. Default: <code>xterm</code>.
8538
<p>Whether the execution window is active or not, as set by <code>Program
8539
=> Run in Execution Window</code>, is saved using this resource:
8542
<table width="100%">
8544
<td align="left"><b>separateExecWindow</b><i> </i>(<i>class Separate</i>)<i>
8546
<td align="right">Resource</td>
8549
<table width="95%" align="center">
8551
If <code>on</code>, the debugged program is executed in a separate
8552
execution window. If <code>off</code> (default), the debugged program is
8553
executed in the console window.
8559
<small class=header>
8560
Node:<a name="Attaching%20to%20a%20Process">Attaching to a Process</a>,
8561
Next:<a rel="next" accesskey="n" href="#Program%20Stop">Program Stop</a>,
8562
Previous:<a rel="previous" accesskey="p" href="#Using%20the%20Execution%20Window">Using the Execution Window</a>,
8563
Up:<a rel="up" accesskey="u" href="#Running">Running</a>
8569
<h3 class="section">Attaching to a Running Process</h3>
8571
<p>If the debugged program is already running in some process, you can
8572
<dfn>attach</dfn> to this process (instead of starting a new one with
8573
<code>Run</code>).<a rel="footnote" href="#fn-22"><sup>22</sup></a>
8575
<p>To attach <small>DDD</small> to a process, select <code>File => Attach
8576
to Process</code>. You can now choose from a list of processes. Then, press
8577
the <code>Attach</code> button to attach to the specified process.
8580
<div align="center"><img src="PICS/ddd-attach.jpg" alt="PICS/ddd-attach.jpg"></div>
8582
<p>The first thing <small>DDD</small> does after arranging to debug the specified
8583
process is to stop it. You can examine and modify an attached process
8584
with all the <small>DDD</small> commands that are ordinarily available when you
8585
start processes with <code>Run</code>. You can insert breakpoints; you can
8586
step and continue; you can modify storage. If you would rather the
8587
process continue running, you may use <code>Continue</code> after attaching
8588
<small>DDD</small> to the process.
8590
<p>When using <code>Attach to Process</code>, you should first use <code>Open
8591
Program</code> to specify the program running in the process and load its
8594
<p>When you have finished debugging the attached process, you can use the
8595
<code>File => Detach Process</code> to release it from <small>DDD</small>
8596
control. Detaching the process continues its execution. After
8597
<code>Detach Process</code>, that process and <small>DDD</small> become
8598
completely independent once more, and you are ready to attach another
8599
process or start one with <code>Run</code>.
8601
<p>You can customize the list of processes shown by defining an alternate
8602
command to list processes. See <code>Edit => Preferences
8603
=> Helpers => List Processes</code>; See <a href="#Customizing%20Attaching%20to%20Processes">Customizing Attaching to Processes</a>, for details.
8606
<li><a accesskey="1" href="#Customizing%20Attaching%20to%20Processes">Customizing Attaching to Processes</a>:
8611
<small class=header>
8612
Node:<a name="Customizing%20Attaching%20to%20Processes">Customizing Attaching to Processes</a>,
8613
Up:<a rel="up" accesskey="u" href="#Attaching%20to%20a%20Process">Attaching to a Process</a>
8619
<h4 class="subsection">Customizing Attaching to Processes</h4>
8621
<p>When attaching to a process (see <a href="#Attaching%20to%20a%20Process">Attaching to a Process</a>),
8622
<small>DDD</small> uses a <code>ps</code> command to get the list of processes. This
8623
command is defined by the <code>psCommand</code> resource.
8626
<table width="100%">
8628
<td align="left"><b>psCommand</b><i> </i>(<i>class PsCommand</i>)<i>
8630
<td align="right">Resource</td>
8633
<table width="95%" align="center">
8635
The command to get a list of processes. Usually <code>ps</code>. Depending
8636
on your system, useful alternate values include <code>ps -ef</code> and
8637
<code>ps ux</code>. The first line of the output must either contain a
8638
<code>PID</code> title, or each line must begin with a process ID.
8640
<p>Note that the output of this command is filtered by <small>DDD</small>; a
8641
process is only shown if it can be attached to. The <small>DDD</small>
8642
process itself as well as the process of the inferior debugger are
8649
<small class=header>
8650
Node:<a name="Program%20Stop">Program Stop</a>,
8651
Next:<a rel="next" accesskey="n" href="#Resuming%20Execution">Resuming Execution</a>,
8652
Previous:<a rel="previous" accesskey="p" href="#Attaching%20to%20a%20Process">Attaching to a Process</a>,
8653
Up:<a rel="up" accesskey="u" href="#Running">Running</a>
8659
<h3 class="section">Program Stops</h3>
8661
<p>After the program has been started, it runs until one of the following
8665
<li>A breakpoint is reached (see <a href="#Breakpoints">Breakpoints</a>).
8667
<li>A watched value changes (see <a href="#Watchpoints">Watchpoints</a>).
8669
<li>The program is interrupted (see <a href="#Interrupting">Interrupting</a>).
8671
<li>A signal is received (see <a href="#Signals">Signals</a>).
8673
<li>Execution completes.
8676
<p><small>DDD</small> shows the current program status in the debugger console.
8677
The current execution position is highlighted by an arrow.
8679
<p>If <code>Edit => Preferences => General =>
8680
Uniconify When Ready</code> is set, <small>DDD</small> automatically deiconifies
8681
itself when the program stops. This way, you can iconify <small>DDD</small>
8682
during a lengthy computation and have it uniconify as soon as the
8687
<small class=header>
8688
Node:<a name="Resuming%20Execution">Resuming Execution</a>,
8689
Next:<a rel="next" accesskey="n" href="#Continuing%20Somewhere%20Else">Continuing Somewhere Else</a>,
8690
Previous:<a rel="previous" accesskey="p" href="#Program%20Stop">Program Stop</a>,
8691
Up:<a rel="up" accesskey="u" href="#Running">Running</a>
8697
<h3 class="section">Resuming Execution</h3>
8699
<h4 class="subsection">Continuing</h4>
8701
<p>To resume execution, at the current execution position, click on the
8702
<code>Continue</code> button. Any breakpoints set at the current execution
8703
position are bypassed.
8705
<h4 class="subsection">Stepping one Line</h4>
8707
<p>To execute just one source line, click on the <code>Step</code> button. The
8708
program is executed until control reaches a different source line, which
8709
may be in a different function. Then, the program is stopped and
8710
control returns to <small>DDD</small>.
8712
<p><em>Warning</em>: If you use the <code>Step</code> button while control is
8713
within a function that was compiled without debugging information,
8714
execution proceeds until control reaches a function that does have
8715
debugging information. Likewise, it will not step into a function which
8716
is compiled without debugging information. To step through functions
8717
without debugging information, use the <code>Stepi</code> button
8718
(see <a href="#Machine%20Code%20Execution">Machine Code Execution</a>).
8720
<p>In <small>GDB</small>, the <code>Step</code> button only stops at the first instruction of a
8721
source line. This prevents the multiple stops that used to occur in
8722
switch statements, for loops, etc. <code>Step</code> continues to stop if a
8723
function that has debugging information is called within the line.
8725
<p>Also, the <code>Step</code> in <small>GDB</small> only enters a subroutine if there is line
8726
number information for the subroutine. Otherwise it acts like the
8727
<code>Next</code> button.
8729
<h4 class="subsection">Continuing to the Next Line</h4>
8731
<p>To continue to the next line in the current function, click on the
8732
<code>Next</code> button. This is similar to <code>Step</code>, but any function
8733
calls appearing within the line of code are executed without stopping.
8735
<p>Execution stops when control reaches a different line of code at the
8736
original stack level that was executing when you clicked on <code>Next</code>.
8738
<h4 class="subsection">Continuing Until Here</h4>
8740
<p>To continue running until a specific location is reached, use the
8741
<code>Continue Until Here</code> facility from the line popup menu.
8742
See <a href="#Temporary%20Breakpoints">Temporary Breakpoints</a>, for a discussion.
8744
<h4 class="subsection">Continuing Until a Greater Line is Reached</h4>
8746
<p>To continue until a greater line in the current function is reached,
8747
click on the <code>Until</code> button. This is useful to avoid single
8748
stepping through a loop more than once.
8750
<p><code>Until</code> is like <code>Next</code>, except that when <code>Until</code>
8751
encounters a jump, it automatically continues execution until the
8752
program counter is greater than the address of the jump.
8754
<p>This means that when you reach the end of a loop after single stepping
8755
though it, <code>until</code> makes your program continue execution until it
8756
exits the loop. In contrast, clicking on <code>Next</code> at the end of a
8757
loop simply steps back to the beginning of the loop, which forces you to
8758
step through the next iteration.
8760
<p><code>Until</code> always stops your program if it attempts to exit the
8761
current stack frame.
8763
<p><code>Until</code> works by means of single instruction stepping, and hence is
8764
slower than continuing until a breakpoint is reached.
8766
<h4 class="subsection">Continuing Until Function Returns</h4>
8768
<p>To continue running until the current function returns, use the
8769
<code>Finish</code> button. The returned value (if any) is printed.
8773
<small class=header>
8774
Node:<a name="Continuing%20Somewhere%20Else">Continuing Somewhere Else</a>,
8775
Next:<a rel="next" accesskey="n" href="#Stack">Stack</a>,
8776
Previous:<a rel="previous" accesskey="p" href="#Resuming%20Execution">Resuming Execution</a>,
8777
Up:<a rel="up" accesskey="u" href="#Running">Running</a>
8783
<h3 class="section">Continuing at a Different Address</h3>
8785
<p>Ordinarily, when you continue your program, you do so at the place where
8786
it stopped. You can instead continue at an address of your own
8789
<p>The most common occasion to use this feature is to back up--perhaps
8790
with more breakpoints set-over a portion of a program that has already
8791
executed, in order to examine its execution in more detail.
8793
<p>To set the execution position to the current location, use <code>Set
8794
Execution Position</code> from the breakpoint popup menu. This item is also
8795
accessible by pressing and holding the <code>Break/Clear</code>
8796
button.<a rel="footnote" href="#fn-23"><sup>23</sup></a>
8798
<p>As a quicker alternative, you can also press <em>mouse button 1</em> on
8799
the arrow and drag it to a different location.<a rel="footnote" href="#fn-24"><sup>24</sup></a>
8802
<div align="center"><img src="PICS/ddd-drag.jpg" alt="PICS/ddd-drag.jpg"></div>
8804
<p>Moving the execution position does not change the current stack frame,
8805
or the stack pointer, or the contents of any memory location or any
8806
register other than the program counter.
8808
<p>Some inferior debuggers (notably <small>GDB</small>) allow you to set the new execution
8809
position into a different function from the one currently executing.
8810
This may lead to bizarre results if the two functions expect different
8811
patterns of arguments or of local variables. For this reason, moving
8812
the execution position requests confirmation if the specified line is
8813
not in the function currently executing.
8815
<p>After moving the execution position, click on <code>Continue</code> to resume
8820
<small class=header>
8821
Node:<a name="Stack">Stack</a>,
8822
Next:<a rel="next" accesskey="n" href="#Undoing%20Program%20Execution">Undoing Program Execution</a>,
8823
Previous:<a rel="previous" accesskey="p" href="#Continuing%20Somewhere%20Else">Continuing Somewhere Else</a>,
8824
Up:<a rel="up" accesskey="u" href="#Running">Running</a>
8830
<h3 class="section">Examining the Stack</h3>
8832
<p>When your program has stopped, the first thing you need to know is
8833
where it stopped and how it got there.
8835
<p>Each time your program performs a function call, information about the
8836
call is generated. That information includes the location of the call
8837
in your program, the arguments of the call, and the local variables of
8838
the function being called. The information is saved in a block of data
8839
called a <dfn>stack frame</dfn>. The stack frames are allocated in a region
8840
of memory called the <dfn>call stack</dfn>.
8842
<p>When your program stops, the <small>DDD</small> commands for examining the
8843
stack allow you to see all of this information.
8845
<p>One of the stack frames is <dfn>selected</dfn> by <small>DDD</small> and many
8846
<small>DDD</small> commands refer implicitly to the selected frame. In
8847
particular, whenever you ask <small>DDD</small> for the value of a variable in
8848
your program, the value is found in the selected frame. There are
8849
special <small>DDD</small> commands to select whichever frame you are
8853
<li><a accesskey="1" href="#Frames">Frames</a>: Callers and callees.
8854
<li><a accesskey="2" href="#Backtraces">Backtraces</a>: And you may ask yourself, `how did I get here?'
8855
<li><a accesskey="3" href="#Selecting%20a%20frame">Selecting a frame</a>: Moving up and down.
8860
<small class=header>
8861
Node:<a name="Frames">Frames</a>,
8862
Next:<a rel="next" accesskey="n" href="#Backtraces">Backtraces</a>,
8863
Up:<a rel="up" accesskey="u" href="#Stack">Stack</a>
8869
<h4 class="subsection">Stack Frames</h4>
8871
<p>The call stack is divided up into contiguous pieces called <dfn>stack
8872
frames</dfn>, or <dfn>frames</dfn> for short; each frame is the data associated
8873
with one call to one function. The frame contains the arguments given
8874
to the function, the function's local variables, and the address at
8875
which the function is executing.
8877
<p>When your program is started, the stack has only one frame, that of the
8878
function <code>main</code>. This is called the <dfn>initial</dfn> frame or the
8879
<dfn>outermost</dfn> frame. Each time a function is called, a new frame is
8880
made. Each time a function returns, the frame for that function invocation
8881
is eliminated. If a function is recursive, there can be many frames for
8882
the same function. The frame for the function in which execution is
8883
actually occurring is called the <dfn>innermost</dfn> frame. This is the most
8884
recently created of all the stack frames that still exist.
8886
<p>Inside your program, stack frames are identified by their addresses. A
8887
stack frame consists of many bytes, each of which has its own address; each
8888
kind of computer has a convention for choosing one byte whose
8889
address serves as the address of the frame. Usually this address is kept
8890
in a register called the <dfn>frame pointer register</dfn> while execution is
8891
going on in that frame.
8893
<p><small>GDB</small> assigns numbers to all existing stack frames, starting with zero for
8894
the innermost frame, one for the frame that called it, and so on upward.
8895
These numbers do not really exist in your program; they are assigned by
8896
<small>GDB</small> to give you a way of designating stack frames in <small>GDB</small> commands.
8900
<small class=header>
8901
Node:<a name="Backtraces">Backtraces</a>,
8902
Next:<a rel="next" accesskey="n" href="#Selecting%20a%20frame">Selecting a frame</a>,
8903
Previous:<a rel="previous" accesskey="p" href="#Frames">Frames</a>,
8904
Up:<a rel="up" accesskey="u" href="#Stack">Stack</a>
8910
<h4 class="subsection">Backtraces</h4>
8912
<p><small>DDD</small> provides a <dfn>backtrace window</dfn> showing a summary of how
8913
your program got where it is. It shows one line per frame, for many
8914
frames, starting with the currently executing frame (frame zero),
8915
followed by its caller (frame one), and on up the stack.
8917
<p>To enable the backtrace window, select <code>Status =>
8921
<div align="center"><img src="PICS/ddd-backtrace.jpg" alt="PICS/ddd-backtrace.jpg"></div>
8923
<p>Using <small>GDB</small>, each line in the backtrace shows the frame number and the
8924
function name. The program counter value is also shown--unless you use
8925
the <small>GDB</small> command <code>set print address off</code>. The backtrace also shows
8926
the source file name and line number, as well as the arguments to the
8927
function. The program counter value is omitted if it is at the
8928
beginning of the code for that line number.
8932
<small class=header>
8933
Node:<a name="Selecting%20a%20frame">Selecting a frame</a>,
8934
Previous:<a rel="previous" accesskey="p" href="#Backtraces">Backtraces</a>,
8935
Up:<a rel="up" accesskey="u" href="#Stack">Stack</a>
8941
<h4 class="subsection">Selecting a Frame</h4>
8943
<p>Most commands for examining the stack and other data in your program
8944
work on whichever stack frame is selected at the moment. Here are the
8945
commands for selecting a stack frame.<a rel="footnote" href="#fn-25"><sup>25</sup></a>
8947
<p>In the backtrace window, you can <em>select</em> an arbitrary frame to
8948
move from one stack frame to another. Just click on the desired frame.
8950
<p>The <code>Up</code> button selects the function that called the current
8951
one--that is, it moves one frame up.
8953
<p>The <code>Down</code> button selects the function that was called by
8954
the current one--that is, it moves one frame down.
8956
<p>You can also directly type the <code>up</code> and <code>down</code> commands at
8957
the debugger prompt. Typing <Ctrl+Up> and <Ctrl+Down>,
8958
respectively, will also move you through the stack.
8960
<p><code>Up</code> and <code>Down</code> actions can be undone via <code>Edit =>
8965
<small class=header>
8966
Node:<a name="Undoing%20Program%20Execution">Undoing Program Execution</a>,
8967
Next:<a rel="next" accesskey="n" href="#Threads">Threads</a>,
8968
Previous:<a rel="previous" accesskey="p" href="#Stack">Stack</a>,
8969
Up:<a rel="up" accesskey="u" href="#Running">Running</a>
8975
<h3 class="section">"Undoing" Program Execution</h3>
8977
<p>If you take a look at the <code>Edit => Undo</code> menu item after an
8978
execution command, you'll find that <small>DDD</small> offers you to undo
8979
execution commands just as other commands. Does this mean that
8980
<small>DDD</small> allows you to go backwards in time, undoing program
8981
execution as well as undoing any side-effects of your program?
8983
<p>Sorry--we must disappoint you. <small>DDD</small> cannot undo what your
8984
program did. (After a little bit of thought, you'll find that this
8985
would be impossible in general.) However, <small>DDD</small> can do something
8986
different: it can show <em>previously recorded states</em> of your
8989
<p>After "undoing" an execution command (via
8990
<code>Edit => Undo</code>, or the <code>Undo</code> button), the execution
8991
position moves back to the earlier position and displayed variables
8992
take their earlier values. Your program state is in fact unchanged,
8993
but <small>DDD</small> gives you a <em>view</em> on the earlier state as recorded by
8996
<p>In this so-called <dfn>historic mode</dfn>, most normal <small>DDD</small>
8997
commands that would query further information from the program are
8998
disabled, since the debugger cannot be queried for the earlier state.
8999
However, you can examine the current execution position, or the
9000
displayed variables. Using <code>Undo</code> and <code>Redo</code>, you can
9001
move back and forward in time to examine how your program got into the
9004
<p>To let you know that you are operating in historic mode, the execution
9005
arrow gets a dashed-line appearance (indicating a past position);
9006
variable displays also come with dashed lines. Furthermore, the
9007
status line informs you that you are seeing an earlier program state.
9009
<p>Here's how historic mode works: each time your program stops,
9010
<small>DDD</small> collects the current execution position and the values of
9011
displayed variables. Backtrace, thread, and register information is
9012
also collected if the corresponding dialogs are open. When
9013
"undoing" an execution command, <small>DDD</small> updates its view
9014
from this collected state instead of querying the program.
9016
<p>If you want to collect this information without interrupting your
9017
program--within a loop, for instance--you can place a breakpoint with
9018
an associated <code>cont</code> command (see <a href="#Breakpoint%20Commands">Breakpoint Commands</a>).
9019
When the breakpoint is hit, <small>DDD</small> will stop, collect the data, and
9020
execute the <code>cont</code> command, resuming execution. Using a later
9021
<code>Undo</code>, you can step back and look at every single loop iteration.
9023
<p>To leave historic mode, you can use <code>Redo</code> until you are back in
9024
the current program state. However, any <small>DDD</small> command that
9025
refers to program state will also leave historic mode immediately by
9026
applying to the current program state instead. For instance,
9027
<code>Up</code> leaves historic mode immediately and selects an alternate
9028
frame in the restored current program state.
9030
<p>If you want to see the history of a specific variable, as recorded
9031
during program stops, you can enter the <small>DDD</small> command
9033
<pre class="example"> graph history <var>name</var>
9036
<p>This returns a list of all previously recorded values of the variable
9037
<var>name</var>, using array syntax. Note that <var>name</var> must have been
9038
displayed at earlier program stops in order to record values.
9042
<small class=header>
9043
Node:<a name="Threads">Threads</a>,
9044
Next:<a rel="next" accesskey="n" href="#Signals">Signals</a>,
9045
Previous:<a rel="previous" accesskey="p" href="#Undoing%20Program%20Execution">Undoing Program Execution</a>,
9046
Up:<a rel="up" accesskey="u" href="#Running">Running</a>
9052
<h3 class="section">Examining Threads</h3>
9054
<p>In some operating systems, a single program may have more than one
9055
<em>thread</em> of execution. The precise semantics of threads differ
9056
from one operating system to another, but in general the threads of a
9057
single program are akin to multiple processes--except that they share
9058
one address space (that is, they can all examine and modify the same
9059
variables). On the other hand, each thread has its own registers and
9060
execution stack, and perhaps private memory.
9062
<p>For debugging purposes, <small>DDD</small> lets you display the list of threads
9063
currently active in your program and lets you select the <em>current
9064
thread</em>--the thread which is the focus of debugging. <small>DDD</small> shows
9065
all program information from the perspective of the current
9066
thread.<a rel="footnote" href="#fn-26"><sup>26</sup></a>
9069
<div align="center"><img src="PICS/ddd-threads.jpg" alt="PICS/ddd-threads.jpg"></div>
9071
<p>To view all currently active threads in your program, select
9072
<code>Status => Threads</code>. The current thread is highlighted.
9073
Select any thread to make it the current thread.
9075
<p>Using <small>JDB</small>, additional functionality is available:
9078
<li>Select a <em>thread group</em> to switch between viewing all threads and
9079
the threads of the selected thread group;
9080
<li>Click on <code>Suspend</code> to suspend execution of the selected threads;
9081
<li>Click on <code>Resume</code> to resume execution of the selected threads.
9084
<p>For more information on threads, see the <small>JDB</small> and <small>GDB</small> documentation
9085
(see <a href="gdb.html#Threads">Debugging programs with multiple threads</a>).
9089
<small class=header>
9090
Node:<a name="Signals">Signals</a>,
9091
Next:<a rel="next" accesskey="n" href="#Killing%20the%20Program">Killing the Program</a>,
9092
Previous:<a rel="previous" accesskey="p" href="#Threads">Threads</a>,
9093
Up:<a rel="up" accesskey="u" href="#Running">Running</a>
9099
<h3 class="section">Handling Signals</h3>
9101
<p>A signal is an asynchronous event that can happen in a program. The
9102
operating system defines the possible kinds of signals, and gives each
9103
kind a name and a number. For example, in <small>UNIX</small>, <code>SIGINT</code> is the
9104
signal a program gets when you type an interrupt; <code>SIGSEGV</code> is
9105
the signal a program gets from referencing a place in memory far away
9106
from all the areas in use; <code>SIGALRM</code> occurs when the alarm clock
9107
timer goes off (which happens only if your program has requested an
9110
<p>Some signals, including <code>SIGALRM</code>, are a normal part of the
9111
functioning of your program. Others, such as <code>SIGSEGV</code>, indicate
9112
errors; these signals are <em>fatal</em> (kill your program immediately)
9113
if the program has not specified in advance some other way to handle the
9114
signal. <code>SIGINT</code> does not indicate an error in your program, but
9115
it is normally fatal so it can carry out the purpose of the interrupt:
9116
to kill the program.
9118
<p><small>GDB</small> has the ability to detect any occurrence of a signal in your
9119
program. You can tell <small>GDB</small> in advance what to do for each kind of
9122
<p>Normally, <small>DDD</small> is set up to ignore non-erroneous signals like
9123
<code>SIGALRM</code> (so as not to interfere with their role in the
9124
functioning of your program) but to stop your program immediately
9125
whenever an error signal happens. In <small>DDD</small>, you can view and edit
9126
these settings via <code>Status => Signals</code>.
9128
<p><code>Status => Signals</code> pops up a panel showing all the kinds of
9129
signals and how <small>GDB</small> has been told to handle each one. The settings
9130
available for each signal are:
9133
<dt><code>Stop</code>
9134
<dd>If set, <small>GDB</small> should stop your program when this signal happens.
9135
This also implies <code>Print</code> being set.
9137
<br><dt><code>Print</code>
9138
<dd>If set, <small>GDB</small> should print a message when this signal happens.
9140
<p>If unset, <small>GDB</small> should not mention the occurrence of the signal at all.
9141
This also implies <code>Stop</code> being unset.
9143
<br><dt><code>Pass</code>
9144
<dd>If set, <small>GDB</small> should allow your program to see this signal; your
9145
program can handle the signal, or else it may terminate if the signal
9146
is fatal and not handled.
9148
<p>If unset, <small>GDB</small> should not allow your program to see this signal.
9152
<div align="center"><img src="PICS/ddd-signals.jpg" alt="PICS/ddd-signals.jpg"></div>
9154
<p>The entry <code>All Signals</code> is special. Changing a setting here
9155
affects <em>all signals at once</em>--except those used by the debugger,
9156
typically <code>SIGTRAP</code> and <code>SIGINT</code>.
9158
<p>To undo any changes, use <code>Edit => Undo</code>. The <code>Reset</code>
9159
button restores the saved settings.
9161
<p>When a signal stops your program, the signal is not visible until you
9162
continue. Your program sees the signal then, if <code>Pass</code> is in
9163
effect for the signal in question <em>at that time</em>. In other words,
9164
after <small>GDB</small> reports a signal, you can change the <code>Pass</code> setting in
9165
<code>Status => Signals</code> to control whether your program sees
9166
that signal when you continue.
9168
<p>You can also cause your program to see a signal it normally would not
9169
see, or to give it any signal at any time. The <code>Send</code> button will
9170
resume execution where your program stopped, but immediately give it the
9173
<p>On the other hand, you can also prevent your program from seeing a
9174
signal. For example, if your program stopped due to some sort of memory
9175
reference error, you might store correct values into the erroneous
9176
variables and continue, hoping to see more execution; but your program
9177
would probably terminate immediately as a result of the fatal signal
9178
once it saw the signal. To prevent this, you can resume execution using
9179
<code>Commands => Continue Without Signal</code>.
9181
<p>Signal settings are not saved across DDD invocations, since changed
9182
signal settings are normally useful within specific projects only.
9183
Instead, signal settings are saved with the current session, using
9184
<code>File => Save Session As</code>.
9188
<small class=header>
9189
Node:<a name="Killing%20the%20Program">Killing the Program</a>,
9190
Previous:<a rel="previous" accesskey="p" href="#Signals">Signals</a>,
9191
Up:<a rel="up" accesskey="u" href="#Running">Running</a>
9197
<h3 class="section">Killing the Program</h3>
9199
<p>You can kill the process of the debugged program at any time using the
9200
<code>Kill</code> button.
9202
<p>Killing the process is useful if you wish to debug a core dump instead
9203
of a running process. <small>GDB</small> ignores any core dump file while your program
9206
<p>The <code>Kill</code> button is also useful if you wish to recompile and
9207
relink your program, since on many systems it is impossible to modify an
9208
executable file while it is running in a process. In this case, when
9209
you next click on <code>Run</code>, <small>GDB</small> notices that the file has changed, and
9210
reads the symbol table again (while trying to preserve your current
9215
<small class=header>
9216
Node:<a name="Examining%20Data">Examining Data</a>,
9217
Next:<a rel="next" accesskey="n" href="#Machine-Level%20Debugging">Machine-Level Debugging</a>,
9218
Previous:<a rel="previous" accesskey="p" href="#Running">Running</a>,
9219
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
9225
<h2 class="chapter">Examining Data</h2>
9227
<p><small>DDD</small> provides several means to examine data.
9230
<li>The quickest way to examine variables is to move the pointer on an
9231
occurrence in the source text. The value is displayed in the source
9232
line; after a second, a popup window (called <dfn>value tip</dfn>) shows the
9233
variable value. This is useful for quick examination of several simple
9236
<li>If you want to refer to variable values at a later time, you can
9237
<dfn>print</dfn> the value in the debugger console. This allows for
9238
displaying and examining larger data structures.
9240
<li>If you want to examine complex data structures, you can <dfn>display</dfn>
9241
them graphically in the data window. Displays remain effective until
9242
you delete them; they are updated each time the program stops. This is
9243
useful for large dynamic structures.
9245
<li>If you want to examine arrays of numeric values, you can <dfn>plot</dfn> them
9246
graphically in a separate plot window. The plot is updated each time
9247
the program stops. This is useful for large numeric arrays.
9249
<li>Using <small>GDB</small> or <small>DBX</small>, you can also <dfn>examine memory contents</dfn> in any of
9250
several formats, independently of your program's data types.
9254
<li><a accesskey="1" href="#Value%20Tips">Value Tips</a>: Just move the pointer on a variable.
9255
<li><a accesskey="2" href="#Printing%20Values">Printing Values</a>: Printing a value in the debugger console.
9256
<li><a accesskey="3" href="#Displaying%20Values">Displaying Values</a>: Displaying structures as graphs.
9257
<li><a accesskey="4" href="#Plotting%20Values">Plotting Values</a>: Displaying values as plots.
9258
<li><a accesskey="5" href="#Examining%20Memory">Examining Memory</a>: Low-level memory examination.
9263
<small class=header>
9264
Node:<a name="Value%20Tips">Value Tips</a>,
9265
Next:<a rel="next" accesskey="n" href="#Printing%20Values">Printing Values</a>,
9266
Up:<a rel="up" accesskey="u" href="#Examining%20Data">Examining Data</a>
9272
<h3 class="section">Showing Simple Values using Value Tips</h3>
9274
<p>To display the value of a simple variable, move the mouse pointer on its
9275
name. After a second, a small window (called <dfn>value tip</dfn>) pops up
9276
showing the value of the variable pointed at. The window disappears as
9277
soon as you move the mouse pointer away from the variable. The value is
9278
also shown in the status line.
9281
<div align="center"><img src="PICS/ddd-value-tip.jpg" alt="PICS/ddd-value-tip.jpg"></div>
9283
<p>You can disable value tips via <code>Edit => Preferences
9284
=> General => Automatic display of variable values as
9287
<p>You can disable displaying variable values in the status line via
9288
<code>Edit => Preferences => General => Automatic
9289
display of variable values in the status line</code>.
9291
<p>These customizations are tied to the following resources:
9294
<table width="100%">
9296
<td align="left"><b>valueTips</b><i> </i>(<i>class Tips</i>)<i>
9298
<td align="right">Resource</td>
9301
<table width="95%" align="center">
9303
Whether value tips are enabled (<code>on</code>, default) or not
9304
(<code>off</code>). Value tips affect <small>DDD</small> performance and may
9305
be distracting for some experienced users.
9310
<table width="100%">
9312
<td align="left"><b>valueDocs</b><i> </i>(<i>class Docs</i>)<i>
9314
<td align="right">Resource</td>
9317
<table width="95%" align="center">
9319
Whether the display of variable values in the status line is enabled
9320
(<code>on</code>, default) or not (<code>off</code>).
9324
<p>You can turn off value tips via <code>Edit => Preferences
9325
=> General => Automatic Display of Variable Values</code>.
9329
<small class=header>
9330
Node:<a name="Printing%20Values">Printing Values</a>,
9331
Next:<a rel="next" accesskey="n" href="#Displaying%20Values">Displaying Values</a>,
9332
Previous:<a rel="previous" accesskey="p" href="#Value%20Tips">Value Tips</a>,
9333
Up:<a rel="up" accesskey="u" href="#Examining%20Data">Examining Data</a>
9339
<h3 class="section">Printing Simple Values in the Debugger Console</h3>
9341
<p>The variable value can also be printed in the debugger console, making
9342
it available for future operations. To print a variable value, select
9343
the desired variable by clicking <em>mouse button 1</em> on its name. The
9344
variable name is copied to the argument field. By clicking the
9345
<code>Print</code> button, the value is printed in the debugger console. The
9346
printed value is also shown in the status line.
9348
<p>As a shorter alternative, you can simply press <em>mouse button 3</em> on
9349
the variable name and select the <code>Print</code> item from the popup menu.
9352
<div align="center"><img src="PICS/ddd-print-popup.jpg" alt="PICS/ddd-print-popup.jpg"></div>
9354
<p>In <small>GDB</small>, the <code>Print</code> button generates a <code>print</code> command, which
9355
has several more options. See <a href="gdb.html#Data">Examining Data</a>, for <small>GDB</small>-specific expressions, variables, and
9360
<small class=header>
9361
Node:<a name="Displaying%20Values">Displaying Values</a>,
9362
Next:<a rel="next" accesskey="n" href="#Plotting%20Values">Plotting Values</a>,
9363
Previous:<a rel="previous" accesskey="p" href="#Printing%20Values">Printing Values</a>,
9364
Up:<a rel="up" accesskey="u" href="#Examining%20Data">Examining Data</a>
9370
<h3 class="section">Displaying Complex Values in the Data Window</h3>
9372
<p>To explore complex data structures, you can <dfn>display</dfn> them
9373
permanently in the <em>data window</em>. The data window displays
9374
selected data of your program, showing complex data structures
9375
graphically. It is updated each time the program stops.
9378
<li><a accesskey="1" href="#Display%20Basics">Display Basics</a>: How to create, manipulate, and delete displays.
9379
<li><a accesskey="2" href="#Arrays">Arrays</a>: Special functions for arrays.
9380
<li><a accesskey="3" href="#Assignment">Assignment</a>: Setting variable values.
9381
<li><a accesskey="4" href="#Examining%20Structures">Examining Structures</a>: Dereferencing pointers and other references.
9382
<li><a accesskey="5" href="#Customizing%20Displays">Customizing Displays</a>: Data Themes.
9383
<li><a accesskey="6" href="#Layouting%20the%20Graph">Layouting the Graph</a>: Automatic layout.
9384
<li><a accesskey="7" href="#Printing%20the%20Graph">Printing the Graph</a>: Printing on paper.
9389
<small class=header>
9390
Node:<a name="Display%20Basics">Display Basics</a>,
9391
Next:<a rel="next" accesskey="n" href="#Arrays">Arrays</a>,
9392
Up:<a rel="up" accesskey="u" href="#Displaying%20Values">Displaying Values</a>
9398
<h4 class="subsection">Display Basics</h4>
9400
<p>This section discusses how to create, manipulate, and delete displays.
9404
<li>Click on <code>Display</code> to display the variable in <code>()</code>.
9406
<li>Click on a display to select it.
9408
<li>Click on <code>Undisplay</code> to delete the selected display.
9412
<li><a accesskey="1" href="#Creating%20Single%20Displays">Creating Single Displays</a>:
9413
<li><a accesskey="2" href="#Selecting%20Displays">Selecting Displays</a>:
9414
<li><a accesskey="3" href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>:
9415
<li><a accesskey="4" href="#Rotating%20Displays">Rotating Displays</a>:
9416
<li><a accesskey="5" href="#Displaying%20Local%20Variables">Displaying Local Variables</a>:
9417
<li><a accesskey="6" href="#Displaying%20Program%20Status">Displaying Program Status</a>:
9418
<li><a accesskey="7" href="#Refreshing%20the%20Data%20Window">Refreshing the Data Window</a>:
9419
<li><a accesskey="8" href="#Placement">Placement</a>:
9420
<li><a accesskey="9" href="#Clustering">Clustering</a>:
9421
<li><a href="#Creating%20Multiple%20Displays">Creating Multiple Displays</a>:
9422
<li><a href="#Editing%20all%20Displays">Editing all Displays</a>:
9423
<li><a href="#Deleting%20Displays">Deleting Displays</a>:
9428
<small class=header>
9429
Node:<a name="Creating%20Single%20Displays">Creating Single Displays</a>,
9430
Next:<a rel="next" accesskey="n" href="#Selecting%20Displays">Selecting Displays</a>,
9431
Up:<a rel="up" accesskey="u" href="#Display%20Basics">Display Basics</a>
9437
<h5 class="subsubsection">Creating Single Displays</h5>
9439
<p>To create a new display showing a specific variable, select the variable
9440
by clicking <em>mouse button 1</em> on its name. The variable name is
9441
copied to the argument field. By clicking the <code>Display</code> button, a
9442
new display is created in the data window. The data window opens
9443
automatically as soon as you create a display.
9446
<div align="center"><img src="PICS/ddd-display.jpg" alt="PICS/ddd-display.jpg"></div>
9448
<p>As a shorter alternative, you can simply press <em>mouse button 3</em> on
9449
the variable name and select <code>Display</code> from the popup menu.
9451
<p>As an even faster alternative, you can also double-click on the variable
9454
<p>As another alternative, you may also enter the expression to be
9455
displayed in the argument field and press the <code>Display</code> button.
9457
<p>Finally, you may also type in a command at the debugger prompt:
9459
<pre class="example"> graph display <var>expr</var> [clustered] [at (<var>x</var>, <var>y</var>)]
9460
[dependent on <var>display</var>] [[now or] when in <var>scope</var>]
9463
<p>This command creates a new display showing the value of the expression
9464
<var>expr</var>. The optional parts have the following meaning:
9467
<dt><code>clustered</code>
9468
<dd>If given, the new display is created in a cluster. See <a href="#Clustering">Clustering</a>,
9471
<br><dt><code>at (</code><var>x</var><code>, </code><var>y</var><code>)</code>
9472
<dd>If given, the new display is created at the position (<var>x</var>, <var>y</var>).
9473
Otherwise, a default position is assigned.
9475
<br><dt><code>dependent on </code><var>display</var><code></code>
9476
<dd>If given, an edge from the display numbered or named <em>display</em> to
9477
the new display is created. Otherwise, no edge is created.
9478
See <a href="#Dependent%20Values">Dependent Values</a>, for details.
9480
<br><dt><code>when in </code><var>scope</var><code></code>
9481
<dd><dt><code>now or when in </code><var>scope</var><code></code>
9482
<dd>If <code>when in</code> is given, the display creation is <dfn>deferred</dfn> until
9483
execution reaches the given <var>scope</var> (a function name, as in the
9486
<p>If <code>now or when in</code> is given, <small>DDD</small> first attempts to create
9487
the display immediately. The display is deferred only if display
9490
<p>If neither <code>when in</code> suffix nor <code>now or when in</code> suffix is
9491
given, the display is created immediately.
9496
<small class=header>
9497
Node:<a name="Selecting%20Displays">Selecting Displays</a>,
9498
Next:<a rel="next" accesskey="n" href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>,
9499
Previous:<a rel="previous" accesskey="p" href="#Creating%20Single%20Displays">Creating Single Displays</a>,
9500
Up:<a rel="up" accesskey="u" href="#Display%20Basics">Display Basics</a>
9506
<h5 class="subsubsection">Selecting Displays</h5>
9508
<p>Each display in the data window has a <em>title bar</em> containing the
9509
<em>display number</em> and the displayed expression (the <em>display
9510
name</em>). Below the title, the <em>display value</em> is shown.
9512
<p>You can select single displays by clicking on them with <em>mouse
9515
<p>You can <em>extend</em> an existing selection by pressing the <Shift>
9516
key while selecting. You can also <em>toggle</em> an existing selection
9517
by pressing the <Shift> key while selecting already selected
9520
<p>Single displays may also be selected by using the arrow keys <Up>,
9521
<Down>, <Left>, and <Right>.
9523
<p><em>Multiple displays</em> are selected by pressing and holding
9524
<em>mouse button 1</em> somewhere on the window background. By moving the
9525
pointer while holding the button, a selection rectangle is shown; all
9526
displays fitting in the rectangle are selected when mouse button 1 is
9529
<p>If the <Shift> key is pressed while selecting, the existing
9530
selection is <em>extended</em>.
9532
<p>By double-clicking on a display title, the display itself and all
9533
connected displays are automatically selected.
9536
<div align="center"><img src="PICS/ddd-select-display.jpg" alt="PICS/ddd-select-display.jpg"></div>
9540
<small class=header>
9541
Node:<a name="Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>,
9542
Next:<a rel="next" accesskey="n" href="#Rotating%20Displays">Rotating Displays</a>,
9543
Previous:<a rel="previous" accesskey="p" href="#Selecting%20Displays">Selecting Displays</a>,
9544
Up:<a rel="up" accesskey="u" href="#Display%20Basics">Display Basics</a>
9550
<h5 class="subsubsection">Showing and Hiding Details</h5>
9552
<p>Aggregate values (i.e. records, structs, classes, and arrays) can be
9553
shown <em>expanded</em>, that is, displaying all details, or
9554
<em>hidden</em>, that is, displayed as <code>{...}</code>.
9556
<p>To show details about an aggregate, select the aggregate by clicking
9557
<em>mouse button 1</em> on its name or value and click on the <code>Show</code>
9558
button. Details are shown for the aggregate itself as well as for all
9559
contained sub-aggregates.
9561
<p>To hide details about an aggregate, select the aggregate by clicking
9562
<em>mouse button 1</em> on its name or value and click on the <code>Hide</code>
9566
<div align="center"><img src="PICS/ddd-hide-display.jpg" alt="PICS/ddd-hide-display.jpg"></div>
9568
<p>When pressing and holding <em>mouse button 1</em> on the <code>Show/Hide</code>
9569
button, a menu pops up with even more alternatives:
9572
<dt><code>Show More ()</code>
9573
<dd>Shows details of all aggregates currently hidden, but not of their
9574
sub-aggregates. You can invoke this item several times in a row to
9575
reveal more and more details of the selected aggregate.
9577
<br><dt><code>Show Just ()</code>
9578
<dd>Shows details of the selected aggregate, but hides all sub-aggregates.
9580
<br><dt><code>Show All ()</code>
9581
<dd>Shows all details of the selected aggregate and of its sub-aggregates.
9582
This item is equivalent to the <code>Show</code> button.
9584
<br><dt><code>Hide ()</code>
9585
<dd>Hide all details of the selected aggregate. This item is equivalent
9586
to the <code>Hide</code> button.
9589
<p>As a faster alternative, you can also press <em>mouse button 3</em> on the
9590
aggregate and select the appropriate menu item.
9592
<p>As an even faster alternative, you can also double-click <em>mouse
9593
button 1</em> on a value. If some part of the value is hidden, more details
9594
will be shown; if the entire value is shown, double-clicking will
9595
<em>hide</em> the value instead. This way, you can double-click on a
9596
value until you get the right amount of details.
9598
<p>If <em>all</em> details of a display are hidden, the display is called
9599
<dfn>disabled</dfn>; this is indicated by the string <code>(Disabled)</code>.
9601
<p>Displays can also be disabled or enabled via a <small>DDD</small> command,
9602
which you enter at the debugger prompt:
9604
<pre class="example"> graph disable display <var>displays<small class="dots">...</small></var>
9607
<p>disables the given displays.
9609
<pre class="example"> graph enable display <var>displays<small class="dots">...</small></var>
9612
<p>re-enables the given displays.
9614
<p>In both commands, <var>displays<small class="dots">...</small></var> is either
9616
<li>a space-separated list of display numbers to disable or enable, or
9618
<li>a single display name. If you specify a display by name, all displays
9619
with this name will be affected.
9622
<p>Use <code>Edit => Undo</code> to undo disabling or enabling displays.
9626
<small class=header>
9627
Node:<a name="Rotating%20Displays">Rotating Displays</a>,
9628
Next:<a rel="next" accesskey="n" href="#Displaying%20Local%20Variables">Displaying Local Variables</a>,
9629
Previous:<a rel="previous" accesskey="p" href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>,
9630
Up:<a rel="up" accesskey="u" href="#Display%20Basics">Display Basics</a>
9636
<h5 class="subsubsection">Rotating Displays</h5>
9638
<p>Arrays, structures and lists can be oriented horizontally or vertically.
9639
To change the orientation of a display, select it and then click on the
9640
<code>Rotate</code> button.
9642
<p>As a faster alternative, you can also press <em>mouse button 3</em> on the
9643
array and select <code>Rotate</code> from the popup menu.
9646
<div align="center"><img src="PICS/ddd-rotate-display.jpg" alt="PICS/ddd-rotate-display.jpg"></div>
9648
<p>If a structure or list is oriented horizontally, <small>DDD</small>
9649
automatically suppresses the member names. This can be handy for saving
9652
<p>The last chosen display orientation is used for the creation of new
9653
displays. If you recently rotated an array to horizontal orientation,
9654
the next array you create will also be oriented horizontally. These
9655
settings are tied to the following resources:
9658
<table width="100%">
9660
<td align="left"><b>arrayOrientation</b><i> </i>(<i>class Orientation</i>)<i>
9662
<td align="right">Resource</td>
9665
<table width="95%" align="center">
9667
How arrays are to be oriented. Possible values are <code>XmVERTICAL</code>
9668
(default) and <code>XmHORIZONTAL</code>.
9673
<table width="100%">
9675
<td align="left"><b>showMemberNames</b><i> </i>(<i>class ShowMemberNames</i>)<i>
9677
<td align="right">Resource</td>
9680
<table width="95%" align="center">
9682
Whether to show struct member names or not. Default is <code>on</code>.
9687
<table width="100%">
9689
<td align="left"><b>structOrientation</b><i> </i>(<i>class Orientation</i>)<i>
9691
<td align="right">Resource</td>
9694
<table width="95%" align="center">
9696
How structs are to be oriented. Possible values are <code>XmVERTICAL</code>
9697
(default) and <code>XmHORIZONTAL</code>.
9703
<small class=header>
9704
Node:<a name="Displaying%20Local%20Variables">Displaying Local Variables</a>,
9705
Next:<a rel="next" accesskey="n" href="#Displaying%20Program%20Status">Displaying Program Status</a>,
9706
Previous:<a rel="previous" accesskey="p" href="#Rotating%20Displays">Rotating Displays</a>,
9707
Up:<a rel="up" accesskey="u" href="#Display%20Basics">Display Basics</a>
9713
<h5 class="subsubsection">Displaying Local Variables</h5>
9715
<p>You can display all local variables at once by choosing <code>Data
9716
=> Display Local Variables</code>. When using <small>DBX</small>, <small>XDB</small>, <small>JDB</small>, or Perl,
9717
this displays all local variables, including the arguments of the
9718
current function. When using <small>GDB</small> or <small>PYDB</small>, function arguments are
9719
contained in a separate display, activated by <code>Data =>
9720
Display Arguments</code>.
9722
<p>The display showing the local variables can be manipulated just like any
9723
other data display. Individual variables can be selected and
9727
<div align="center"><img src="PICS/ddd-locals.jpg" alt="PICS/ddd-locals.jpg"></div>
9731
<small class=header>
9732
Node:<a name="Displaying%20Program%20Status">Displaying Program Status</a>,
9733
Next:<a rel="next" accesskey="n" href="#Refreshing%20the%20Data%20Window">Refreshing the Data Window</a>,
9734
Previous:<a rel="previous" accesskey="p" href="#Displaying%20Local%20Variables">Displaying Local Variables</a>,
9735
Up:<a rel="up" accesskey="u" href="#Display%20Basics">Display Basics</a>
9741
<h5 class="subsubsection">Displaying Program Status</h5>
9743
<p>You can create a display from the output of an arbitrary debugger
9744
command. By entering
9746
<pre class="example"> graph display `<var>command</var>`
9749
<p>the output of <var>command</var> is turned into a <em>status display</em>
9750
updated each time the program stops.
9752
<p>For instance, the command
9754
<pre class="example"> graph display `where`
9757
<p>creates a status display named <code>Where</code> that shows the current
9760
<p>If you are using <small>GDB</small>, <small>DDD</small> provides a panel from which you can
9761
choose useful status displays. Select <code>Data => Status
9762
Displays</code> and pick your choice from the list.
9765
<div align="center"><img src="PICS/ddd-status-displays.jpg" alt="PICS/ddd-status-displays.jpg"></div>
9767
<p>Refreshing status displays at each stop takes time; you should delete
9768
status displays as soon as you don't need them any more.
9772
<small class=header>
9773
Node:<a name="Refreshing%20the%20Data%20Window">Refreshing the Data Window</a>,
9774
Next:<a rel="next" accesskey="n" href="#Placement">Placement</a>,
9775
Previous:<a rel="previous" accesskey="p" href="#Displaying%20Program%20Status">Displaying Program Status</a>,
9776
Up:<a rel="up" accesskey="u" href="#Display%20Basics">Display Basics</a>
9782
<h5 class="subsubsection">Refreshing the Data Window</h5>
9784
<p>The data window is automatically updated or <dfn>refreshed</dfn> each time
9785
the program stops. Values that have changed since the last refresh are
9788
<p>However, there may be situations where you should refresh the data
9789
window explicitly. This is especially the case whenever you changed
9790
debugger settings that could affect the data format, and want the data
9791
window to reflect these settings.
9793
<p>You can refresh the data window by selecting <code>Data =>
9794
Refresh Displays</code>.
9796
<p>As an alternative, you can press <em>mouse button 3</em> on the background
9797
of the data window and select the <code>Refresh Displays</code> item.
9801
<pre class="example"> graph refresh
9804
<p>at the debugger prompt has the same effect.
9808
<small class=header>
9809
Node:<a name="Placement">Placement</a>,
9810
Next:<a rel="next" accesskey="n" href="#Clustering">Clustering</a>,
9811
Previous:<a rel="previous" accesskey="p" href="#Refreshing%20the%20Data%20Window">Refreshing the Data Window</a>,
9812
Up:<a rel="up" accesskey="u" href="#Display%20Basics">Display Basics</a>
9818
<h5 class="subsubsection">Display Placement</h5>
9820
<p>By default, displays are created from <em>top to bottom</em>--that is,
9821
each new display is placed below the downmost one. You can change this
9822
setting to <em>left to right</em> via <code>Edit => Preferences
9823
=> Data => Placement => Left to right</code>.
9826
<div align="center"><img src="PICS/ddd-data-prefs.jpg" alt="PICS/ddd-data-prefs.jpg"></div>
9828
<p>This setting is tied to the following resource:
9831
<table width="100%">
9833
<td align="left"><b>displayPlacement</b><i> </i>(<i>class Orientation</i>)<i>
9835
<td align="right">Resource</td>
9838
<table width="95%" align="center">
9840
If this is <code>XmVERTICAL</code> (default), <small>DDD</small> places each new
9841
independent display below the downmost one. If this is
9842
<code>XmHORIZONTAL</code>, each new independent display is placed on the right
9843
of the rightmost one.
9847
<p>Note that changing the placement of new displays also affects the
9848
placement of <em>dependent displays</em> (see <a href="#Dependent%20Values">Dependent Values</a>). In
9849
<em>top to bottom</em> mode, dependent displays are created on the right
9850
of the originating display; in <em>left to right</em> mode, dependent
9851
displays are created on the below the originating display.
9855
<small class=header>
9856
Node:<a name="Clustering">Clustering</a>,
9857
Next:<a rel="next" accesskey="n" href="#Creating%20Multiple%20Displays">Creating Multiple Displays</a>,
9858
Previous:<a rel="previous" accesskey="p" href="#Placement">Placement</a>,
9859
Up:<a rel="up" accesskey="u" href="#Display%20Basics">Display Basics</a>
9865
<h5 class="subsubsection">Clustering Displays</h5>
9867
<p>If you examine several variables at once, having a separate display for
9868
each of them uses a lot of screen space. This is why <small>DDD</small>
9869
supports <dfn>clusters</dfn>. A cluster merges several logical data displays
9870
into one physical display, saving screen space.
9872
<p>There are two ways to create clusters:
9874
<li>You can create clusters <em>manually</em>. This is done by selecting the
9875
displays to be clustered and choosing <code>Undisp => Cluster
9876
()</code>. This creates a new cluster from all selected displays. If an
9877
already existing cluster is selected, too, the selected displays will be
9878
clustered into the selected cluster.
9880
<li>You can create a cluster <em>automatically</em> for all independent data
9881
displays, such that all new data displays will automatically be
9882
clustered, too. This is achieved by enabling <code>Edit =>
9883
Preferences => Data => Placement => clustered</code>.
9887
<div align="center"><img src="PICS/ddd-clusters.jpg" alt="PICS/ddd-clusters.jpg"></div>
9889
<p>Displays in a cluster can be selected and manipulated like parts of an
9890
ordinary display; in particular, you can show and hide details, or
9891
dereference pointers. However, edges leading to clustered displays can
9892
not be shown, and you must either select one or all clustered displays.
9894
<p>Disabling a cluster is called <em>unclustering</em>, and again, there
9895
are two ways of doing it:
9898
<li>You can uncluster displays <em>manually</em>, by selecting the cluster
9899
and choosing <code>Undisp => Uncluster ()</code>.
9901
<li>You can uncluster all current and future displays by disabling
9902
<code>Edit => Preferences => Data => Placement =>
9908
<small class=header>
9909
Node:<a name="Creating%20Multiple%20Displays">Creating Multiple Displays</a>,
9910
Next:<a rel="next" accesskey="n" href="#Editing%20all%20Displays">Editing all Displays</a>,
9911
Previous:<a rel="previous" accesskey="p" href="#Clustering">Clustering</a>,
9912
Up:<a rel="up" accesskey="u" href="#Display%20Basics">Display Basics</a>
9918
<h5 class="subsubsection">Creating Multiple Displays</h5>
9920
<p>To display several successive objects of the same type (a section of an
9921
array, or an array of dynamically determined size), you can use the
9922
notation <code></code><var>from</var><code>..</code><var>to</var><code></code> in display expressions.
9924
<p><var>from</var> and <var>to</var> are numbers that denote the first and last
9925
expression to display. Thus,
9927
<pre class="example"> graph display argv[0..9]
9930
<p>creates 10 new displays for <code>argv[0]</code>, <code>argv[1]</code>, <small class="dots">...</small>,
9931
<code>argv[9]</code>. The displays are clustered automatically
9932
(see <a href="#Clustering">Clustering</a>), such that you can easily handle the set just like
9935
<p>The <code></code><var>from</var><code>..</code><var>to</var><code></code> notation can also be used multiple
9936
times. For instance,
9938
<pre class="example"> graph display 1..5 * 1..5
9941
<p>creates a handy small multiplication table.
9943
<p>The <code></code><var>from</var><code>..</code><var>to</var><code></code> notation creates several displays, which
9944
takes time to create and update. If you want to display only a part of
9945
an array, <em>array slices</em> are a more efficient way. See <a href="#Array%20Slices">Array Slices</a>, for a discussion.
9949
<small class=header>
9950
Node:<a name="Editing%20all%20Displays">Editing all Displays</a>,
9951
Next:<a rel="next" accesskey="n" href="#Deleting%20Displays">Deleting Displays</a>,
9952
Previous:<a rel="previous" accesskey="p" href="#Creating%20Multiple%20Displays">Creating Multiple Displays</a>,
9953
Up:<a rel="up" accesskey="u" href="#Display%20Basics">Display Basics</a>
9959
<h5 class="subsubsection">Editing all Displays</h5>
9961
<p>You can view the state of all displays by selecting <code>Data =>
9962
Displays</code>. This invokes the <dfn>Display Editor</dfn>.
9965
<div align="center"><img src="PICS/ddd-edit-displays.jpg" alt="PICS/ddd-edit-displays.jpg"></div>
9967
<p>The Display Editor shows the properties of each display, using the
9971
<dt><code>Num</code>
9972
<dd>The display number.
9974
<br><dt><code>Expression</code>
9975
<dd>The displayed expression.
9977
<br><dt><code>State</code>
9981
<dt><code>enabled</code>
9984
<br><dt><code>disabled</code>
9985
<dd>Disabled; all details are hidden. Use <code>Show</code> to enable.
9987
<br><dt><code>not active</code>
9990
<br><dt><code>deferred</code>
9991
<dd>Will be created as soon as its <code>Scope</code> is reached (see <a href="#Creating%20Single%20Displays">Creating Single Displays</a>).
9993
<br><dt><code>clustered</code>
9994
<dd>Part of a cluster (see <a href="#Clustering">Clustering</a>). Use <code>Undisp =>
9995
Uncluster</code> to uncluster.
9997
<br><dt><code>alias of </code><var>display</var><code></code>
9998
<dd>A suppressed alias of display <var>display</var> (see <a href="#Shared%20Structures">Shared Structures</a>).
10001
<br><dt><code>Scope</code>
10002
<dd>The scope in which the display was created. For deferred displays, this
10003
is the scope in which the display will be created.
10005
<br><dt><code>Address</code>
10006
<dd>The address of the displayed expression. Used for resolving aliases
10007
(see <a href="#Shared%20Structures">Shared Structures</a>).
10012
<small class=header>
10013
Node:<a name="Deleting%20Displays">Deleting Displays</a>,
10014
Previous:<a rel="previous" accesskey="p" href="#Editing%20all%20Displays">Editing all Displays</a>,
10015
Up:<a rel="up" accesskey="u" href="#Display%20Basics">Display Basics</a>
10021
<h5 class="subsubsection">Deleting Displays</h5>
10023
<p>To delete a single display, select its title or value and click on the
10024
<code>Undisp</code> button. As an alternative, you can also press <em>mouse
10025
button 3</em> on the display and select the <code>Undisplay</code> item.
10027
<p>When a display is deleted, its immediate ancestors and descendants are
10028
automatically selected, so that you can easily delete entire graphs.
10030
<p>If you have selected only part of a display, clicking on the
10031
<code>Undisp</code> button allows you to <em>suppress</em> this part--by
10032
applying the <em>Suppress Values</em> theme on the part. You'll be asked
10033
for confirmation first. See <a href="#Using%20Data%20Themes">Using Data Themes</a>, for details.
10036
<div align="center"><img src="PICS/ddd-suppress.jpg" alt="PICS/ddd-suppress.jpg"></div>
10038
<p>To delete several displays at once, use the <code>Undisp</code> button in the
10039
Display Editor (invoked via <code>Data => Displays</code>). Select any
10040
number of display items in the usual way and delete them by pressing
10041
<code>Undisp</code>.
10043
<p>As an alternative, you can also use a <small>DDD</small> command:
10045
<pre class="example"> graph undisplay <var>displays<small class="dots">...</small></var>
10048
<p>Here, <var>displays<small class="dots">...</small></var> is either
10050
<li>a space-separated list of display numbers to disable or enable, or
10052
<li>a single display name. If you specify a display by name, all displays
10053
with this name will be affected.
10056
<p>If you are using stacked windows, deleting the last display from the
10057
data window also automatically closes the data window. (You can change
10058
this via <code>Edit => Preferences => Data => Close
10059
data window when deleting last display</code>.)
10061
<p>If you deleted a display by mistake, use <code>Edit => Undo</code> to
10064
<p>Finally, you can also cut, copy, and paste displays using the
10065
<code>Cut</code>, <code>Copy</code>, and <code>Paste</code> items from the <code>Edit</code>
10066
menu. The clipboard holds the <em>commands</em> used to create the
10067
displays; <code>Paste</code> inserts the display commands in the debugger
10068
console. This allows you to save displays for later usage or to copy
10069
displays across multiple <small>DDD</small> instances.
10073
<small class=header>
10074
Node:<a name="Arrays">Arrays</a>,
10075
Next:<a rel="next" accesskey="n" href="#Assignment">Assignment</a>,
10076
Previous:<a rel="previous" accesskey="p" href="#Display%20Basics">Display Basics</a>,
10077
Up:<a rel="up" accesskey="u" href="#Displaying%20Values">Displaying Values</a>
10083
<h4 class="subsection">Arrays</h4>
10085
<p><small>DDD</small> has some special features that facilitate handling of
10089
<li><a accesskey="1" href="#Array%20Slices">Array Slices</a>: Displaying <var>from</var>..<var>to</var> parts of an array
10090
<li><a accesskey="2" href="#Repeated%20Values">Repeated Values</a>: How repeated values are handled.
10091
<li><a accesskey="3" href="#Arrays%20as%20Tables">Arrays as Tables</a>: Displaying two-dimensional arrays.
10096
<small class=header>
10097
Node:<a name="Array%20Slices">Array Slices</a>,
10098
Next:<a rel="next" accesskey="n" href="#Repeated%20Values">Repeated Values</a>,
10099
Up:<a rel="up" accesskey="u" href="#Arrays">Arrays</a>
10105
<h5 class="subsubsection">Array Slices</h5>
10107
<p>It is often useful to print out several successive objects of the same
10108
type in memory; a <dfn>slice</dfn> (section) of an array, or an array of
10109
dynamically determined size for which only a pointer exists in the
10112
<p>Using <small>DDD</small>, you can display slices using the
10113
<code></code><var>from</var><code>..</code><var>to</var><code></code> notation (see <a href="#Creating%20Multiple%20Displays">Creating Multiple Displays</a>). But this requires that you already know <var>from</var> and
10114
<var>to</var>; it is also inefficient to create several single displays. If
10115
you use <small>GDB</small>, you have yet another alternative.
10117
<p>Using <small>GDB</small>, you can display successive objects by referring to a
10118
contiguous span of memory as an <dfn>artificial array</dfn>, using the binary
10119
operator <code>@</code>. The left operand of <code>@</code> should be the first
10120
element of the desired array and be an individual object. The right
10121
operand should be the desired length of the array. The result is an
10122
array value whose elements are all of the type of the left argument.
10123
The first element is actually the left argument; the second element
10124
comes from bytes of memory immediately following those that hold the
10125
first element, and so on.
10127
<p>Here is an example. If a program says
10129
<pre class="example"> int *array = (int *) malloc (len * sizeof (int));
10132
<p>you can print the contents of <code>array</code> with
10134
<pre class="example"> print array[0]@len
10137
<p>and display the contents with
10139
<pre class="example"> graph display array[0]@len
10142
<p>The general form of displaying an array slice is thus
10144
<pre class="example"> graph display <var>array</var>[<var>first</var>]@<var>nelems</var>
10147
<p>where <var>array</var> is the name of the array to display, <var>first</var> is
10148
the index of the first element, and <var>nelems</var> is the number of
10149
elements to display.
10151
<p>The left operand of <code>@</code> must reside in memory. Array values made
10152
with <code>@</code> in this way behave just like other arrays in terms of
10153
subscripting, and are coerced to pointers when used in expressions.
10157
<small class=header>
10158
Node:<a name="Repeated%20Values">Repeated Values</a>,
10159
Next:<a rel="next" accesskey="n" href="#Arrays%20as%20Tables">Arrays as Tables</a>,
10160
Previous:<a rel="previous" accesskey="p" href="#Array%20Slices">Array Slices</a>,
10161
Up:<a rel="up" accesskey="u" href="#Arrays">Arrays</a>
10167
<h5 class="subsubsection">Repeated Values</h5>
10169
<p>Using <small>GDB</small>, an array value that is repeated 10 or more times is displayed
10170
only once. The value is shown with a <code><</code><var>n</var><code>x></code> postfix added,
10171
where <var>n</var> is the number of times the value is repeated. Thus, the
10172
display <code>0x0 <30x></code> stands for 30 array elements, each with the
10173
value <code>0x0</code>. This saves a lot of display space, especially with
10174
homogeneous arrays.
10177
<div align="center"><img src="PICS/ddd-repeats.jpg" alt="PICS/ddd-repeats.jpg"></div>
10179
<p>The default <small>GDB</small> threshold for repeated array values is 10. You can
10180
change it via <code>Edit => </code><small>GDB</small><code> Settings => Threshold for
10181
repeated print elements</code>. Setting the threshold to <code>0</code> will cause
10182
<small>GDB</small> (and <small>DDD</small>) to display each array element individually. Be
10183
sure to refresh the data window via <code>Data => Refresh
10184
Displays</code> after a change in <small>GDB</small> settings.
10186
<p>You can also configure <small>DDD</small> to display each array element
10190
<table width="100%">
10192
<td align="left"><b>expandRepeatedValues</b><i> </i>(<i>class ExpandRepeatedValues</i>)<i>
10194
<td align="right">Resource</td>
10197
<table width="95%" align="center">
10199
<small>GDB</small> can print repeated array elements as <code></code><var>value</var><code> <repeated
10200
</code><var>n</var><code> times></code>. If <code>expandRepeatedValues</code> is <code>on</code>,
10201
<small>DDD</small> will display <var>n</var> instances of <var>value</var> instead. If
10202
<code>expandRepeatedValues</code> is <code>off</code> (default), <small>DDD</small> will
10203
display <var>value</var> with <code><</code><var>n</var><code>x></code> appended to indicate the
10210
<small class=header>
10211
Node:<a name="Arrays%20as%20Tables">Arrays as Tables</a>,
10212
Previous:<a rel="previous" accesskey="p" href="#Repeated%20Values">Repeated Values</a>,
10213
Up:<a rel="up" accesskey="u" href="#Arrays">Arrays</a>
10219
<h5 class="subsubsection">Arrays as Tables</h5>
10221
<p>By default, <small>DDD</small> lays out two-dimensional arrays as tables, such
10222
that all array elements are aligned with each other.<a rel="footnote" href="#fn-27"><sup>27</sup></a> To disable
10223
this feature, unset <code>Edit => Preferences => Data
10224
=> Display Two-Dimensional Arrays as Tables</code>. This is tied to
10225
the following resource:
10228
<table width="100%">
10230
<td align="left"><b>align2dArrays</b><i> </i>(<i>class Align2dArrays</i>)<i>
10232
<td align="right">Resource</td>
10235
<table width="95%" align="center">
10237
If <code>on</code> (default), <small>DDD</small> lays out two-dimensional arrays
10238
as tables, such that all array elements are aligned with each other.
10239
If <code>off</code>, <small>DDD</small> treats a two-dimensional array as an
10240
array of one-dimensional arrays, each aligned on its own.
10246
<small class=header>
10247
Node:<a name="Assignment">Assignment</a>,
10248
Next:<a rel="next" accesskey="n" href="#Examining%20Structures">Examining Structures</a>,
10249
Previous:<a rel="previous" accesskey="p" href="#Arrays">Arrays</a>,
10250
Up:<a rel="up" accesskey="u" href="#Displaying%20Values">Displaying Values</a>
10256
<h4 class="subsection">Assignment to Variables</h4>
10258
<p>During program execution, you can change the values of arbitrary
10259
variables.<a rel="footnote" href="#fn-28"><sup>28</sup></a>
10261
<p>To change the value of a variable, enter its name in <code>()</code>--for
10262
instance, by selecting an occurrence or a display. Then, click on the
10263
<code>Set</code> button. In a dialog, you can edit the variable value at
10264
will; clicking the <code>OK</code> or <code>Apply</code> button commits your change
10265
and assigns the new value to the variable.
10268
<div align="center"><img src="PICS/ddd-set.jpg" alt="PICS/ddd-set.jpg"></div>
10270
<p>To change a displayed value, you can also select <code>Set Value</code> menu
10271
from the data popup menu,
10273
<p>If you made a mistake, you can use <code>Edit => Undo</code> to re-set
10274
the variable to its previous value.
10278
<small class=header>
10279
Node:<a name="Examining%20Structures">Examining Structures</a>,
10280
Next:<a rel="next" accesskey="n" href="#Customizing%20Displays">Customizing Displays</a>,
10281
Previous:<a rel="previous" accesskey="p" href="#Assignment">Assignment</a>,
10282
Up:<a rel="up" accesskey="u" href="#Displaying%20Values">Displaying Values</a>
10288
<h4 class="subsection">Examining Structures</h4>
10290
<p>Besides displaying simple values, <small>DDD</small> can also visualize the
10291
<dfn>Dependencies</dfn> between values--especially pointers and other
10292
references that make up complex data structures.
10295
<li><a accesskey="1" href="#Dependent%20Values">Dependent Values</a>: Edges from values to values.
10296
<li><a accesskey="2" href="#Dereferencing%20Pointers">Dereferencing Pointers</a>: Examining pointer-based data structures.
10297
<li><a accesskey="3" href="#Shared%20Structures">Shared Structures</a>: Multiple pointers to one display.
10298
<li><a accesskey="4" href="#Display%20Shortcuts">Display Shortcuts</a>: Customize your own menus.
10303
<small class=header>
10304
Node:<a name="Dependent%20Values">Dependent Values</a>,
10305
Next:<a rel="next" accesskey="n" href="#Dereferencing%20Pointers">Dereferencing Pointers</a>,
10306
Up:<a rel="up" accesskey="u" href="#Examining%20Structures">Examining Structures</a>
10312
<h5 class="subsubsection">Displaying Dependent Values</h5>
10314
<p>Dependent displays are created from an existing display. The dependency
10315
is indicated by an <dfn>edge</dfn> leading from the originating display to
10316
the dependent display.
10318
<p>To create a dependent display, select the originating display or display
10319
part and enter the dependent expression in the <code>():</code> argument
10320
field. Then click on the <code>Display</code> button.
10322
<p>Using dependent displays, you can investigate the data structure of a
10323
tree for example and lay it out according to your intuitive image of the
10324
tree data structure.
10326
<p>By default, <small>DDD</small> does not recognize shared data structures
10327
(i.e. a data object referenced by multiple other data objects).
10328
See <a href="#Shared%20Structures">Shared Structures</a>, for details on how to examine such structures.
10332
<small class=header>
10333
Node:<a name="Dereferencing%20Pointers">Dereferencing Pointers</a>,
10334
Next:<a rel="next" accesskey="n" href="#Shared%20Structures">Shared Structures</a>,
10335
Previous:<a rel="previous" accesskey="p" href="#Dependent%20Values">Dependent Values</a>,
10336
Up:<a rel="up" accesskey="u" href="#Examining%20Structures">Examining Structures</a>
10342
<h5 class="subsubsection">Dereferencing Pointers</h5>
10344
<p>There are special shortcuts for creating dependent displays showing the
10345
value of a dereferenced pointer. This allows for rapid examination of
10346
pointer-based data structures.
10348
<p>To dereference a pointer, select the originating pointer value or name
10349
and click on the <code>Disp *</code> button. A new display showing the
10350
dereferenced pointer value is created.
10352
<p>As a faster alternative, you can also press <em>mouse button 3</em> on the
10353
originating pointer value or name and select the <code>Display *</code> menu
10356
<p>As an even faster alternative, you can also double-click <em>mouse
10357
button 1</em> on the originating pointer value or name. If you press
10358
<Ctrl> while double-clicking, the display will be dereferenced
10359
<em>in place</em>-that is, it will be replaced by the dereferenced
10362
<p>The <code>Display *()</code> function is also accessible by pressing and
10363
holding the <code>Display</code> button.
10367
<small class=header>
10368
Node:<a name="Shared%20Structures">Shared Structures</a>,
10369
Next:<a rel="next" accesskey="n" href="#Display%20Shortcuts">Display Shortcuts</a>,
10370
Previous:<a rel="previous" accesskey="p" href="#Dereferencing%20Pointers">Dereferencing Pointers</a>,
10371
Up:<a rel="up" accesskey="u" href="#Examining%20Structures">Examining Structures</a>
10377
<h5 class="subsubsection">Shared Structures</h5>
10379
<p>By default, <small>DDD</small> does not recognize shared data structures--that
10380
is, a data object referenced by multiple other data objects. For
10381
instance, if two pointers <code>p1</code> and <code>p2</code> point at the same data
10382
object <code>d</code>, the data displays <code>d</code>, <code>*p1</code>, and <code>*p2</code>
10383
will be separate, although they denote the same object.
10385
<p><small>DDD</small> provides a special mode which makes it detect these
10386
situations. <small>DDD</small> recognizes if two or more data displays are
10387
stored at the same physical address, and if this is so, merges all these
10388
<dfn>aliases</dfn> into one single data display, the <em>original data
10389
display</em>. This mode is called <em>Alias Detection</em>; it is enabled via
10390
<code>Data => Detect Aliases</code>.
10392
<p>When alias detection is enabled, <small>DDD</small> inquires the memory
10393
location (the <em>address</em>) of each data display after each program
10394
step. If two displays have the same address, they are merged into one.
10395
More specifically, only the one which has least recently changed remains
10396
(the <em>original data display</em>); all other aliases are
10397
<em>suppressed</em>, i.e. completely hidden. The edges leading to the
10398
aliases are replaced by edges leading to the original data display.
10400
<p>An edge created by alias detection is somewhat special: rather than
10401
connecting two displays directly, it goes through an <dfn>edge hint</dfn>,
10402
describing an arc connecting the two displays and the edge hint.
10404
<p>Each edge hint is a placeholder for a suppressed alias; selecting an
10405
edge hint is equivalent to selecting the alias. This way, you can
10406
easily delete display aliases by simply selecting the edge hint and
10407
clicking on <code>Undisp</code>.
10410
<div align="center"><img src="PICS/ddd-aliases.jpg" alt="PICS/ddd-aliases.jpg"></div>
10412
<p>To access suppressed display aliases, you can also use the Display
10413
Editor. Suppressed displays are listed in the Display Editor as
10414
<em>aliases</em> of the original data display. Via the Display Editor,
10415
you can select, change, and delete suppressed displays.
10417
<p>Suppressed displays become visible again as soon as
10420
<li>alias detection is disabled,
10422
<li>their address changes such that they are no more aliases, or
10424
<li>the original data display is deleted, such that the least recently
10425
changed alias becomes the new original data display.
10428
<p>Please note the following <em>caveats</em> with alias detection:
10431
<li>Alias detection requires that the current programming language provides
10432
a means to determine the address of an arbitrary data object.
10433
Currently, only C, C++, and Java are supported.
10435
<li>Some inferior debuggers (for instance, SunOS <small>DBX</small>) produce incorrect
10436
output for address expressions. Given a pointer <var>p</var>, you may verify
10437
the correct function of your inferior debugger by comparing the values
10438
of <var>p</var> and <code>&</code><var>p</var><code></code> (unless <var>p</var> actually points to
10439
itself). You can also examine the data display addresses, as shown in
10440
the Display Editor.
10442
<li>Alias detection slows down <small>DDD</small> slightly, which is why you can turn
10443
it off. You may consider to enable it only at need--for
10444
instance, while examining some complex data structure--and disable it
10445
while examining control flow (i.e., stepping through your program).
10446
<small>DDD</small> will automatically restore edges and data displays when
10450
<p>Alias detection is controlled by the following resources:
10453
<table width="100%">
10455
<td align="left"><b>deleteAliasDisplays</b><i> </i>(<i>class DeleteAliasDisplays</i>)<i>
10457
<td align="right">Resource</td>
10460
<table width="95%" align="center">
10462
If this is <code>on</code> (default), the <code>Undisplay ()</code> button also
10463
deletes all aliases of the selected displays. If this is <code>off</code>,
10464
only the selected displays are deleted; the aliases remain, and one of
10465
the aliases will be unsuppressed.
10470
<table width="100%">
10472
<td align="left"><b>detectAliases</b><i> </i>(<i>class DetectAliases</i>)<i>
10474
<td align="right">Resource</td>
10477
<table width="95%" align="center">
10479
If <code>on</code> (default), <small>DDD</small> attempts to recognize shared data structures.
10480
If <code>off</code>, shared data structures are not
10486
<table width="100%">
10488
<td align="left"><b>typedAliases</b><i> </i>(<i>class TypedAliases</i>)<i>
10490
<td align="right">Resource</td>
10493
<table width="95%" align="center">
10495
If <code>on</code> (default), <small>DDD</small> requires structural equivalence in
10496
order to recognize shared data structures. If this is <code>off</code>, two
10497
displays at the same address are considered aliases, regardless of their
10504
<small class=header>
10505
Node:<a name="Display%20Shortcuts">Display Shortcuts</a>,
10506
Previous:<a rel="previous" accesskey="p" href="#Shared%20Structures">Shared Structures</a>,
10507
Up:<a rel="up" accesskey="u" href="#Examining%20Structures">Examining Structures</a>
10513
<h5 class="subsubsection">Display Shortcuts</h5>
10515
<p><small>DDD</small> maintains a <em>shortcut menu</em> of frequently used display
10516
expressions. This menu is activated
10519
<li>by pressing and holding the <code>Display</code> button, or
10521
<li>by pressing <em>mouse button 3</em> on some display and selecting
10522
<code>New Display</code>, or
10524
<li>by pressing <Shift> and <em>mouse button 3</em> on some display.
10527
<p>By default, the shortcut menu contains frequently used base conversions.
10529
<p>The <code>Other</code> entry in the shortcut menu lets you create a new
10530
display that <em>extends</em> the shortcut menu.
10532
<p>As an example, assume you have selected a display named <code>date_ptr</code>.
10533
Selecting <code>Display => Other</code> pops up a dialog that allows
10534
you to enter a new expression to be displayed--for instance, you can
10535
cast the display <code>date_ptr</code> to a new display <code>(char
10536
*)date_ptr</code>. If the <code>Include in New Display Menu</code> toggle
10537
was activated, the shortcut menu will then contain a new entry
10538
<code>Display (char *)()</code> that will cast <em>any</em> selected display
10539
<var>display</var> to <code>(char *)</code><var>display</var><code></code>. Such shortcuts can save
10540
you a lot of time when examining complex data structures.
10543
<div align="center"><img src="PICS/ddd-shortcuts.jpg" alt="PICS/ddd-shortcuts.jpg"></div>
10545
<p>You can edit the contents of the <code>New Display</code> menu by selecting
10546
its <code>Edit Menu</code> item. This pops up the <em>Shortcut Editor</em>
10547
containing all shortcut expressions, which you can edit at leisure.
10548
Each line contains the expression for exactly one menu item. Clicking
10549
on <code>Apply</code> re-creates the <code>New Display</code> menu from the text.
10550
If the text is empty, the <code>New Display</code> menu will be empty, too.
10553
<div align="center"><img src="PICS/ddd-shortcut-editor.jpg" alt="PICS/ddd-shortcut-editor.jpg"></div>
10555
<p><small>DDD</small> also allows you to specify individual labels for
10556
user-defined buttons. You can write such a label after the expression,
10557
separated by <code>//</code>. This feature is used in the default contents of
10558
the <small>GDB</small> <code>New Display</code> menu, where each of the base conversions has
10561
<pre class="example"> /t () // Convert to Bin
10562
/d () // Convert to Dec
10563
/x () // Convert to Hex
10564
/o () // Convert to Oct
10567
<p>Feel free to add other conversions here. <small>DDD</small> supports up to 20
10568
<code>New Display</code> menu items.
10570
<p>The shortcut menu is controlled by the following resources:
10573
<table width="100%">
10575
<td align="left"><b>dbxDisplayShortcuts</b><i> </i>(<i>class DisplayShortcuts</i>)<i>
10577
<td align="right">Resource</td>
10580
<table width="95%" align="center">
10582
A newline-separated list of display expressions to be included in the
10583
<code>New Display</code> menu for <small>DBX</small>.
10585
<p>If a line contains a label delimiter<a rel="footnote" href="#fn-29"><sup>29</sup></a>, the string before the delimiter is used as
10586
<var>expression</var>, and the string after the delimiter is used as label.
10587
Otherwise, the label is <code>Display </code><var>expression</var><code></code>. Upon
10588
activation, the string <code>()</code> in <var>expression</var> is replaced by the
10589
name of the currently selected display.
10594
<table width="100%">
10596
<td align="left"><b>gdbDisplayShortcuts</b><i> </i>(<i>class DisplayShortcuts</i>)<i>
10598
<td align="right">Resource</td>
10601
<table width="95%" align="center">
10603
A newline-separated list of display expressions to be included in the
10604
<code>New Display</code> menu for <small>GDB</small>. See the description of
10605
<code>dbxDisplayShortcuts</code>, above.
10610
<table width="100%">
10612
<td align="left"><b>jdbDisplayShortcuts</b><i> </i>(<i>class DisplayShortcuts</i>)<i>
10614
<td align="right">Resource</td>
10617
<table width="95%" align="center">
10619
A newline-separated list of display expressions to be included in the
10620
<code>New Display</code> menu for <small>JDB</small>. See the description of
10621
<code>dbxDisplayShortcuts</code>, above.
10626
<table width="100%">
10628
<td align="left"><b>perlDisplayShortcuts</b><i> </i>(<i>class DisplayShortcuts</i>)<i>
10630
<td align="right">Resource</td>
10633
<table width="95%" align="center">
10635
A newline-separated list of display expressions to be included in the
10636
<code>New Display</code> menu for Perl. See the description of
10637
<code>dbxDisplayShortcuts</code>, above.
10642
<table width="100%">
10644
<td align="left"><b>bashDisplayShortcuts</b><i> </i>(<i>class DisplayShortcuts</i>)<i>
10646
<td align="right">Resource</td>
10649
<table width="95%" align="center">
10651
A newline-separated list of display expressions to be included in the
10652
<code>New Display</code> menu for Bash. See the description of
10653
<code>dbxDisplayShortcuts</code>, above.
10658
<table width="100%">
10660
<td align="left"><b>pydbDisplayShortcuts</b><i> </i>(<i>class DisplayShortcuts</i>)<i>
10662
<td align="right">Resource</td>
10665
<table width="95%" align="center">
10667
A newline-separated list of display expressions to be included in the
10668
<code>New Display</code> menu for <small>PYDB</small>. See the description of
10669
<code>dbxDisplayShortcuts</code>, above.
10674
<table width="100%">
10676
<td align="left"><b>xdbDisplayShortcuts</b><i> </i>(<i>class DisplayShortcuts</i>)<i>
10678
<td align="right">Resource</td>
10681
<table width="95%" align="center">
10683
A newline-separated list of display expressions to be included in the
10684
<code>New Display</code> menu for <small>XDB</small>. See the description of
10685
<code>dbxDisplayShortcuts</code>, above.
10691
<small class=header>
10692
Node:<a name="Customizing%20Displays">Customizing Displays</a>,
10693
Next:<a rel="next" accesskey="n" href="#Layouting%20the%20Graph">Layouting the Graph</a>,
10694
Previous:<a rel="previous" accesskey="p" href="#Examining%20Structures">Examining Structures</a>,
10695
Up:<a rel="up" accesskey="u" href="#Displaying%20Values">Displaying Values</a>
10701
<h4 class="subsection">Customizing Displays</h4>
10704
<li><a accesskey="1" href="#Using%20Data%20Themes">Using Data Themes</a>:
10705
<li><a accesskey="2" href="#Applying%20Data%20Themes%20to%20Several%20Values">Applying Data Themes to Several Values</a>:
10706
<li><a accesskey="3" href="#Editing%20Themes">Editing Themes</a>:
10707
<li><a accesskey="4" href="#Writing%20Data%20Themes">Writing Data Themes</a>:
10708
<li><a accesskey="5" href="#Display%20Resources">Display Resources</a>:
10709
<li><a accesskey="6" href="#VSL%20Resources">VSL Resources</a>:
10714
<small class=header>
10715
Node:<a name="Using%20Data%20Themes">Using Data Themes</a>,
10716
Next:<a rel="next" accesskey="n" href="#Applying%20Data%20Themes%20to%20Several%20Values">Applying Data Themes to Several Values</a>,
10717
Up:<a rel="up" accesskey="u" href="#Customizing%20Displays">Customizing Displays</a>
10723
<h5 class="subsubsection">Using Data Themes</h5>
10725
<p><small>DDD</small> provides a simple method to customize displays. <small>DDD</small> comes
10726
with a number of <em>visual modifiers</em>, called <em>data themes</em>.
10728
<p>Each theme modifies a particular aspect of a data display. It can be
10729
applied to individual displays or to a number of displays. The themes
10730
installed with <small>DDD</small> include:
10733
<dt><code>Small Titles</code>
10734
<dd>Apply this theme to show display titles in a smaller font.
10735
<br><dt><code>Small Values</code>
10736
<dd>Apply this theme to display values in a smaller font.
10737
<br><dt><code>Tiny Values</code>
10738
<dd>Apply this theme to display values in a tiny font.
10739
<br><dt><code>Suppress Values</code>
10740
<dd>Apply this theme to display values not at all.
10743
<p>Each of these themes can be applied for specific displays.
10746
<div align="center"><img src="PICS/ddd-themes.jpg" alt="PICS/ddd-themes.jpg"></div>
10748
<p>To apply a theme on a display,
10749
<ol type=1 start=1>
10750
<li>Press <em>mouse button 3</em> on the display.
10751
<li>Select <code>Theme</code>
10752
<li>Select the theme to apply.
10755
<p>For instance, to display the variable <code>s</code> in a tiny font, click
10756
<em>mouse button 3</em> on the display of <code>s</code>, and select <code>Theme
10757
=> Tiny Values => Apply</code>.
10759
<p>To unapply a theme, just click on <code>Undo</code> (if you just applied it)
10760
or repeat the sequence as above.
10764
<small class=header>
10765
Node:<a name="Applying%20Data%20Themes%20to%20Several%20Values">Applying Data Themes to Several Values</a>,
10766
Next:<a rel="next" accesskey="n" href="#Editing%20Themes">Editing Themes</a>,
10767
Previous:<a rel="previous" accesskey="p" href="#Using%20Data%20Themes">Using Data Themes</a>,
10768
Up:<a rel="up" accesskey="u" href="#Customizing%20Displays">Customizing Displays</a>
10774
<h5 class="subsubsection">Applying Data Themes to Several Values</h5>
10776
<p>Whenever you want to apply a theme on a <em>struct member</em> or an
10777
<em>array element,</em> you will be asked whether to
10780
<li>apply the theme on the single value only, or
10781
<li>apply the theme on all similar values.
10784
<p>Suppose, for instance, that you don't want to see <code>vptr</code> members
10785
anymore. Then you'd apply the theme <em>Suppress Values</em> on all
10788
<p>On the other hand, if you want to highlight one single value only, you'd
10789
apply the theme <em>Red Background</em> on only one single value.
10791
<p>If you find this confirmation annoying, you can define a command button
10792
which directly applies the theme. See <a href="#Defining%20Commands">Defining Commands</a>, for details
10793
on defining commands.
10795
<p>Applying and unapplying themes is associated with the following commands:
10797
<pre class="example"> graph apply theme <var>name</var> <var>pattern</var>
10799
applies the theme <var>name</var> on <var>pattern</var>.
10801
<pre class="example"> graph unapply theme <var>name</var> <var>pattern</var>
10803
unapplies the theme <var>name</var> on <var>pattern</var>.
10805
<pre class="example"> graph toggle theme <var>name</var> <var>pattern</var>
10807
applies the theme <var>name</var> on <var>pattern</var> if it was not already
10808
applied, and unapplies it otherwise.
10812
<small class=header>
10813
Node:<a name="Editing%20Themes">Editing Themes</a>,
10814
Next:<a rel="next" accesskey="n" href="#Writing%20Data%20Themes">Writing Data Themes</a>,
10815
Previous:<a rel="previous" accesskey="p" href="#Applying%20Data%20Themes%20to%20Several%20Values">Applying Data Themes to Several Values</a>,
10816
Up:<a rel="up" accesskey="u" href="#Customizing%20Displays">Customizing Displays</a>
10822
<h5 class="subsubsection">Editing Themes</h5>
10824
<p>Each theme can be globally activated or not. If a theme is activated,
10825
it is applied to all expressions that match its <em>pattern</em>.
10827
<p>Normally, these patterns are automatically maintained by simply
10828
selecting the themes for the individual displays. However, you can also
10829
edit patterns directly.
10831
<p>Patterns are separated by <code>;</code> and contain shell-like metacharacters:
10833
<li><code>*</code> matches any sequence of characters.
10834
<li><code>?</code> matches any single character.
10835
<li><code>[</code><var>set</var><code>]</code> matches any character in <var>set</var>. Character ranges
10836
can be expressed using <var>from</var>-<var>to</var>: <code>[0-9a-zA-Z_]</code> is the
10837
set of characters allowed in C characters.
10838
<li><code>[!</code><var>set</var><code>]</code> matches any character not in <var>set</var>.
10839
<li>To suppress the special syntactic significance of any metacharacter\n\
10840
and match the character exactly, precede it with <code>\</code> (backslash).
10841
<li>To suppress the syntactic significance of <em>all</em> metacharacters,\n\
10842
enclose the pattern in double or single quotes.\n\
10845
<p>To edit the set of themes, invoke <code>Data => Themes</code>.
10847
<p>To apply changes you made to the themes, click on <code>Apply</code>.
10848
To revert the themes to the last saved, click on <code>Reset</code>.
10852
<small class=header>
10853
Node:<a name="Writing%20Data%20Themes">Writing Data Themes</a>,
10854
Next:<a rel="next" accesskey="n" href="#Display%20Resources">Display Resources</a>,
10855
Previous:<a rel="previous" accesskey="p" href="#Editing%20Themes">Editing Themes</a>,
10856
Up:<a rel="up" accesskey="u" href="#Customizing%20Displays">Customizing Displays</a>
10862
<h5 class="subsubsection">Writing Data Themes</h5>
10864
<p>You can write your own data themes, customizing the display to match
10865
your need. See <a href="ddd-themes.html#Top">Top</a>, for details.
10869
<small class=header>
10870
Node:<a name="Display%20Resources">Display Resources</a>,
10871
Next:<a rel="next" accesskey="n" href="#VSL%20Resources">VSL Resources</a>,
10872
Previous:<a rel="previous" accesskey="p" href="#Writing%20Data%20Themes">Writing Data Themes</a>,
10873
Up:<a rel="up" accesskey="u" href="#Customizing%20Displays">Customizing Displays</a>
10879
<h5 class="subsubsection">Display Resources</h5>
10881
<p>You can use these resources to control display appearance:
10884
<table width="100%">
10886
<td align="left"><b>autoCloseDataWindow</b><i> </i>(<i>class AutoClose</i>)<i>
10888
<td align="right">Resource</td>
10891
<table width="95%" align="center">
10893
If this is <code>on</code> (default) and <small>DDD</small> is in stacked window
10894
mode, deleting the last display automatically closes the data window.
10895
If this is <code>off</code>, the data window stays open even after deleting
10901
<table width="100%">
10903
<td align="left"><b>bumpDisplays</b><i> </i>(<i>class BumpDisplays</i>)<i>
10905
<td align="right">Resource</td>
10908
<table width="95%" align="center">
10910
If some display <var>d</var> changes size and this resource is <code>on</code>
10911
(default), <small>DDD</small> assigns new positions to displays below and on
10912
the right of <var>d</var> such that the distance between displays remains
10913
constant. If this is <code>off</code>, other displays are not rearranged.
10918
<table width="100%">
10920
<td align="left"><b>clusterDisplays</b><i> </i>(<i>class ClusterDisplays</i>)<i>
10922
<td align="right">Resource</td>
10925
<table width="95%" align="center">
10927
If <code>on</code>, new independent data displays will automatically be
10928
clustered. Default is <code>off</code>, meaning to leave new displays
10934
<table width="100%">
10936
<td align="left"><b>hideInactiveDisplays</b><i> </i>(<i>class HideInactiveDisplays</i>)<i>
10938
<td align="right">Resource</td>
10941
<table width="95%" align="center">
10943
If some display gets out of scope and this resource is <code>on</code>
10944
(default), <small>DDD</small> removes it from the data display. If this is
10945
<code>off</code>, it is simply disabled.
10950
<table width="100%">
10952
<td align="left"><b>showBaseDisplayTitles</b><i> </i>(<i>class ShowDisplayTitles</i>)<i>
10954
<td align="right">Resource</td>
10957
<table width="95%" align="center">
10959
Whether to assign titles to base (independent) displays or not.
10960
Default is <code>on</code>.
10965
<table width="100%">
10967
<td align="left"><b>showDependentDisplayTitles</b><i> </i>(<i>class ShowDisplayTitles</i>)<i>
10969
<td align="right">Resource</td>
10972
<table width="95%" align="center">
10974
Whether to assign titles to dependent displays or not. Default is
10980
<table width="100%">
10982
<td align="left"><b>suppressTheme</b><i> </i>(<i>class Theme</i>)<i>
10984
<td align="right">Resource</td>
10987
<table width="95%" align="center">
10989
The theme to apply when selecting <code>Undisp</code> on a data value.
10990
Default is <code>suppress.vsl</code>.
10995
<table width="100%">
10997
<td align="left"><b>themes</b><i> </i>(<i>class Themes</i>)<i>
10999
<td align="right">Resource</td>
11002
<table width="95%" align="center">
11004
A newline-separated list of themes. Each theme has the format
11005
<var>name</var>, tabulator character, <var>pattern</var>.
11011
<small class=header>
11012
Node:<a name="VSL%20Resources">VSL Resources</a>,
11013
Previous:<a rel="previous" accesskey="p" href="#Display%20Resources">Display Resources</a>,
11014
Up:<a rel="up" accesskey="u" href="#Customizing%20Displays">Customizing Displays</a>
11020
<h5 class="subsubsection">VSL Resources</h5>
11022
<p>The following resources control the <small>VSL</small> interpreter:
11025
<table width="100%">
11027
<td align="left"><b>vslBaseDefs</b><i> </i>(<i>class VSLDefs</i>)<i>
11029
<td align="right">Resource</td>
11032
<table width="95%" align="center">
11034
A string with additional <small>VSL</small> definitions that are appended to the
11035
builtin <small>VSL</small> library. This resource is prepended to the <code>vslDefs</code>
11036
resource below and set in the <small>DDD</small> application defaults file;
11042
<table width="100%">
11044
<td align="left"><b>vslDefs</b><i> </i>(<i>class VSLDefs</i>)<i>
11046
<td align="right">Resource</td>
11049
<table width="95%" align="center">
11051
A string with additional <small>VSL</small> definitions that are appended to the
11052
builtin <small>VSL</small> library. The default value is an empty string. This
11053
resource can be used to override specific <small>VSL</small> definitions that affect
11054
the data display. The preferred method, though, is to write a specific
11055
data theme (see <a href="#Writing%20Data%20Themes">Writing Data Themes</a>).
11060
<table width="100%">
11062
<td align="left"><b>vslLibrary</b><i> </i>(<i>class VSLLibrary</i>)<i>
11064
<td align="right">Resource</td>
11067
<table width="95%" align="center">
11069
The <small>VSL</small> library to use. <code>builtin</code> (default) means to
11070
use the built-in library, any other value is used as file name.
11075
<table width="100%">
11077
<td align="left"><b>vslPath</b><i> </i>(<i>class VSLPath</i>)<i>
11079
<td align="right">Resource</td>
11082
<table width="95%" align="center">
11084
A colon-separated list of directories to search for <small>VSL</small> include
11085
files. The following directory names are special:
11087
<li>The special directory name <code>user_themes</code> stands for your individual
11088
theme directory, typically <code>~/.ddd/themes/</code>.
11089
<li>The special directory name <code>ddd_themes</code> stands for the installed
11091
typically <code>/usr/local/share/ddd-3.3.9-test2/themes/</code>.
11093
Default is <code>user_themes:ddd_themes:.</code>, which means that <small>DDD</small>
11094
first searches your theme directory, followed by the system directory
11095
and the current directory.
11099
<p>If your <small>DDD</small> source distribution is installed in <code>/opt/src</code>,
11100
you can use the following settings to read the <small>VSL</small> library from
11101
<code>/home/joe/ddd.vsl</code>:
11103
<pre class="example"> Ddd*vslLibrary: /home/joe/ddd.vsl
11104
Ddd*vslPath: user_themes:.:/opt/src/ddd/ddd:/opt/src/ddd/vsllib
11107
<p><small>VSL</small> include files referenced by <code>/home/joe/ddd.vsl</code> are searched
11108
first in the current directory <code>.</code>, then in your theme directory,
11109
then in <code>/opt/src/ddd/ddd/</code>, and then in
11110
<code>/opt/src/ddd/vsllib/</code>.
11112
<p>Instead of supplying another <small>VSL</small> library, it is often easier to
11113
specify some minor changes to the built-in library
11114
(see <a href="#Writing%20Data%20Themes">Writing Data Themes</a>).
11118
<small class=header>
11119
Node:<a name="Layouting%20the%20Graph">Layouting the Graph</a>,
11120
Next:<a rel="next" accesskey="n" href="#Printing%20the%20Graph">Printing the Graph</a>,
11121
Previous:<a rel="previous" accesskey="p" href="#Customizing%20Displays">Customizing Displays</a>,
11122
Up:<a rel="up" accesskey="u" href="#Displaying%20Values">Displaying Values</a>
11128
<h4 class="subsection">Layouting the Graph</h4>
11130
<p>If you have several displays at once, you may wish to arrange them
11131
according to your personal preferences. This section tells you how you
11135
<li><a accesskey="1" href="#Moving%20Displays">Moving Displays</a>:
11136
<li><a accesskey="2" href="#Scrolling%20Data">Scrolling Data</a>:
11137
<li><a accesskey="3" href="#Aligning%20Displays">Aligning Displays</a>:
11138
<li><a accesskey="4" href="#Automatic%20Layout">Automatic Layout</a>:
11139
<li><a accesskey="5" href="#Rotating%20the%20Graph">Rotating the Graph</a>:
11144
<small class=header>
11145
Node:<a name="Moving%20Displays">Moving Displays</a>,
11146
Next:<a rel="next" accesskey="n" href="#Scrolling%20Data">Scrolling Data</a>,
11147
Up:<a rel="up" accesskey="u" href="#Layouting%20the%20Graph">Layouting the Graph</a>
11153
<h5 class="subsubsection">Moving Displays</h5>
11155
<p>From time to time, you may wish to move displays at another place in the
11156
data window. You can move a single display by pressing and holding
11157
<em>mouse button 1</em> on the display title. Moving the pointer while
11158
holding the button causes all selected displays to move along with the
11161
<p>Edge hints can be selected and moved around like other displays. If an
11162
arc goes through the edge hint, you can change the shape of the arc by
11163
moving the edge hint around.
11165
<p>For fine-grain movements, selected displays may also be moved using the
11166
arrow keys. Pressing <Shift> and an arrow key moves displays by
11167
single pixels. Pressing <Ctrl> and arrow keys moves displays by
11172
<small class=header>
11173
Node:<a name="Scrolling%20Data">Scrolling Data</a>,
11174
Next:<a rel="next" accesskey="n" href="#Aligning%20Displays">Aligning Displays</a>,
11175
Previous:<a rel="previous" accesskey="p" href="#Moving%20Displays">Moving Displays</a>,
11176
Up:<a rel="up" accesskey="u" href="#Layouting%20the%20Graph">Layouting the Graph</a>
11182
<h5 class="subsubsection">Scrolling Data</h5>
11184
<p>If the data window becomes too small to hold all displays, scroll bars
11185
are created. If your <small>DDD</small> is set up to use <em>panners</em>
11186
instead, a panner is created in the lower right edge. When the panner
11187
is moved around, the window view follows the position of the panner.
11189
<p>To change from scroll bars to panners, use <code>Edit => Startup
11190
=> Data Scrolling</code> and choose either <code>Panner</code> or
11191
<code>Scrollbars</code>.
11193
<p>This setting is tied to the following resource:
11196
<table width="100%">
11198
<td align="left"><b>pannedGraphEditor</b><i> </i>(<i>class PannedGraphEditor</i>)<i>
11200
<td align="right">Resource</td>
11203
<table width="95%" align="center">
11205
The control to scroll the graph.
11208
<li>If this is <code>on</code>, an Athena panner is used (a kind of
11209
two-directional scrollbar).
11210
<li>If this is <code>off</code> (default), two M*tif scrollbars are used.
11213
<p>See <a href="#Options">Options</a>, for the <code>--scrolled-graph-editor</code> and
11214
<code>--panned-graph-editor</code> options.
11220
<small class=header>
11221
Node:<a name="Aligning%20Displays">Aligning Displays</a>,
11222
Next:<a rel="next" accesskey="n" href="#Automatic%20Layout">Automatic Layout</a>,
11223
Previous:<a rel="previous" accesskey="p" href="#Scrolling%20Data">Scrolling Data</a>,
11224
Up:<a rel="up" accesskey="u" href="#Layouting%20the%20Graph">Layouting the Graph</a>
11230
<h5 class="subsubsection">Aligning Displays</h5>
11232
<p>You can align all displays on the nearest grid position by selecting
11233
<code>Data => Align on Grid</code>. This is useful for keeping edges
11234
strictly horizontal or vertical.
11236
<p>You can enforce alignment by selecting <code>Edit => Preferences
11237
=> Data => Auto-align Displays on Nearest Grid Point</code>. If
11238
this feature is enabled, displays can be moved on grid positions only.
11242
<small class=header>
11243
Node:<a name="Automatic%20Layout">Automatic Layout</a>,
11244
Next:<a rel="next" accesskey="n" href="#Rotating%20the%20Graph">Rotating the Graph</a>,
11245
Previous:<a rel="previous" accesskey="p" href="#Aligning%20Displays">Aligning Displays</a>,
11246
Up:<a rel="up" accesskey="u" href="#Layouting%20the%20Graph">Layouting the Graph</a>
11252
<h5 class="subsubsection">Automatic Layout</h5>
11254
<p>You can layout the entire graph as a tree by selecting <code>Data
11255
=> Layout Graph</code>. The layout direction is determined from the
11256
display placement (see <a href="#Placement">Placement</a>) and from the last rotation
11257
(see <a href="#Rotating%20the%20Graph">Rotating the Graph</a>).
11260
<div align="center"><img src="PICS/ddd-layout.jpg" alt="PICS/ddd-layout.jpg"></div>
11262
<p>Layouting the graph may introduce <dfn>edge hints</dfn>; that is, edges are
11263
no more straight lines, but lead to an edge hint and from there to their
11264
destination. Edge hints can be moved around like arbitrary displays.
11266
<p>To enable a more compact layout, you can set the <code>Edit =>
11267
Preferences => Data => Compact Layout</code> option. This
11268
realizes an alternate layout algorithm, where successors are placed next
11269
to their parents. This algorithm is suitable for homogeneous data
11272
<p>You can enforce layout by setting <code>Edit => Preferences
11273
=> Data => Automatic Layout</code>. If automatic layout is
11274
enabled, the graph is layouted after each change.
11278
<small class=header>
11279
Node:<a name="Rotating%20the%20Graph">Rotating the Graph</a>,
11280
Previous:<a rel="previous" accesskey="p" href="#Automatic%20Layout">Automatic Layout</a>,
11281
Up:<a rel="up" accesskey="u" href="#Layouting%20the%20Graph">Layouting the Graph</a>
11287
<h5 class="subsubsection">Rotating the Graph</h5>
11289
<p>You can rotate the entire graph clockwise by 90 degrees by selecting
11290
<code>Data => Rotate Graph</code>. You may need to layout the graph
11291
after rotating it; See <a href="#Automatic%20Layout">Automatic Layout</a>, for details.
11295
<small class=header>
11296
Node:<a name="Printing%20the%20Graph">Printing the Graph</a>,
11297
Previous:<a rel="previous" accesskey="p" href="#Layouting%20the%20Graph">Layouting the Graph</a>,
11298
Up:<a rel="up" accesskey="u" href="#Displaying%20Values">Displaying Values</a>
11304
<h4 class="subsection">Printing the Graph</h4>
11306
<p><small>DDD</small> allows for printing the graph picture on PostScript printers
11307
or into files. This is useful for documenting program states.
11310
<div align="center"><img src="PICS/ddd-print-graph.jpg" alt="PICS/ddd-print-graph.jpg"></div>
11312
<p>To print the graph on a PostScript printer, select <code>File =>
11313
Print Graph</code>. Enter the printing command in the <code>Print Command</code>
11314
field. Click on the <code>OK</code> or the <code>Apply</code> button to start
11317
<p>As an alternative, you may also print the graph in a file. Click on the
11318
<code>File</code> button and enter the file name in the <code>File Name</code>
11319
field. Click on the <code>Print</code> button to create the file.
11321
<p>When the graph is printed in a file, two formats are available:
11324
<li><code>PostScript</code>--suitable for enclosing the graph in another
11327
<li><code>FIG</code>--suitable for post-processing, using the <code>xfig</code>
11328
graphic editor, or for conversion into other formats (among others,
11329
<small>IBMGL</small>, TeX, <small>PIC</small>), using the <code>transfig</code> or
11330
<code>fig2dev</code> programs.
11334
<div align="center"><img src="PICS/ddd-print-output.jpg" alt="PICS/ddd-print-output.jpg"></div>
11336
<p>Please note the following <em>caveats</em> related to printing graphs:
11339
<li>If any displays were selected when invoking the <code>Print</code> dialog, the
11340
option <code>Selected Only</code> is set. This makes <small>DDD</small> print only
11341
the selected displays.
11343
<li>The <code>Color</code>, <code>Orientation</code>, and <code>Paper Size</code> options are
11344
meaningful for PostScript only.
11347
<p>These settings are tied to the following resources:
11350
<table width="100%">
11352
<td align="left"><b>printCommand</b><i> </i>(<i>class PrintCommand</i>)<i>
11354
<td align="right">Resource</td>
11357
<table width="95%" align="center">
11359
The command to print a PostScript file. Usually <code>lp</code> or
11365
<table width="100%">
11367
<td align="left"><b>paperSize</b><i> </i>(<i>class PaperSize</i>)<i>
11369
<td align="right">Resource</td>
11372
<table width="95%" align="center">
11374
The paper size used for printing, in format <code></code><var>width</var><code> x
11375
</code><var>height</var><code></code>. The default is ISO A4 format, or <code>210mm x 297mm</code>.
11381
<small class=header>
11382
Node:<a name="Plotting%20Values">Plotting Values</a>,
11383
Next:<a rel="next" accesskey="n" href="#Examining%20Memory">Examining Memory</a>,
11384
Previous:<a rel="previous" accesskey="p" href="#Displaying%20Values">Displaying Values</a>,
11385
Up:<a rel="up" accesskey="u" href="#Examining%20Data">Examining Data</a>
11391
<h3 class="section">Plotting Values</h3>
11393
<p>If you have huge amounts of numerical data to examine, a picture often
11394
says more than a thousand numbers. Therefore, <small>DDD</small> allows you to
11395
draw numerical values in nice 2-D and 3-D plots.
11398
<li><a accesskey="1" href="#Plotting%20Arrays">Plotting Arrays</a>: Plotting 1-D and 2-D arrays.
11399
<li><a accesskey="2" href="#Plot%20Appearance">Plot Appearance</a>: Controlling the appearance.
11400
<li><a accesskey="3" href="#Scalars%20and%20Composites">Scalars and Composites</a>: Plotting simple values.
11401
<li><a accesskey="4" href="#Plotting%20Histories">Plotting Histories</a>: Plotting the history of a variable.
11402
<li><a accesskey="5" href="#Printing%20Plots">Printing Plots</a>: Printing on paper.
11403
<li><a accesskey="6" href="#Entering%20Plotting%20Commands">Entering Plotting Commands</a>: Raw Gnuplot commands.
11404
<li><a accesskey="7" href="#Exporting%20Plot%20Data">Exporting Plot Data</a>: Processing data outside of <small>DDD</small>
11405
<li><a accesskey="8" href="#Animating%20Plots">Animating Plots</a>: Visualizing dynamic behaviour.
11406
<li><a accesskey="9" href="#Customizing%20Plots">Customizing Plots</a>: All at your leisure.
11411
<small class=header>
11412
Node:<a name="Plotting%20Arrays">Plotting Arrays</a>,
11413
Next:<a rel="next" accesskey="n" href="#Plot%20Appearance">Plot Appearance</a>,
11414
Up:<a rel="up" accesskey="u" href="#Plotting%20Values">Plotting Values</a>
11420
<h4 class="subsection">Plotting Arrays</h4>
11422
<p>Basically, <small>DDD</small> can plot two types of numerical values:
11425
<li>One-dimensional arrays. These are drawn in a 2-D <var>x</var>/<var>y</var> space,
11426
where <var>x</var> denotes the array index, and <var>y</var> the element value.
11428
<li>Two-dimensional arrays. These are drawn in a 3-D
11429
<var>x</var>/<var>y</var>/<var>z</var> space, where <var>x</var> and <var>y</var> denote the
11430
array indexes, and <var>z</var> the element value.
11433
<p>To plot a fixed-size array, select its name by clicking <em>mouse
11434
button 1</em> on an occurrence. The array name is copied to the argument
11435
field. By clicking the <code>Plot</code> button, a new display is created in
11436
the data window, followed by a new top-level window containing the value
11439
<p>To plot a dynamically sized array, you must use an array slice
11440
(see <a href="#Array%20Slices">Array Slices</a>). In the argument field, enter
11442
<pre class="example"> <var>array</var>[<var>first</var>]@<var>nelems</var>
11445
<p>where <var>array</var> is the name of the array to display, <var>first</var> is
11446
the index of the first element, and <var>nelems</var> is the number of
11447
elements to display. Then, click on <code>Plot</code> to start the plot.
11449
<p>To plot a value, you can also enter a command at the debugger prompt:
11451
<pre class="example"> graph plot <var>expr</var>
11454
<p>works like <code>graph display </code><var>expr</var><code></code> (and takes the same
11455
arguments; see <a href="#Creating%20Single%20Displays">Creating Single Displays</a>), but the value is
11456
additionally shown in the plot window.
11458
<p>Each time the value changes during program execution, the plot is
11459
updated to reflect the current values. The plot window remains active
11460
until you close it (via <code>File => Close</code>) or until the
11461
associated display is deleted.
11465
<small class=header>
11466
Node:<a name="Plot%20Appearance">Plot Appearance</a>,
11467
Next:<a rel="next" accesskey="n" href="#Scalars%20and%20Composites">Scalars and Composites</a>,
11468
Previous:<a rel="previous" accesskey="p" href="#Plotting%20Arrays">Plotting Arrays</a>,
11469
Up:<a rel="up" accesskey="u" href="#Plotting%20Values">Plotting Values</a>
11475
<h4 class="subsection">Changing the Plot Appearance</h4>
11477
<p>The actual drawing is not done by <small>DDD</small> itself. Instead,
11478
<small>DDD</small> relies on an external <code>gnuplot</code> program to create the
11481
<p><small>DDD</small> adds a menu bar to the Gnuplot plot window that lets you
11482
influence the appearance of the plot:
11485
<li>The <code>View</code> menu toggles optional parts of the plot, such as
11486
border lines or a background grid.
11488
<li>The <code>Plot</code> menu changes the <dfn>plotting style</dfn>. The <code>3-D
11489
Lines</code> option is useful for plotting two-dimensional arrays.
11491
<li>The <code>Scale</code> menu allows you to enable logarithmic scaling and to
11492
enable or disable the scale tics.
11494
<li>The <code>Contour</code> menu adds contour lines to 3-D plots.
11497
<p>In a 3-D plot, you can use the scroll bars to change your view position.
11498
The horizontal scroll bar rotates the plot around the <var>z</var> axis, that
11499
is, to the left and right. The vertical scroll bar rotates the plot
11500
around the <var>y</var> axis, that is, up and down.
11503
<div align="center"><img src="PICS/ddd-plots.jpg" alt="PICS/ddd-plots.jpg"></div>
11505
<p>You can also resize the plot window as desired.
11509
<small class=header>
11510
Node:<a name="Scalars%20and%20Composites">Scalars and Composites</a>,
11511
Next:<a rel="next" accesskey="n" href="#Plotting%20Histories">Plotting Histories</a>,
11512
Previous:<a rel="previous" accesskey="p" href="#Plot%20Appearance">Plot Appearance</a>,
11513
Up:<a rel="up" accesskey="u" href="#Plotting%20Values">Plotting Values</a>
11519
<h4 class="subsection">Plotting Scalars and Composites</h4>
11521
<p>Besides plotting arrays, <small>DDD</small> also allows you to plot scalars
11522
(simple numerical values). This works just like plotting arrays--you
11523
select the numerical variable, click on <code>Plot</code>, and here comes the
11524
plot. However, plotting a scalar is not very exciting. A plot that
11525
contains nothing but a scalar simply draws the scalar's value as a
11526
<var>y</var> constant--that is, a horizontal line.
11528
<p>So why care about scalars at all? <small>DDD</small> allows you to combine
11529
<em>multiple values into one plot.</em> The basic idea is: if you want to
11530
plot something that is neither an array nor a scalar, <small>DDD</small> takes all
11531
numerical sub-values it can find and plots them all together in one
11532
window. For instance, you can plot all local variables by selecting
11533
<code>Data => Display Local Variables</code>, followed by <code>Plot</code>.
11534
This will create a plot containing all numerical values as found in the
11535
current local variables. Likewise, you can plot all numeric members
11536
contained in a structure by selecting it, followed by <code>Plot</code>.
11538
<p>If you want more control about what to include in a plot and what not,
11539
you can use <em>display clusters</em> (see <a href="#Clustering">Clustering</a>). A common
11540
scenario is to plot a one-dimensional array together with the current
11541
index position. This is done in three steps:
11543
<ol type=1 start=1>
11544
<li>Display the array and the index, using <code>Display</code>.
11546
<li>Cluster both displays: select them and choose <code>Undisp =>
11549
<li>Plot the cluster by pressing <code>Plot</code>.
11552
<p>Scalars that are displayed together with arrays can be displayed either
11553
as vertical lines or horizontal lines. By default, scalars are plotted
11554
as horizontal lines. However, if a scalar is a valid index for an array
11555
that was previously plotted, it is shown as a vertical line. You can
11556
change this initial orientation by selecting the scalar display, followed
11557
by <code>Rotate</code>.
11561
<small class=header>
11562
Node:<a name="Plotting%20Histories">Plotting Histories</a>,
11563
Next:<a rel="next" accesskey="n" href="#Printing%20Plots">Printing Plots</a>,
11564
Previous:<a rel="previous" accesskey="p" href="#Scalars%20and%20Composites">Scalars and Composites</a>,
11565
Up:<a rel="up" accesskey="u" href="#Plotting%20Values">Plotting Values</a>
11571
<h4 class="subsection">Plotting Display Histories</h4>
11573
<p>At each program stop, <small>DDD</small> records the values of all displayed
11574
variables, such that you can "undo" program execution (see <a href="#Undoing%20Program%20Execution">Undoing Program Execution</a>). These <em>display histories</em> can be plotted,
11575
too. The menu item <code>Plot => Plot history of ()</code> creates a
11576
plot that shows all previously recorded values of the selected display.
11580
<small class=header>
11581
Node:<a name="Printing%20Plots">Printing Plots</a>,
11582
Next:<a rel="next" accesskey="n" href="#Entering%20Plotting%20Commands">Entering Plotting Commands</a>,
11583
Previous:<a rel="previous" accesskey="p" href="#Plotting%20Histories">Plotting Histories</a>,
11584
Up:<a rel="up" accesskey="u" href="#Plotting%20Values">Plotting Values</a>
11590
<h4 class="subsection">Printing Plots</h4>
11592
<p>If you want to print the plot, select <code>File => Print Plot</code>.
11593
This pops up the <small>DDD</small> printing dialog, set up for printing plots.
11594
Just as when printing graphs, you have the choice between printing to a
11595
printer or a file and setting up appropriate options.
11597
<p>The actual printing is also performed by Gnuplot, using the appropriate
11598
driver. Please note the following <em>caveats</em> related to printing:
11601
<li>Creating <code>FIG</code> files requires an appropriate driver built into
11602
Gnuplot. Your Gnuplot program may not contain such a driver. In this
11603
case, you will have to recompile Gnuplot, including the line
11604
<code>#define FIG</code> in the Gnuplot <code>term.h</code> file.
11606
<li>The <code>Portrait</code> option generates an <small>EPS</small> file useful for
11607
inclusion in other documents. The <code>Landscape</code> option makes
11608
<small>DDD</small> print the plot in the size specified in the <code>Paper
11609
Size</code> option; this is useful for printing on a printer. In
11610
<code>Portrait</code> mode, the <code>Paper Size</code> option is ignored.
11612
<li>The Gnuplot device drivers for PostScript and X11 each have their own
11613
set of colors, such that the printed colors may differ from the
11616
<li>The <code>Selected Only</code> option is set by default, such that only the
11617
currently selected plot is printed. (If you select multiple plots to be
11618
printed, the respective outputs will all be concatenated, which may not
11619
be what you desire.)
11624
<small class=header>
11625
Node:<a name="Entering%20Plotting%20Commands">Entering Plotting Commands</a>,
11626
Next:<a rel="next" accesskey="n" href="#Exporting%20Plot%20Data">Exporting Plot Data</a>,
11627
Previous:<a rel="previous" accesskey="p" href="#Printing%20Plots">Printing Plots</a>,
11628
Up:<a rel="up" accesskey="u" href="#Plotting%20Values">Plotting Values</a>
11634
<h4 class="subsection">Entering Plotting Commands</h4>
11636
<p>Via <code>File => Command</code>, you can enter Gnuplot commands
11637
directly. Each command entered at the <code>gnuplot></code> prompt is passed
11638
to Gnuplot, followed by a Gnuplot <code>replot</code> command to update the
11639
view. This is useful for advanced Gnuplot tasks.
11641
<p>Here's a simple example. The Gnuplot command
11643
<pre class="example"> set xrange [<var>xmin</var>:<var>xmax</var>]
11646
<p>sets the horizontal range that will be displayed to
11647
<var>xmin</var><small class="dots">...</small><var>xmax</var>. To plot only the elements 10 to 20, enter:
11649
<pre class="example"> gnuplot> <kbd>set xrange [10:20]</kbd>
11653
<p>After each command entered, <small>DDD</small> adds a <code>replot</code> command, such
11654
that the plot is updated automatically.
11656
<p>Here's a more complex example. The following sequence of Gnuplot
11657
commands saves the plot in TeX format:
11659
<pre class="example"> gnuplot> <kbd>set output "plot.tex"</kbd> # Set the output filename
11660
gnuplot> <kbd>set term latex</kbd> # Set the output format
11661
gnuplot> <kbd>set term x11</kbd> # Show original picture again
11665
<p>Due to the implicit <code>replot</code> command, the output is automatically
11666
written to <code>plot.tex</code> after the <code>set term latex</code> command.
11668
<p>The dialog keeps track of the commands entered; use the arrow keys to
11669
restore previous commands. Gnuplot error messages (if any) are also
11670
shown in the history area.
11672
<p>The interaction between <small>DDD</small> and Gnuplot is logged in the file
11673
<code>~/.ddd/log</code> (see <a href="#Logging">Logging</a>). The <small>DDD</small>
11674
<code>--trace</code> option logs this interaction on standard output.
11678
<small class=header>
11679
Node:<a name="Exporting%20Plot%20Data">Exporting Plot Data</a>,
11680
Next:<a rel="next" accesskey="n" href="#Animating%20Plots">Animating Plots</a>,
11681
Previous:<a rel="previous" accesskey="p" href="#Entering%20Plotting%20Commands">Entering Plotting Commands</a>,
11682
Up:<a rel="up" accesskey="u" href="#Plotting%20Values">Plotting Values</a>
11688
<h4 class="subsection">Exporting Plot Data</h4>
11690
<p>If you want some external program to process the plot data (a
11691
stand-alone Gnuplot program or the <code>xmgr</code> program, for instance),
11692
you can save the plot data in a file, using <code>File => Save
11693
Data As</code>. This pops up a dialog that lets you choose a data file to
11694
save the plotted data in.
11696
<p>The generated file starts with a few comment lines. The actual data
11697
follows in X/Y or X/Y/Z format. It is the same file as processed by
11702
<small class=header>
11703
Node:<a name="Animating%20Plots">Animating Plots</a>,
11704
Next:<a rel="next" accesskey="n" href="#Customizing%20Plots">Customizing Plots</a>,
11705
Previous:<a rel="previous" accesskey="p" href="#Exporting%20Plot%20Data">Exporting Plot Data</a>,
11706
Up:<a rel="up" accesskey="u" href="#Plotting%20Values">Plotting Values</a>
11712
<h4 class="subsection">Animating Plots</h4>
11714
<p>If you want to see how your data evolves in time, you can set a
11715
breakpoint whose command sequence ends in a <code>cont</code> command
11716
(see <a href="#Breakpoint%20Commands">Breakpoint Commands</a>. Each time this "continue" breakpoint is
11717
reached, the program stops and <small>DDD</small> updates the displayed values,
11718
including the plots. Then, <small>DDD</small> executes the breakpoint command
11719
sequence, resuming execution.
11721
<p>This way, you can set a "continue" breakpoint at some decisive point
11722
within an array-processing algorithm and have <small>DDD</small> display the
11723
progress graphically. When your program has stopped for good, you can
11724
use <code>Undo</code> and <code>Redo</code> to redisplay and examine previous
11725
program states. See <a href="#Undoing%20Program%20Execution">Undoing Program Execution</a>, for details.
11729
<small class=header>
11730
Node:<a name="Customizing%20Plots">Customizing Plots</a>,
11731
Previous:<a rel="previous" accesskey="p" href="#Animating%20Plots">Animating Plots</a>,
11732
Up:<a rel="up" accesskey="u" href="#Plotting%20Values">Plotting Values</a>
11738
<h4 class="subsection">Customizing Plots</h4>
11740
<p>You can customize the Gnuplot program to invoke, as well as a number of
11744
<li><a accesskey="1" href="#Gnuplot%20Invocation">Gnuplot Invocation</a>:
11745
<li><a accesskey="2" href="#Gnuplot%20Settings">Gnuplot Settings</a>:
11750
<small class=header>
11751
Node:<a name="Gnuplot%20Invocation">Gnuplot Invocation</a>,
11752
Next:<a rel="next" accesskey="n" href="#Gnuplot%20Settings">Gnuplot Settings</a>,
11753
Up:<a rel="up" accesskey="u" href="#Customizing%20Plots">Customizing Plots</a>
11759
<h5 class="subsubsection">Gnuplot Invocation</h5>
11761
<p>Using <code>Edit => Preferences => Helpers =>
11762
Plot</code>, you can choose the Gnuplot program to invoke. This is tied to
11763
the following resource:
11766
<table width="100%">
11768
<td align="left"><b>plotCommand</b><i> </i>(<i>class PlotCommand</i>)<i>
11770
<td align="right">Resource</td>
11773
<table width="95%" align="center">
11775
The name of a Gnuplot executable. Default is <code>gnuplot</code>,
11776
followed by some options to set up colors and the initial geometry.
11780
<p>Using <code>Edit => Preferences => Helpers => Plot
11781
Window</code>, you can choose whether to use the Gnuplot plot window
11782
(<code>External</code>) or to use the plot window supplied by <small>DDD</small>
11783
(<code>builtin</code>). This is tied to the following resource:
11786
<table width="100%">
11788
<td align="left"><b>plotTermType</b><i> </i>(<i>class PlotTermType</i>)<i>
11790
<td align="right">Resource</td>
11793
<table width="95%" align="center">
11795
The Gnuplot terminal type. Can have one of two values:
11797
<li>If this is <code>x11</code>, <small>DDD</small> "swallows" the <em>external</em>
11798
Gnuplot output window into its own user interface. Some window
11799
managers, notably <code>mwm</code>, have trouble with swallowing techniques.
11800
<li>Setting this resource to <code>xlib</code> (default) makes <small>DDD</small>
11801
provide a <em>builtin plot window</em> instead. In this mode, plots work
11802
well with any window manager, but are less customizable (Gnuplot
11803
resources are not understood).
11808
<p>You can further control interaction with the external plot window:
11811
<table width="100%">
11813
<td align="left"><b>plotWindowClass</b><i> </i>(<i>class PlotWindowClass</i>)<i>
11815
<td align="right">Resource</td>
11818
<table width="95%" align="center">
11820
The class of the Gnuplot output window. When invoking Gnuplot,
11821
<small>DDD</small> waits for a window with this class and incorporates it into
11822
its own user interface (unless <code>plotTermType</code> is <code>xlib</code>; see
11823
above). Default is <code>Gnuplot</code>.
11828
<table width="100%">
11830
<td align="left"><b>plotWindowDelay</b><i> </i>(<i>class WindowDelay</i>)<i>
11832
<td align="right">Resource</td>
11835
<table width="95%" align="center">
11837
The time (in ms) to wait for the creation of the Gnuplot window. Before
11838
this delay, <small>DDD</small> looks at each newly created window to see
11839
whether this is the plot window to swallow. This is cheap, but
11840
unfortunately, some window managers do not pass the creation event to
11841
<small>DDD</small>. If this delay has passed, and <small>DDD</small> has not found
11842
the plot window, <small>DDD</small> searches <em>all</em> existing windows, which
11843
is pretty expensive. Default time is <code>2000</code>.
11849
<small class=header>
11850
Node:<a name="Gnuplot%20Settings">Gnuplot Settings</a>,
11851
Previous:<a rel="previous" accesskey="p" href="#Gnuplot%20Invocation">Gnuplot Invocation</a>,
11852
Up:<a rel="up" accesskey="u" href="#Customizing%20Plots">Customizing Plots</a>
11858
<h5 class="subsubsection">Gnuplot Settings</h5>
11860
<p>To change Gnuplot settings, use these resources:
11863
<table width="100%">
11865
<td align="left"><b>plotInitCommands</b><i> </i>(<i>class PlotInitCommands</i>)<i>
11867
<td align="right">Resource</td>
11870
<table width="95%" align="center">
11872
The initial Gnuplot commands issued by <small>DDD</small>. Default is:
11874
<pre class="example"> set parametric
11880
<p>The <code>parametric</code> setting is required to make Gnuplot understand the
11881
data files as generated <small>DDD</small>. The range commands are used to
11886
<p>See the Gnuplot documentation for additional commands.
11889
<table width="100%">
11891
<td align="left"><b>plot2dSettings</b><i> </i>(<i>class PlotSettings</i>)<i>
11893
<td align="right">Resource</td>
11896
<table width="95%" align="center">
11898
Additional initial settings for 2-D plots. Default is <code>set
11899
noborder</code>. Feel free to customize these settings as desired.
11904
<table width="100%">
11906
<td align="left"><b>plot3dSettings</b><i> </i>(<i>class PlotSettings</i>)<i>
11908
<td align="right">Resource</td>
11911
<table width="95%" align="center">
11913
Additional initial settings for 3-D plots. Default is <code>set
11914
border</code>. Feel free to customize these settings as desired.
11920
<small class=header>
11921
Node:<a name="Examining%20Memory">Examining Memory</a>,
11922
Previous:<a rel="previous" accesskey="p" href="#Plotting%20Values">Plotting Values</a>,
11923
Up:<a rel="up" accesskey="u" href="#Examining%20Data">Examining Data</a>
11929
<h3 class="section">Examining Memory</h3>
11931
<p>Using <small>GDB</small> or <small>DBX</small>, you can examine memory in any of several
11932
formats, independently of your program's data types. The item
11933
<code>Data => Memory</code> pops up a panel where you can choose the
11934
format to be shown.
11937
<div align="center"><img src="PICS/ddd-examine.jpg" alt="PICS/ddd-examine.jpg"></div>
11939
<p>In the panel, you can enter
11942
<li>a <dfn>repeat count</dfn>, a decimal integer that specifies how much memory
11943
(counting by units) to display
11945
<li>a <dfn>display format</dfn>--one of
11948
<dt><code>octal</code>
11949
<dd>Print as integer in octal
11951
<br><dt><code>hex</code>
11952
<dd>Regard the bits of the value as an integer, and print the integer
11955
<br><dt><code>decimal</code>
11956
<dd>Print as integer in signed decimal.
11958
<br><dt><code>unsigned</code>
11959
<dd>Print as integer in unsigned decimal.
11961
<br><dt><code>binary</code>
11962
<dd>Print as integer in binary.
11964
<br><dt><code>float</code>
11965
<dd>Regard the bits of the value as a floating point number and print
11966
using typical floating point syntax.
11968
<br><dt><code>address</code>
11969
<dd>Print as an address, both absolute in hexadecimal and as an offset
11970
from the nearest preceding symbol.
11972
<br><dt><code>instruction</code>
11973
<dd>Print as machine instructions. The unit size is ignored for this
11976
<br><dt><code>char</code>
11977
<dd>Regard as an integer and print it as a character constant.
11979
<br><dt><code>string</code>
11980
<dd>Print as null-terminated string. The unit size is ignored for this
11984
<li>a <dfn>unit size</dfn>--one of
11987
<dt><code>bytes</code>
11990
<br><dt><code>halfwords</code>
11991
<dd>Halfwords (two bytes).
11993
<br><dt><code>words</code>
11994
<dd>Words (four bytes).
11996
<br><dt><code>giants</code>
11997
<dd>Giant words (eight bytes).
12000
<li>an <dfn>address</dfn>--the starting display address. The expression need
12001
not have a pointer value (though it may); it is always interpreted as an
12002
integer address of a byte of memory.
12005
<p>There are two ways to examine the values:
12008
<li>You can dump the memory in the debugger console (using <code>Print</code>).
12009
If you repeat the resulting <code>x</code> command by pressing <Return> in
12010
the debugger console (see <a href="#Command%20History">Command History</a>), the following area of
12013
<li>You can also display the memory dump in the data window (using
12014
<code>Display</code>). If you choose to display the values, the values will
12015
be updated automatically each time the program stop.
12020
<small class=header>
12021
Node:<a name="Machine-Level%20Debugging">Machine-Level Debugging</a>,
12022
Next:<a rel="next" accesskey="n" href="#Changing%20the%20Program">Changing the Program</a>,
12023
Previous:<a rel="previous" accesskey="p" href="#Examining%20Data">Examining Data</a>,
12024
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
12030
<h2 class="chapter">Machine-Level Debugging</h2>
12032
<p>Sometimes, it is desirable to examine a program not only at the source
12033
level, but also at the machine level. <small>DDD</small> provides special
12034
machine code and register windows for this task.
12037
<li><a accesskey="1" href="#Machine%20Code">Machine Code</a>: Examining machine code.
12038
<li><a accesskey="2" href="#Machine%20Code%20Execution">Machine Code Execution</a>: Stepping across instructions.
12039
<li><a accesskey="3" href="#Registers">Registers</a>: Examining registers.
12040
<li><a accesskey="4" href="#Customizing%20Machine%20Code">Customizing Machine Code</a>: Settings.
12045
<small class=header>
12046
Node:<a name="Machine%20Code">Machine Code</a>,
12047
Next:<a rel="next" accesskey="n" href="#Machine%20Code%20Execution">Machine Code Execution</a>,
12048
Up:<a rel="up" accesskey="u" href="#Machine-Level%20Debugging">Machine-Level Debugging</a>
12054
<h3 class="section">Examining Machine Code</h3>
12056
<p>To enable machine-level support, select <code>Source => Display
12057
Machine Code</code>. With machine code enabled, an additional <em>machine
12058
code window</em> shows up, displaying the machine code of the current
12059
function.<a rel="footnote" href="#fn-30"><sup>30</sup></a> By moving the sash at the right of the
12060
separating line between source and machine code, you can resize the
12061
source and machine code windows.
12064
<div align="center"><img src="PICS/ddd-code.jpg" alt="PICS/ddd-code.jpg"></div>
12066
<p>The machine code window works very much like the source window. You can
12067
set, clear, and change breakpoints by selecting the address and pressing
12068
a <code>Break</code> or <code>Clear</code> button; the usual popup menus are also
12069
available. Breakpoints and the current execution position are displayed
12070
simultaneously in both source and machine code.
12072
<p>The <code>Lookup</code> button can be used to look up the machine code for a
12073
specific function--or the function for a specific address. Just click
12074
on the location in one window and press <code>Lookup</code> to see the
12075
corresponding code in the other window.
12077
<p>If source code is not available, only the machine code window is
12080
<p>You can customize various aspects of the disassembling window.
12081
See <a href="#Customizing%20Machine%20Code">Customizing Machine Code</a>, for details.
12085
<small class=header>
12086
Node:<a name="Machine%20Code%20Execution">Machine Code Execution</a>,
12087
Next:<a rel="next" accesskey="n" href="#Registers">Registers</a>,
12088
Previous:<a rel="previous" accesskey="p" href="#Machine%20Code">Machine Code</a>,
12089
Up:<a rel="up" accesskey="u" href="#Machine-Level%20Debugging">Machine-Level Debugging</a>
12095
<h3 class="section">Machine Code Execution</h3>
12097
<p>All execution facilities available in the source code window are
12098
available in the machine code window as well. Two special facilities
12099
are convenient for machine-level debugging:
12101
<p>To execute just one machine instruction, click on the <code>Stepi</code>
12102
button or select <code>Program => Step Instruction</code>.
12104
<p>To continue to the next instruction in the current function, click on
12105
the <code>Nexti</code> button select <code>Program => Next
12106
Instruction</code>.. This is similar to <code>Stepi</code>, but any subroutine
12107
calls are executed without stopping.
12109
<p>Using <small>GDB</small>, it is often useful to do
12111
<pre class="example"> graph display /i $pc
12114
<p>when stepping by machine instructions. This makes <small>DDD</small>
12115
automatically display the next instruction to be executed, each time
12116
your program stops.
12120
<small class=header>
12121
Node:<a name="Registers">Registers</a>,
12122
Next:<a rel="next" accesskey="n" href="#Customizing%20Machine%20Code">Customizing Machine Code</a>,
12123
Previous:<a rel="previous" accesskey="p" href="#Machine%20Code%20Execution">Machine Code Execution</a>,
12124
Up:<a rel="up" accesskey="u" href="#Machine-Level%20Debugging">Machine-Level Debugging</a>
12130
<h3 class="section">Examining Registers</h3>
12132
<p><small>DDD</small> provides a <em>register window</em> showing the machine
12133
register values after each program stop. To enable the register window,
12134
select <code>Status => Registers</code>.<a rel="footnote" href="#fn-31"><sup>31</sup></a>
12137
<div align="center"><img src="PICS/ddd-registers.jpg" alt="PICS/ddd-registers.jpg"></div>
12139
<p>By selecting one of the registers, its name is copied to the argument
12140
field. You can use it as value for <code>Display</code>, for instance, to
12141
have its value displayed in the data window.
12145
<small class=header>
12146
Node:<a name="Customizing%20Machine%20Code">Customizing Machine Code</a>,
12147
Previous:<a rel="previous" accesskey="p" href="#Registers">Registers</a>,
12148
Up:<a rel="up" accesskey="u" href="#Machine-Level%20Debugging">Machine-Level Debugging</a>
12154
<h3 class="section">Customizing Machine Code</h3>
12156
<p>Enabling machine code via <code>Source => Display Machine Code</code>
12157
(see <a href="#Machine%20Code">Machine Code</a>) toggles the following resource:
12160
<table width="100%">
12162
<td align="left"><b>disassemble</b><i> </i>(<i>class Disassemble</i>)<i>
12164
<td align="right">Resource</td>
12167
<table width="95%" align="center">
12169
If this is <code>on</code>, the source code is automatically disassembled.
12170
The default is <code>off</code>. See <a href="#Options">Options</a>, for the <code>--disassemble</code>
12171
and <code>--no-disassemble</code> options.
12175
<p>You can keep disassembled code in memory, using <code>Edit =>
12176
Preferences => Source => Cache Machine Code</code>:
12179
<table width="100%">
12181
<td align="left"><b>cacheMachineCode</b><i> </i>(<i>class CacheMachineCode</i>)<i>
12183
<td align="right">Resource</td>
12186
<table width="95%" align="center">
12188
Whether to cache disassembled machine code (<code>on</code>, default) or
12189
not (<code>off</code>). Caching machine code requires more memory, but
12190
makes <small>DDD</small> run faster.
12194
<p>You can control the indentation of machine code, using <code>Edit
12195
=> Preferences => Source => Machine Code
12196
Indentation</code>:
12199
<table width="100%">
12201
<td align="left"><b>indentCode</b><i> </i>(<i>class Indent</i>)<i>
12203
<td align="right">Resource</td>
12206
<table width="95%" align="center">
12208
The number of columns to indent the machine code, such that there is
12209
enough place to display breakpoint locations. Default: <code>4</code>.
12213
<p>The <code>maxDisassemble</code> resource controls how much is to be
12214
disassembled. If <code>maxDisassemble</code> is set to 256 (default) and the
12215
current function is larger than 256 bytes, <small>DDD</small> only disassembles
12216
the first 256 bytes below the current location. You can set the
12217
<code>maxDisassemble</code> resource to a larger value if you prefer to have a
12218
larger machine code view.
12221
<table width="100%">
12223
<td align="left"><b>maxDisassemble</b><i> </i>(<i>class MaxDisassemble</i>)<i>
12225
<td align="right">Resource</td>
12228
<table width="95%" align="center">
12230
Maximum number of bytes to disassemble (default: <code>256</code>). If this
12231
is zero, the entire current function is disassembled.
12237
<small class=header>
12238
Node:<a name="Changing%20the%20Program">Changing the Program</a>,
12239
Next:<a rel="next" accesskey="n" href="#Commands">Commands</a>,
12240
Previous:<a rel="previous" accesskey="p" href="#Machine-Level%20Debugging">Machine-Level Debugging</a>,
12241
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
12247
<h2 class="chapter">Changing the Program</h2>
12249
<p><small>DDD</small> offers some basic facilities to edit and recompile the
12250
source code, as well as patching executables and core files.
12253
<li><a accesskey="1" href="#Editing%20Source%20Code">Editing Source Code</a>: You can invoke a source editor from <small>DDD</small>.
12254
<li><a accesskey="2" href="#Recompiling">Recompiling</a>: Invoking <code>make</code> from within <small>DDD</small>.
12255
<li><a accesskey="3" href="#Patching">Patching</a>: Changing source and object code.
12260
<small class=header>
12261
Node:<a name="Editing%20Source%20Code">Editing Source Code</a>,
12262
Next:<a rel="next" accesskey="n" href="#Recompiling">Recompiling</a>,
12263
Up:<a rel="up" accesskey="u" href="#Changing%20the%20Program">Changing the Program</a>
12269
<h3 class="section">Editing Source Code</h3>
12271
<p>In <small>DDD</small> itself, you cannot change the source file currently
12272
displayed. Instead, <small>DDD</small> allows you to invoke a <em>text
12273
editor</em>. To invoke a text editor for the current source file, select
12274
the <code>Edit</code> button or <code>Source => Edit Source</code>.
12276
<p>By default, <small>DDD</small> tries a number of common editors. You can
12277
customize <small>DDD</small> to use your favorite editor; See <a href="#Customizing%20Editing">Customizing Editing</a>, for details.
12279
<p>After the editor has exited, the source code shown is automatically
12282
<p>If you have <small>DDD</small> and an editor running in parallel, you can also
12283
update the source code manually via <code>Source => Reload
12284
Source</code>. This reloads the source code shown from the source file.
12285
Since <small>DDD</small> automatically reloads the source code if the debugged
12286
program has been recompiled, this should seldom be necessary.
12289
<li><a accesskey="1" href="#Customizing%20Editing">Customizing Editing</a>:
12290
<li><a accesskey="2" href="#In-Place%20Editing">In-Place Editing</a>:
12295
<small class=header>
12296
Node:<a name="Customizing%20Editing">Customizing Editing</a>,
12297
Next:<a rel="next" accesskey="n" href="#In-Place%20Editing">In-Place Editing</a>,
12298
Up:<a rel="up" accesskey="u" href="#Editing%20Source%20Code">Editing Source Code</a>
12304
<h4 class="subsection">Customizing Editing</h4>
12306
<p>You can customize the editor to be used via <code>Edit =>
12307
Preferences => Helpers => Edit Sources</code>. This is tied to
12308
the following resource:
12311
<table width="100%">
12313
<td align="left"><b>editCommand</b><i> </i>(<i>class EditCommand</i>)<i>
12315
<td align="right">Resource</td>
12318
<table width="95%" align="center">
12320
A command string to invoke an editor on the specific file.
12321
<code>@LINE@</code> is replaced by the current line number, <code>@FILE@</code>
12322
by the file name. The default is to invoke <code>$XEDITOR</code> first, then
12323
<code>$EDITOR</code>, then <code>vi</code>:
12325
<pre class="example"> Ddd*editCommand: \
12326
${XEDITOR-false} +@LINE@ @FILE@ || \
12327
xterm -e ${EDITOR-vi} +@LINE@ @FILE@
12332
<p>This <code>~/.ddd/init</code> setting invokes an editing session
12333
for an XEmacs editor running <code>gnuserv</code>:
12335
<pre class="example"> Ddd*editCommand: gnuclient +@LINE@ @FILE@
12338
<p>This <code>~/.ddd/init</code> setting invokes an editing session for an
12339
Emacs editor running <code>emacsserver</code>:
12341
<pre class="example"> Ddd*editCommand: emacsclient +@LINE@ @FILE@
12346
<small class=header>
12347
Node:<a name="In-Place%20Editing">In-Place Editing</a>,
12348
Previous:<a rel="previous" accesskey="p" href="#Customizing%20Editing">Customizing Editing</a>,
12349
Up:<a rel="up" accesskey="u" href="#Editing%20Source%20Code">Editing Source Code</a>
12355
<h4 class="subsection">In-Place Editing</h4>
12357
<p>This resource is experimental:
12360
<table width="100%">
12362
<td align="left"><b>sourceEditing</b><i> </i>(<i>class SourceEditing</i>)<i>
12364
<td align="right">Resource</td>
12367
<table width="95%" align="center">
12369
If this is <code>on</code>, the displayed source code becomes editable.
12370
This is an experimental feature; Default is <code>off</code>.
12376
<small class=header>
12377
Node:<a name="Recompiling">Recompiling</a>,
12378
Next:<a rel="next" accesskey="n" href="#Patching">Patching</a>,
12379
Previous:<a rel="previous" accesskey="p" href="#Editing%20Source%20Code">Editing Source Code</a>,
12380
Up:<a rel="up" accesskey="u" href="#Changing%20the%20Program">Changing the Program</a>
12386
<h3 class="section">Recompiling</h3>
12388
<p>To recompile the source code using <code>make</code>, you can select
12389
<code>File => Make</code>. This pops up a dialog where you can enter a
12390
<em>Make Target</em>--typically the name of the executable. Clicking on
12391
the <code>Make</code> button invokes the <code>make</code> program with the given
12394
<p>The <code>Make</code> button on the command tool re-invokes <code>make</code>
12395
with the most recently given arguments.
12399
<small class=header>
12400
Node:<a name="Patching">Patching</a>,
12401
Previous:<a rel="previous" accesskey="p" href="#Recompiling">Recompiling</a>,
12402
Up:<a rel="up" accesskey="u" href="#Changing%20the%20Program">Changing the Program</a>
12408
<h3 class="section">Patching</h3>
12410
<p>Using <small>GDB</small>, you can open your program's executable code (and the core
12411
file) for both reading and writing. This allows alterations to machine
12412
code, such that you can intentionally patch your program's binary. For
12413
example, you might want to turn on internal debugging flags, or even to
12414
make emergency repairs.
12416
<p>Note that depending on your operating system, special preparation steps,
12417
such as setting permissions, may be needed before you can change
12420
<p>To patch the binary, enable <code>Edit => </code><small>GDB</small><code> Settings =>
12421
Writing into executable and core files</code>. This makes <small>GDB</small> open executable
12422
and core files for both reading and writing. If you have already loaded
12423
a file, you must load it again (using <code>Edit => Open File</code> or
12424
<code>Edit => Open Core</code>), for your new setting to take effect.
12426
<p>Be sure to turn off <code>Writing into executable and core files</code> as
12427
soon as possible, to prevent accidental alterations to machine code.
12431
<small class=header>
12432
Node:<a name="Commands">Commands</a>,
12433
Next:<a rel="next" accesskey="n" href="#Application%20Defaults">Application Defaults</a>,
12434
Previous:<a rel="previous" accesskey="p" href="#Changing%20the%20Program">Changing the Program</a>,
12435
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
12441
<h2 class="chapter">The Command-Line Interface</h2>
12443
<p>All the buttons you click within <small>DDD</small> get eventually translated
12444
into some debugger command, shown in the debugger console. You can also
12445
type in and edit these commands directly.
12448
<li><a accesskey="1" href="#Entering%20Commands">Entering Commands</a>: Direct interaction with the inferior debugger.
12449
<li><a accesskey="2" href="#TTY%20mode">TTY mode</a>: Controlling <small>DDD</small> from a terminal.
12450
<li><a accesskey="3" href="#Integrating%20%3csmall%3eDDD%3c%2fsmall%3e">Integrating <small>DDD</small></a>: <small>DDD</small> and your programming environment.
12451
<li><a accesskey="4" href="#Defining%20Buttons">Defining Buttons</a>: Add your own <small>DDD</small> buttons.
12452
<li><a accesskey="5" href="#Defining%20Commands">Defining Commands</a>: Add your own <small>DDD</small> commands.
12457
<small class=header>
12458
Node:<a name="Entering%20Commands">Entering Commands</a>,
12459
Next:<a rel="next" accesskey="n" href="#TTY%20mode">TTY mode</a>,
12460
Up:<a rel="up" accesskey="u" href="#Commands">Commands</a>
12466
<h3 class="section">Entering Commands</h3>
12468
<p>In the <em>debugger console</em>, you can interact with the command
12469
interface of the inferior debugger. Enter commands at the
12470
<em>debugger prompt</em>--that is, <code>(gdb)</code> for <small>GDB</small>,
12471
<code>(dbx)</code> for <small>DBX</small>, <code>(ladebug)</code> for Ladebug, <code>></code> for
12472
<small>XDB</small>, <code>></code> and <code></code><var>thread</var><code>[</code><var>depth</var><code>]</code> for <small>JDB</small>, or
12473
<code>(Pydb)</code> for <small>PYDB</small>, or <code>DB<></code> for Perl, or
12474
<code>bashdb<></code> for Bash. You can use arbitrary debugger commands; use the
12475
<Return> key to enter them.
12478
<li><a accesskey="1" href="#Command%20Completion">Command Completion</a>: Using the <TAB> key.
12479
<li><a accesskey="2" href="#Command%20History">Command History</a>: Repeating previous commands.
12480
<li><a accesskey="3" href="#Typing%20in%20the%20Source%20Window">Typing in the Source Window</a>:
12485
<small class=header>
12486
Node:<a name="Command%20Completion">Command Completion</a>,
12487
Next:<a rel="next" accesskey="n" href="#Command%20History">Command History</a>,
12488
Up:<a rel="up" accesskey="u" href="#Entering%20Commands">Entering Commands</a>
12494
<h4 class="subsection">Command Completion</h4>
12496
<p>When using <small>GDB</small> or Perl, you can use the <TAB> key for
12497
<em>completing</em> commands and arguments. This works in the debugger
12498
console as well as in all other text windows.
12500
<p><small>GDB</small> can fill in the rest of a word in a command for you, if there is
12501
only one possibility; it can also show you what the valid possibilities
12502
are for the next word in a command, at any time. This works for <small>GDB</small>
12503
commands, <small>GDB</small> subcommands, and the names of symbols in your program.
12505
<p>Press the <TAB> key whenever you want <small>GDB</small> to fill out the rest
12506
of a word. If there is only one possibility, <small>GDB</small> fills in the
12507
word, and waits for you to finish the command (or press <RET> to
12508
enter it). For example, if you type
12509
<pre class="example"> (gdb) <kbd>info bre_<TAB></kbd>
12512
<p><small>GDB</small> fills in the rest of the word <code>breakpoints</code>, since that is
12513
the only <code>info</code> subcommand beginning with <code>bre</code>:
12515
<pre class="example"> (gdb) <kbd>info breakpoints</kbd>
12518
<p>You can either press <RET> at this point, to run the <code>info
12519
breakpoints</code> command, or backspace and enter something else, if
12520
<code>breakpoints</code> does not look like the command you expected. (If you
12521
were sure you wanted <code>info breakpoints</code> in the first place, you
12522
might as well just type <RET> immediately after <code>info bre</code>, to
12523
exploit command abbreviations rather than command completion).
12525
<p>If there is more than one possibility for the next word when you press
12526
<TAB>, <small>DDD</small> sounds a bell. You can either supply more
12527
characters and try again, or just press <TAB> a second time; <small>GDB</small>
12528
displays all the possible completions for that word. For example, you
12529
might want to set a breakpoint on a subroutine whose name begins with
12530
<code>make_</code>, but when you type <kbd>b make_<TAB></kbd>, <small>DDD</small> just
12531
sounds the bell. Typing <TAB> again displays all the function names
12532
in your program that begin with those characters. If you type <TAB>
12533
again, you cycle through the list of completions, for example:
12535
<pre class="example"> (gdb) <kbd>b make</kbd>_ <TAB>
12536
<br><small>DDD</small> sounds bell; press <TAB> again, to see:<br>
12537
make_a_section_from_file make_environ
12538
make_abs_section make_function_type
12539
make_blockvector make_pointer_type
12540
make_cleanup make_reference_type
12541
make_command make_symbol_completion_list
12542
(gdb) <kbd>b make</kbd>_ <TAB>
12543
<br><small>DDD</small> presents one expansion after the other:<br>
12544
(gdb) b make_a_section_from_file <TAB>
12545
(gdb) b make_abs_section <TAB>
12546
(gdb) b make_blockvector <TAB>
12549
<p>After displaying the available possibilities, <small>GDB</small> copies your partial
12550
input (<code>b make_</code> in the example) so you can finish the command--by
12551
pressing <TAB> again, or by entering the remainder manually.
12553
<p>Sometimes the string you need, while logically a "word", may contain
12554
parentheses or other characters that <small>GDB</small> normally excludes from its
12555
notion of a word. To permit word completion to work in this situation,
12556
you may enclose words in <code>'</code> (single quote marks) in <small>GDB</small> commands.
12558
<p>The most likely situation where you might need this is in typing the
12559
name of a C++ function. This is because C++ allows function overloading
12560
(multiple definitions of the same function, distinguished by argument
12561
type). For example, when you want to set a breakpoint you may need to
12562
distinguish whether you mean the version of <code>name</code> that takes an
12563
<code>int</code> parameter, <code>name(int)</code>, or the version that takes a
12564
<code>float</code> parameter, <code>name(float)</code>. To use the word-completion
12565
facilities in this situation, type a single quote <code>'</code> at the
12566
beginning of the function name. This alerts <small>GDB</small> that it may need to
12567
consider more information than usual when you press <TAB> to request
12570
<pre class="example"> (gdb) <kbd>b 'bubble(</kbd>_<TAB>
12571
bubble(double,double) bubble(int,int)
12572
(gdb) <kbd>b 'bubble(</kbd>_
12575
<p>In some cases, <small>DDD</small> can tell that completing a name requires
12576
using quotes. When this happens, <small>DDD</small> inserts the quote for you
12577
(while completing as much as it can) if you do not type the quote in the
12580
<pre class="example"> (gdb) <kbd>b bub</kbd>_<TAB>
12581
<br><small>DDD</small> alters your input line to the following, and rings a bell:<br>
12582
(gdb) <kbd>b 'bubble(</kbd>_
12585
<p>In general, <small>DDD</small> can tell that a quote is needed (and inserts it)
12586
if you have not yet started typing the argument list when you ask for
12587
completion on an overloaded symbol.
12589
<p>If you prefer to use the <TAB> key for switching between items,
12590
unset <code>Edit => Preferences => General => TAB
12591
Key completes in All Windows</code>. This is useful if you have
12592
pointer-driven keyboard focus (see below) and no special usage for the
12593
<TAB> key. If the option is set, the <TAB> key completes in the
12594
debugger console only.
12596
<p>This option is tied to the following resource:
12599
<table width="100%">
12601
<td align="left"><b>globalTabCompletion</b><i> </i>(<i>class GlobalTabCompletion</i>)<i>
12603
<td align="right">Resource</td>
12606
<table width="95%" align="center">
12608
If this is <code>on</code> (default), the <TAB> key completes arguments in
12609
all windows. If this is <code>off</code>, the <TAB> key completes
12610
arguments in the debugger console only.
12616
<small class=header>
12617
Node:<a name="Command%20History">Command History</a>,
12618
Next:<a rel="next" accesskey="n" href="#Typing%20in%20the%20Source%20Window">Typing in the Source Window</a>,
12619
Previous:<a rel="previous" accesskey="p" href="#Command%20Completion">Command Completion</a>,
12620
Up:<a rel="up" accesskey="u" href="#Entering%20Commands">Entering Commands</a>
12626
<h4 class="subsection">Command History</h4>
12628
<p>You can <em>repeat</em> previous and next commands by pressing the
12629
<Up> and <Down> arrow keys, respectively. This presents you
12630
previous and later commands on the command line; use <Return> to
12631
apply the current command.
12633
<p>If you enter an empty line (just use <Return> at the debugger
12634
prompt), the last command is repeated as well.
12636
<p><code>Commands => Command History</code> shows the command history.
12639
<div align="center"><img src="PICS/ddd-history.jpg" alt="PICS/ddd-history.jpg"></div>
12641
<p>You can <em>search</em> for previous commands by pressing <Ctrl+B>.
12642
This invokes <em>incremental search mode,</em> where you can enter a
12643
string to be searched in previous commands. Press <Ctrl+B> again to
12644
repeat the search, or <Ctrl+F> to search in the reverse direction.
12645
To return to normal mode, press <ESC>, or use any cursor command.
12647
<p>The command history is automatically saved when exiting <small>DDD</small>.
12648
You can turn off this feature by setting the following resource to
12652
<table width="100%">
12654
<td align="left"><b>saveHistoryOnExit</b><i> </i>(<i>class SaveOnExit</i>)<i>
12656
<td align="right">Resource</td>
12659
<table width="95%" align="center">
12661
If <code>on</code> (default), the command history is automatically saved
12662
when <small>DDD</small> exits.
12668
<small class=header>
12669
Node:<a name="Typing%20in%20the%20Source%20Window">Typing in the Source Window</a>,
12670
Previous:<a rel="previous" accesskey="p" href="#Command%20History">Command History</a>,
12671
Up:<a rel="up" accesskey="u" href="#Entering%20Commands">Entering Commands</a>
12677
<h4 class="subsection">Typing in the Source Window</h4>
12679
<p>As a special convenience, anything you type into the source window is
12680
automatically forwarded to the debugger console. Thus, you don't have
12681
to change the keyboard focus explicitly in order to enter commands.
12683
<p>You can change this behaviour using the following resource:
12686
<table width="100%">
12688
<td align="left"><b>consoleHasFocus</b><i> </i>(<i>class ConsoleHasFocus</i>)<i>
12690
<td align="right">Resource</td>
12693
<table width="95%" align="center">
12695
If <code>on</code> (default), all keyboard events in the source window are
12696
automatically forwarded to the debugger console. If <code>off</code>,
12697
keyboard events are not forwarded. If <code>auto</code>, keyboard events
12698
forwarded only if the debugger console is open.
12704
<small class=header>
12705
Node:<a name="TTY%20mode">TTY mode</a>,
12706
Next:<a rel="next" accesskey="n" href="#Integrating%20%3csmall%3eDDD%3c%2fsmall%3e">Integrating <small>DDD</small></a>,
12707
Previous:<a rel="previous" accesskey="p" href="#Entering%20Commands">Entering Commands</a>,
12708
Up:<a rel="up" accesskey="u" href="#Commands">Commands</a>
12714
<h3 class="section">Entering Commands at the TTY</h3>
12716
<p>Rather than entering commands at the debugger console, you may prefer to
12717
enter commands at the terminal window <small>DDD</small> was invoked from.
12719
<p>When <small>DDD</small> is invoked using the <code>--tty</code> option, it enables its
12720
<em></em><small>TTY</small><em> interface</em>, taking additional debugger commands from
12721
standard input and forwarding debugger output to standard output, just
12722
as if the inferior debugger had been invoked directly. All remaining
12723
<small>DDD</small> functionality stays unchanged.
12725
<p>By default, the debugger console remains closed if <small>DDD</small> is
12726
invoked using the <code>--tty</code> option. Use <code>View =>
12727
Debugger Console</code> to open it.
12729
<p><small>DDD</small> can be configured to use the <code>readline</code> library for reading
12730
in commands from standard input. This <small>GNU</small> library provides
12731
consistent behavior for programs which provide a command line interface
12732
to the user. Advantages are <small>GNU</small> Emacs-style or <dfn>vi</dfn>-style inline
12733
editing of commands, <code>csh</code>-like history substitution, and a
12734
storage and recall of command history across debugging sessions.
12735
See <a href="gdb.html#Command%20Line%20Editing">Command Line Editing</a>, for details on command-line editing via the
12736
<small>TTY</small> interface.
12740
<small class=header>
12741
Node:<a name="Integrating%20%3csmall%3eDDD%3c%2fsmall%3e">Integrating <small>DDD</small></a>,
12742
Next:<a rel="next" accesskey="n" href="#Defining%20Buttons">Defining Buttons</a>,
12743
Previous:<a rel="previous" accesskey="p" href="#TTY%20mode">TTY mode</a>,
12744
Up:<a rel="up" accesskey="u" href="#Commands">Commands</a>
12750
<h3 class="section">Integrating DDD</h3>
12752
<p>You can run <small>DDD</small> as an inferior debugger in other debugger
12753
front-ends, combining their special abilities with those of <small>DDD</small>.
12755
<p>To have <small>DDD</small> run as an inferior debugger in other front-ends, the
12756
general idea is to set up your debugger front-end such that
12757
<code>ddd --tty</code> is invoked instead of the inferior debugger.
12758
When <small>DDD</small> is invoked using the <code>--tty</code> option, it enables its
12759
<em></em><small>TTY</small><em> interface</em>, taking additional debugger commands from
12760
standard input and forwarding debugger output to standard output, just
12761
as if the inferior debugger had been invoked directly. All remaining
12762
<small>DDD</small> functionality stays unchanged.
12764
<p>In case your debugger front-end uses the <small>GDB</small> <code>-fullname</code>
12765
option to have <small>GDB</small> report source code positions, the <code>--tty</code>
12766
option is not required. <small>DDD</small> recognizes the <code>-fullname</code>
12767
option, finds that it has been invoked from a debugger front-end and
12768
automatically enables the <small>TTY</small> interface.
12770
<p>If <small>DDD</small> is invoked with the <code>-fullname</code> option, the debugger
12771
console and the source window are initially disabled, as their
12772
facilities are supposed to be provided by the integrating front-end. In
12773
case of need, you can use the <code>View</code> menu to re-enable these
12776
<h4 class="subsection">Using DDD with Emacs</h4>
12778
<p>To integrate <small>DDD</small> with Emacs, use <kbd>M-x gdb</kbd> or <kbd>M-x dbx</kbd>
12779
in Emacs to start a debugging session. At the prompt, enter
12780
<code>ddd --tty</code> (followed by <code>--dbx</code> or
12781
<code>--gdb</code>, if required), and the name of the program to be
12782
debugged. Proceed as usual.
12784
<h4 class="subsection">Using DDD with XEmacs</h4>
12786
<p>To integrate <small>DDD</small> with XEmacs, set the variable
12787
<code>gdb-command-name</code> to <code>"ddd"</code>, by inserting the following line
12788
in your <code>~/.emacs</code> file:
12790
<pre class="example"> (setq gdb-command-name "ddd")
12793
<p>You can also evaluate this expression by pressing <ESC> <:> and
12794
entering it directly (<ESC> <ESC> for XEmacs 19.13 and earlier).
12796
<p>To start a <small>DDD</small> debugging session in XEmacs, use <code>M-x gdb</code> or
12797
<code>M-x gdbsrc</code>. Proceed as usual.
12799
<h4 class="subsection">Using DDD with <small>XXGDB</small></h4>
12801
<p>To integrate <small>DDD</small> with <small>XXGDB</small>, invoke <code>xxgdb</code> as
12803
<pre class="example"> xxgdb -db_name ddd -db_prompt '(gdb) '
12808
<small class=header>
12809
Node:<a name="Defining%20Buttons">Defining Buttons</a>,
12810
Next:<a rel="next" accesskey="n" href="#Defining%20Commands">Defining Commands</a>,
12811
Previous:<a rel="previous" accesskey="p" href="#Integrating%20%3csmall%3eDDD%3c%2fsmall%3e">Integrating <small>DDD</small></a>,
12812
Up:<a rel="up" accesskey="u" href="#Commands">Commands</a>
12818
<h3 class="section">Defining Buttons</h3>
12820
<p>To facilitate interaction, you can add own command buttons to
12821
<small>DDD</small>. These buttons can be added below the debugger console
12822
(<code>Console Buttons</code>), the source window (<code>Source Buttons</code>), or
12823
the data window (<code>Data Buttons</code>).
12825
<p>To define individual buttons, use the <em>Button Editor</em>, invoked via
12826
<code>Commands => Edit Buttons</code>. The button editor displays a
12827
text, where each line contains the command for exactly one button.
12828
Clicking on <code>OK</code> creates the appropriate buttons from the text. If
12829
the text is empty (the default), no button is created.
12831
<p>As a simple example, assume you want to create a <code>print i</code>
12832
button. Invoke <code>Commands => Edit Buttons</code> and enter a line
12833
saying <code>print i</code> in the button editor. Then click on
12834
<code>OK</code>. A button named <code>Print i</code> will now appear below the
12835
debugger console--try it! To remove the button, reopen the button
12836
editor, clear the <code>print i</code> line and press <code>OK</code> again.
12838
<p>If a button command contains <code>()</code>, the string <code>()</code> will
12839
automatically be replaced by the contents of the argument field. For
12840
instance, a button named <code>return ()</code> will execute the <small>GDB</small>
12841
<code>return</code> command with the current content of the argument field as
12844
<p>By default, <small>DDD</small> disables buttons whose commands are not
12845
supported by the inferior debugger. To enable such buttons, unset the
12846
<code>Enable supported buttons only</code> toggle in the button editor.
12849
<div align="center"><img src="PICS/ddd-button-editor.jpg" alt="PICS/ddd-button-editor.jpg"></div>
12851
<p><small>DDD</small> also allows you to specify control sequences and special
12852
labels for user-defined buttons. See <a href="#Customizing%20Buttons">Customizing Buttons</a>, for
12856
<li><a accesskey="1" href="#Customizing%20Buttons">Customizing Buttons</a>: Adding your own command buttons.
12861
<small class=header>
12862
Node:<a name="Customizing%20Buttons">Customizing Buttons</a>,
12863
Up:<a rel="up" accesskey="u" href="#Defining%20Buttons">Defining Buttons</a>
12869
<h4 class="subsection">Customizing Buttons</h4>
12871
<p><small>DDD</small> allows defining additional command buttons; See <a href="#Defining%20Buttons">Defining Buttons</a>, for doing this interactively. This section describes the
12872
resources that control user-defined buttons.
12875
<table width="100%">
12877
<td align="left"><b>consoleButtons</b><i> </i>(<i>class Buttons</i>)<i>
12879
<td align="right">Resource</td>
12882
<table width="95%" align="center">
12884
A newline-separated list of buttons to be added under the debugger
12885
console. Each button issues the command given by its name.
12887
<p>The following characters have special meanings:
12889
<li>Commands ending with <code>...</code> insert their name, followed by a
12890
space, in the debugger console.
12892
<li>Commands ending with a control character (that is, <code>^</code> followed
12893
by a letter or <code>?</code>) insert the given control character.
12895
<li>The string <code>()</code> is replaced by the current contents
12896
of the argument field <code>()</code>.
12898
<li>The string specified in the <code>labelDelimiter</code> resource (usually
12899
<code>//</code>) separates the command name from the button label. If no
12900
button label is specified, the capitalized command will be used as
12904
<p>The following button names are reserved:
12907
<dt><code>Apply</code>
12908
<dd>Send the given command to the debugger.
12910
<br><dt><code>Back</code>
12911
<dd>Lookup previously selected source position.
12913
<br><dt><code>Clear</code>
12914
<dd>Clear current command
12916
<br><dt><code>Complete</code>
12917
<dd>Complete current command.
12919
<br><dt><code>Edit</code>
12920
<dd>Edit current source file.
12922
<br><dt><code>Forward</code>
12923
<dd>Lookup next selected source position.
12925
<br><dt><code>Make</code>
12926
<dd>Invoke the <code>make</code> program, using the most recently given arguments.
12928
<br><dt><code>Next</code>
12929
<dd>Show next command
12931
<br><dt><code>No</code>
12932
<dd>Answer current debugger prompt with <code>no</code>. This button is
12933
visible only if the debugger asks a yes/no question.
12935
<br><dt><code>Prev</code>
12936
<dd>Show previous command
12938
<br><dt><code>Reload</code>
12939
<dd>Reload source file.
12941
<br><dt><code>Yes</code>
12942
<dd>Answer current debugger prompt with <code>yes</code>. This button is
12943
visible only if the debugger asks a yes/no question.
12946
<p>The default resource value is empty--no console buttons are
12949
<p>Here are some examples to insert into your <code>~/.ddd/init</code> file.
12950
These are the settings of <small>DDD</small> 1.x:
12951
<pre class="example"> Ddd*consoleButtons: Yes\nNo\nbreak^C
12954
<p>This setting creates some more buttons:
12955
<pre class="example"> Ddd*consoleButtons: \
12956
Yes\nNo\nrun\nClear\nPrev\nNext\nApply\nbreak^C
12959
<p>See also the <code>dataButtons</code>, <code>sourceButtons</code> and
12960
<code>toolButtons</code> resources.
12965
<table width="100%">
12967
<td align="left"><b>dataButtons</b><i> </i>(<i>class Buttons</i>)<i>
12969
<td align="right">Resource</td>
12972
<table width="95%" align="center">
12974
A newline-separated list of buttons to be added under the data display.
12975
Each button issues the command given by its name. See the
12976
<code>consoleButtons</code> resource, above, for details on button syntax.
12978
<p>The default resource value is empty--no source buttons are
12984
<table width="100%">
12986
<td align="left"><b>sourceButtons</b><i> </i>(<i>class Buttons</i>)<i>
12988
<td align="right">Resource</td>
12991
<table width="95%" align="center">
12993
A newline-separated list of buttons to be added under the debugger
12994
console. Each button issues the command given by its name. See the
12995
<code>consoleButtons</code> resource, above, for details on button syntax.
12997
<p>The default resource value is empty--no source buttons are
13000
<p>Here are some example to insert into your <code>~/.ddd/init</code> file.
13001
These are the settings of <small>DDD</small> 1.x:
13003
<pre class="example"> Ddd*sourceButtons: \
13004
run\nstep\nnext\nstepi\nnexti\ncont\n\
13005
finish\nkill\nup\ndown\n\
13006
Back\nForward\nEdit\ninterrupt^C
13009
<p>This setting creates some buttons which are not found on the command tool:
13011
<pre class="example"> Ddd*sourceButtons: \
13012
print *()\ngraph display *()\nprint /x ()\n\
13013
whatis ()\nptype ()\nwatch ()\nuntil\nshell
13016
<p>An even more professional setting uses customized button labels.
13018
<pre class="example"> Ddd*sourceButtons: \
13019
print *(()) // Print *()\n\
13020
graph display *(()) // Display *()\n\
13022
whatis () // What is ()\n\
13029
<p>See also the <code>consoleButtons</code> and <code>dataButtons</code> resources,
13030
above, and the <code>toolButtons</code> resource, below.
13035
<table width="100%">
13037
<td align="left"><b>toolButtons</b><i> </i>(<i>class Buttons</i>)<i>
13039
<td align="right">Resource</td>
13042
<table width="95%" align="center">
13044
A newline-separated list of buttons to be included in the command tool
13045
or the command tool bar (see <a href="#Disabling%20the%20Command%20Tool">Disabling the Command Tool</a>). Each
13046
button issues the command given by its name. See <a href="#Defining%20Buttons">Defining Buttons</a>,
13047
for details on button syntax.
13049
<p>The default resource value is
13051
<pre class="example"> Ddd*toolButtons: \
13052
run\nbreak^C\nstep\nstepi\nnext\nnexti\n\
13053
until\nfinish\ncont\n\kill\n\
13054
up\ndown\nBack\nForward\nEdit\nMake
13057
<p>For each button, its location in the command tool must be specified
13058
using <code>XmForm</code> constraint resources. See the <code>Ddd</code>
13059
application defaults file for instructions.
13061
<p>If the <code>toolButtons</code> resource value is empty, the command tool is
13066
<p>The following resources set up button details:
13069
<table width="100%">
13071
<td align="left"><b>labelDelimiter</b><i> </i>(<i>class LabelDelimiter</i>)<i>
13073
<td align="right">Resource</td>
13076
<table width="95%" align="center">
13078
The string used to separate labels from commands and shortcuts.
13079
Default is <code>//</code>.
13084
<table width="100%">
13086
<td align="left"><b>verifyButtons</b><i> </i>(<i>class VerifyButtons</i>)<i>
13088
<td align="right">Resource</td>
13091
<table width="95%" align="center">
13093
If <code>on</code> (default), verify for each button whether its command is
13094
actually supported by the inferior debugger. If the command is unknown,
13095
the button is disabled. If this resource is <code>off</code>, no checking is
13096
done: all commands are accepted "as is".
13102
<small class=header>
13103
Node:<a name="Defining%20Commands">Defining Commands</a>,
13104
Previous:<a rel="previous" accesskey="p" href="#Defining%20Buttons">Defining Buttons</a>,
13105
Up:<a rel="up" accesskey="u" href="#Commands">Commands</a>
13111
<h3 class="section">Defining Commands</h3>
13113
<p>Aside from breakpoint commands (see <a href="#Breakpoint%20Commands">Breakpoint Commands</a>),
13114
<small>DDD</small> also allows you to define user-defined commands. A
13115
<em>user-defined command</em> is a sequence of commands to which you
13116
assign a new name as a command. This new command can be entered at the
13117
debugger prompt or invoked via a button.
13120
<li><a accesskey="1" href="#GDB%20Simple%20Commands">GDB Simple Commands</a>:
13121
<li><a accesskey="2" href="#GDB%20Argument%20Commands">GDB Argument Commands</a>:
13122
<li><a accesskey="3" href="#Commands%20with%20Other%20Debuggers">Commands with Other Debuggers</a>:
13127
<small class=header>
13128
Node:<a name="GDB%20Simple%20Commands">GDB Simple Commands</a>,
13129
Next:<a rel="next" accesskey="n" href="#GDB%20Argument%20Commands">GDB Argument Commands</a>,
13130
Up:<a rel="up" accesskey="u" href="#Defining%20Commands">Defining Commands</a>
13136
<h4 class="subsection">Defining Simple Commands using GDB</h4>
13138
<p>Aside from breakpoint commands (see <code>Breakpoint commands</code>,
13139
above), <small>DDD</small> also allows you to store sequences of commands
13140
as a user-defined <small>GDB</small> command. A <em>user-defined command</em>
13141
is a sequence of <small>GDB</small> commands to which you assign a new name
13142
as a command. Using <small>DDD</small>, this is done via the <em>Command
13143
Editor</em>, invoked via <code>Commands => Define Command</code>.
13145
<p>A <small>GDB</small> command is created in five steps:
13147
<ol type=1 start=1>
13148
<li>Enter the name of the command in the <code>Command</code> field. Use the
13149
drop-down list on the right to select from already defined commands.
13151
<li>Click on <code>Record</code> to begin the recording of the command sequence.
13153
<li>Now interact with <small>DDD</small>. While recording, <small>DDD</small> does not
13154
execute commands, but simply records them to be executed when the
13155
breakpoint is hit. The recorded debugger commands are shown in the
13158
<li>To stop the recording, click on <code>End</code> or enter <code>end</code> at
13159
the <small>GDB</small> prompt. To <em>cancel</em> the recording, click on
13160
<code>Interrupt</code> or press <ESC>.
13162
<li>Click on <code>Edit >></code> to edit the recorded commands.
13163
When done with editing, click on <code>Edit <<</code> to close the
13167
<p>After the command is defined, you can enter it at the <small>GDB</small> prompt. You
13168
may also click on <code>Execute</code> to test the given user-defined command.
13170
<p>For convenience, you can assign a button to the defined command.
13171
Enabling one of the <code>Button</code> locations will add a button with the
13172
given command to the specified location. If you want to edit the
13173
button, select <code>Commands => Edit Buttons</code>. See <a href="#Defining%20Buttons">Defining Buttons</a>, for a discussion.
13176
<div align="center"><img src="PICS/ddd-define-command.jpg" alt="PICS/ddd-define-command.jpg"></div>
13178
<p>When user-defined <small>GDB</small> commands are executed, the commands of the
13179
definition are not printed. An error in any command stops execution of
13180
the user-defined command.<a rel="footnote" href="#fn-32"><sup>32</sup></a>
13182
<p>If used interactively, commands that would ask for confirmation
13183
proceed without asking when used inside a user-defined command. Many
13184
<small>GDB</small> commands that normally print messages to say what they are
13185
doing omit the messages when used in a user-defined command.
13187
<p>Command definitions are saved across <small>DDD</small> sessions.
13191
<small class=header>
13192
Node:<a name="GDB%20Argument%20Commands">GDB Argument Commands</a>,
13193
Next:<a rel="next" accesskey="n" href="#Commands%20with%20Other%20Debuggers">Commands with Other Debuggers</a>,
13194
Previous:<a rel="previous" accesskey="p" href="#GDB%20Simple%20Commands">GDB Simple Commands</a>,
13195
Up:<a rel="up" accesskey="u" href="#Defining%20Commands">Defining Commands</a>
13201
<h4 class="subsection">Defining Argument Commands using GDB</h4>
13203
<p>If you want to pass arguments to user-defined commands, you can enable
13204
the <code>()</code> toggle button in the Command Editor. Enabling
13205
<code>()</code> has two effects:
13208
<li>While recording commands, all references to the argument field are taken
13209
<em>symbolically</em> instead of literally. The argument field value is
13210
frozen to <code>$arg0</code>, which is how <small>GDB</small> denotes the argument of a
13211
user-defined command. When <small>GDB</small> executes the command, it will replace
13212
<code>$arg0</code> by the current command argument.
13214
<li>When assigning a button to the command, the command will be suffixed by
13215
the current contents of the argument field.
13218
<p>While defining a command, you can toggle the <code>()</code> button as you
13219
wish to switch between using the argument field symbolically and
13222
<p>As an example, let us define a command <code>contuntil</code> that will set a
13223
breakpoint in the given argument and continue execution.
13225
<ol type=1 start=1>
13226
<li>Enter <code>contuntil</code> in the <code>Command</code> field.
13228
<li>Enable the <code>()</code> toggle button.
13230
<li>Now click on <code>Record</code> to start recording. Note that the
13231
contents of the argument field change to <code>$arg0</code>.
13233
<li>Click on <code>Break at ()</code> to create a breakpoint. Note that the
13234
recorded breakpoint command refers to <code>$arg0</code>.
13236
<li>Click on <code>Cont</code> to continue execution.
13238
<li>Click on <code>End</code> to end recording. Note that the argument field
13239
is restored to its original value.
13241
<li>Finally, click on one of the <code>Button</code> locations. This creates a
13242
<code>Contuntil ()</code> button where <code>()</code> will be replaced by the
13243
current contents of the argument field--and thus passed to the
13244
<code>contuntil</code> command.
13246
<li>You can now either use the <code>Contuntil ()</code> button or enter a
13247
<code>contuntil</code> command at the <small>GDB</small> prompt. (If you plan to
13248
use the command frequently, you may wish to define a <code>cu</code>
13249
command, which again calls <code>contuntil</code> with its argument. This
13250
is a nice exercise.)
13253
<p>There is a little drawback with argument commands: a user-defined
13254
command in <small>GDB</small> has no means to access the argument list as a whole; only
13255
the first argument (up to whitespace) is processed. This may change in
13256
future <small>GDB</small> releases.
13260
<small class=header>
13261
Node:<a name="Commands%20with%20Other%20Debuggers">Commands with Other Debuggers</a>,
13262
Previous:<a rel="previous" accesskey="p" href="#GDB%20Argument%20Commands">GDB Argument Commands</a>,
13263
Up:<a rel="up" accesskey="u" href="#Defining%20Commands">Defining Commands</a>
13269
<h4 class="subsection">Defining Commands using Other Debuggers</h4>
13271
<p>If your inferior debugger allows you to define own command sequences,
13272
you can also use these user-defined commands within <small>DDD</small>; just
13273
enter them at the debugger prompt.
13275
<p>However, you may encounter some problems:
13278
<li>In contrast to the well-documented commands of the inferior debugger,
13279
<small>DDD</small> does not know what a user-defined command does. This may
13280
lead to inconsistencies between <small>DDD</small> and the inferior debugger.
13281
For instance, if your the user-defined command <code>bp</code> sets a
13282
breakpoint, <small>DDD</small> may not display it immediately, because
13283
<small>DDD</small> does not know that <code>bp</code> changes the breakpoint state.
13285
<li>You cannot use <small>DDD</small> <code>graph</code> commands within user-defined
13286
commands. This is only natural, because user-defined commands are
13287
interpreted by the inferior debugger, which does not know about
13288
<small>DDD</small> commands.
13291
<p>As a solution, <small>DDD</small> provides a simple facility called
13292
<dfn>auto-commands</dfn>. If <small>DDD</small> receives any output from the
13293
inferior debugger in the form <code></code><var>prefix</var><code> </code><var>command</var><code></code>, it will
13294
interpret <var>command</var> as if it had been entered at the debugger
13295
prompt. <var>prefix</var> is a user-defined string, for example
13296
<code>ddd: </code>.
13298
<p>Suppose you want to define a command <code>gd</code> that serves as
13299
abbreviation for <code>graph display</code>. All the command <code>gd</code> has
13300
to do is to issue a string
13302
<pre class="example"> ddd: graph display <var>argument</var>
13305
<p>where <var>argument</var> is the argument given to <code>gd</code>. Using
13306
<small>GDB</small>, this can be achieved using the <code>echo</code> command. In
13307
your <code>~/.gdbinit</code> file, insert the lines
13309
<pre class="example"> define gd
13310
echo ddd: graph display $arg0\n
13314
<p>To complete the setting, you must also set the <code>autoCommandPrefix</code>
13315
resource to the <code>ddd: </code> prefix you gave in your command.
13316
In <code>~/.ddd/init</code>, write:
13318
<pre class="example"> Ddd*autoCommandPrefix: ddd:\
13321
<p>(Be sure to leave a space after the trailing backslash.)
13323
<p>Entering <code>gd foo</code> will now have the same effect as entering
13324
<code>graph display foo</code> at the debugger prompt.
13326
<p>Please note: In your commands, you should choose some other prefix than
13327
<code>ddd: </code>. This is because auto-commands raise a security
13328
problem, since arbitrary commands can be executed. Just imagine some
13329
malicious program issuing a string like <code></code><var>prefix</var><code> shell rm -fr
13330
~</code> when being debugged! As a consequence, be sure to choose your own
13331
<var>prefix</var>; it must be at least three characters long.
13335
<small class=header>
13336
Node:<a name="Application%20Defaults">Application Defaults</a>,
13337
Next:<a rel="next" accesskey="n" href="#Bugs">Bugs</a>,
13338
Previous:<a rel="previous" accesskey="p" href="#Commands">Commands</a>,
13339
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
13345
<h2 class="appendix">Application Defaults</h2>
13347
<p>Like any good X citizen, <small>DDD</small> comes with a large
13348
application-defaults file named <code>Ddd</code>. This appendix documents the
13349
actions and images referenced in <code>Ddd</code>, such that you can easily
13353
<li><a accesskey="1" href="#Actions">Actions</a>: All actions used in translation tables.
13354
<li><a accesskey="2" href="#Images">Images</a>: All images used in resources,
13359
<small class=header>
13360
Node:<a name="Actions">Actions</a>,
13361
Next:<a rel="next" accesskey="n" href="#Images">Images</a>,
13362
Up:<a rel="up" accesskey="u" href="#Application%20Defaults">Application Defaults</a>
13368
<h3 class="section">Actions</h3>
13370
<p>The following <small>DDD</small> actions may be used in translation tables.
13373
<li><a accesskey="1" href="#General%20Actions">General Actions</a>:
13374
<li><a accesskey="2" href="#Data%20Display%20Actions">Data Display Actions</a>:
13375
<li><a accesskey="3" href="#Debugger%20Console%20Actions">Debugger Console Actions</a>:
13376
<li><a accesskey="4" href="#Source%20Window%20Actions">Source Window Actions</a>:
13381
<small class=header>
13382
Node:<a name="General%20Actions">General Actions</a>,
13383
Next:<a rel="next" accesskey="n" href="#Data%20Display%20Actions">Data Display Actions</a>,
13384
Up:<a rel="up" accesskey="u" href="#Actions">Actions</a>
13390
<h4 class="subsection">General Actions</h4>
13393
<table width="100%">
13395
<td align="left"><b>ddd-get-focus</b><i> </i>(<i></i>)<i>
13397
<td align="right">Action</td>
13400
<table width="95%" align="center">
13402
Assign focus to the element that just received input.
13407
<table width="100%">
13409
<td align="left"><b>ddd-next-tab-group</b><i> </i>(<i></i>)<i>
13411
<td align="right">Action</td>
13414
<table width="95%" align="center">
13416
Assign focus to the next tab group.
13421
<table width="100%">
13423
<td align="left"><b>ddd-prev-tab-group</b><i> </i>(<i></i>)<i>
13425
<td align="right">Action</td>
13428
<table width="95%" align="center">
13430
Assign focus to the previous tab group.
13435
<table width="100%">
13437
<td align="left"><b>ddd-previous-tab-group</b><i> </i>(<i></i>)<i>
13439
<td align="right">Action</td>
13442
<table width="95%" align="center">
13444
Assign focus to the previous tab group.
13450
<small class=header>
13451
Node:<a name="Data%20Display%20Actions">Data Display Actions</a>,
13452
Next:<a rel="next" accesskey="n" href="#Debugger%20Console%20Actions">Debugger Console Actions</a>,
13453
Previous:<a rel="previous" accesskey="p" href="#General%20Actions">General Actions</a>,
13454
Up:<a rel="up" accesskey="u" href="#Actions">Actions</a>
13460
<h4 class="subsection">Data Display Actions</h4>
13462
<p>These actions are used in the <small>DDD</small> graph editor.
13465
<table width="100%">
13467
<td align="left"><b>end</b><i> </i>(<i></i>)<i>
13469
<td align="right">Action</td>
13472
<table width="95%" align="center">
13474
End the action initiated by <code>select</code>. Bound to a button up event.
13479
<table width="100%">
13481
<td align="left"><b>extend</b><i> </i>(<i></i>)<i>
13483
<td align="right">Action</td>
13486
<table width="95%" align="center">
13488
Extend the current selection. Bound to a button down event.
13493
<table width="100%">
13495
<td align="left"><b>extend-or-move</b><i> </i>(<i></i>)<i>
13497
<td align="right">Action</td>
13500
<table width="95%" align="center">
13502
Extend the current selection. Bound to a button down event.
13503
If the pointer is dragged, move the selection.
13508
<table width="100%">
13510
<td align="left"><b>follow</b><i> </i>(<i></i>)<i>
13512
<td align="right">Action</td>
13515
<table width="95%" align="center">
13517
Continue the action initiated by <code>select</code>. Bound to a pointer
13523
<table width="100%">
13525
<td align="left"><b>graph-select</b><i> </i>(<i></i>)<i>
13527
<td align="right">Action</td>
13530
<table width="95%" align="center">
13532
Equivalent to <code>select</code>, but also updates the current argument.
13537
<table width="100%">
13539
<td align="left"><b>graph-select-or-move</b><i> </i>(<i></i>)<i>
13541
<td align="right">Action</td>
13544
<table width="95%" align="center">
13546
Equivalent to <code>select-or-move</code>, but also updates the current argument.
13551
<table width="100%">
13553
<td align="left"><b>graph-extend</b><i> </i>(<i></i>)<i>
13555
<td align="right">Action</td>
13558
<table width="95%" align="center">
13560
Equivalent to <code>extend</code>, but also updates the current argument.
13565
<table width="100%">
13567
<td align="left"><b>graph-extend-or-move</b><i> </i>(<i></i>)<i>
13569
<td align="right">Action</td>
13572
<table width="95%" align="center">
13574
Equivalent to <code>extend-or-move</code>, but also updates the current argument.
13579
<table width="100%">
13581
<td align="left"><b>graph-toggle</b><i> </i>(<i></i>)<i>
13583
<td align="right">Action</td>
13586
<table width="95%" align="center">
13588
Equivalent to <code>toggle</code>, but also updates the current argument.
13593
<table width="100%">
13595
<td align="left"><b>graph-toggle-or-move</b><i> </i>(<i></i>)<i>
13597
<td align="right">Action</td>
13600
<table width="95%" align="center">
13602
Equivalent to <code>toggle-or-move</code>, but also updates the current argument.
13607
<table width="100%">
13609
<td align="left"><b>graph-popup-menu</b><i> </i>(<i></i>[<i></i><code>graph</code><i>|</i><code>node</code><i>|</i><code>shortcut</code><i></i>]<i></i>)<i>
13611
<td align="right">Action</td>
13614
<table width="95%" align="center">
13616
Pops up a menu. <code>graph</code> pops up a menu with global graph
13617
operations, <code>node</code> pops up a menu with node operations, and
13618
<code>shortcut</code> pops up a menu with display shortcuts.
13620
<p>If no argument is given, pops up a menu depending on the context: when
13621
pointing on a node with the <Shift> key pressed, behaves like
13622
<code>shortcut</code>; when pointing on a without the <Shift> key pressed,
13623
behaves like <code>node</code>; otherwise, behaves as if <code>graph</code> was
13629
<table width="100%">
13631
<td align="left"><b>graph-dereference</b><i> </i>(<i></i>)<i>
13633
<td align="right">Action</td>
13636
<table width="95%" align="center">
13638
Dereference the selected display.
13643
<table width="100%">
13645
<td align="left"><b>graph-detail</b><i> </i>(<i></i>)<i>
13647
<td align="right">Action</td>
13650
<table width="95%" align="center">
13652
Show or hide detail of the selected display.
13657
<table width="100%">
13659
<td align="left"><b>graph-rotate</b><i> </i>(<i></i>)<i>
13661
<td align="right">Action</td>
13664
<table width="95%" align="center">
13666
Rotate the selected display.
13671
<table width="100%">
13673
<td align="left"><b>graph-dependent</b><i> </i>(<i></i>)<i>
13675
<td align="right">Action</td>
13678
<table width="95%" align="center">
13680
Pop up a dialog to create a dependent display.
13685
<table width="100%">
13687
<td align="left"><b>hide-edges</b><i> </i>(<i></i>[<i></i><code>any</code><i>|</i><code>both</code><i>|</i><code>from</code><i>|</i><code>to</code><i></i>]<i></i>)<i>
13689
<td align="right">Action</td>
13692
<table width="95%" align="center">
13694
Hide some edges. <code>any</code> means to process all edges where either
13695
source or target node are selected. <code>both</code> means to process all
13696
edges where both nodes are selected. <code>from</code> means to process all
13697
edges where at least the source node is selected. <code>to</code> means to
13698
process all edges where at least the target node is selected. Default
13699
is <code>any</code>.
13704
<table width="100%">
13706
<td align="left"><b>layout</b><i> </i>(<i></i>[<i></i><code>regular</code><i>|</i><code>compact</code><i></i>]<i>, </i>[<i></i>[<i></i><code>+</code><i>|</i><code>-</code><i></i>]<i> degrees</i>]<i></i>)<i>
13708
<td align="right">Action</td>
13711
<table width="95%" align="center">
13713
Layout the graph. <code>regular</code> means to use the regular layout
13714
algorithm; <code>compact</code> uses an alternate layout algorithm, where
13715
successors are placed next to their parents. Default is
13716
<code>regular</code>. <var>degrees</var> indicates in which direction the graph
13717
should be layouted. Default is the current graph direction.
13722
<table width="100%">
13724
<td align="left"><b>move-selected</b><i> </i>(<i>x-offset, y-offset</i>)<i>
13726
<td align="right">Action</td>
13729
<table width="95%" align="center">
13731
Move all selected nodes in the direction given by <var>x-offset</var> and
13732
<var>y-offset</var>. <var>x-offset</var> and <var>y-offset</var> is either given as a
13733
numeric pixel value, or as <code>+grid</code>, or <code>-grid</code>, meaning the
13739
<table width="100%">
13741
<td align="left"><b>normalize</b><i> </i>(<i></i>)<i>
13743
<td align="right">Action</td>
13746
<table width="95%" align="center">
13748
Place all nodes on their positions and redraw the graph.
13753
<table width="100%">
13755
<td align="left"><b>rotate</b><i> </i>(<i></i>[<i></i>[<i></i><code>+</code><i>|</i><code>-</code><i></i>]<i>degrees</i>]<i></i>)<i>
13757
<td align="right">Action</td>
13760
<table width="95%" align="center">
13762
Rotate the graph around <var>degrees</var> degrees.
13763
<var>degrees</var> must be a multiple of 90. Default is <code>+90</code>.
13768
<table width="100%">
13770
<td align="left"><b>select</b><i> </i>(<i></i>)<i>
13772
<td align="right">Action</td>
13775
<table width="95%" align="center">
13777
Select the node pointed at. Clear all other selections. Bound to a
13783
<table width="100%">
13785
<td align="left"><b>select-all</b><i> </i>(<i></i>)<i>
13787
<td align="right">Action</td>
13790
<table width="95%" align="center">
13792
Select all nodes in the graph.
13797
<table width="100%">
13799
<td align="left"><b>select-first</b><i> </i>(<i></i>)<i>
13801
<td align="right">Action</td>
13804
<table width="95%" align="center">
13806
Select the first node in the graph.
13811
<table width="100%">
13813
<td align="left"><b>select-next</b><i> </i>(<i></i>)<i>
13815
<td align="right">Action</td>
13818
<table width="95%" align="center">
13820
Select the next node in the graph.
13825
<table width="100%">
13827
<td align="left"><b>select-or-move</b><i> </i>(<i></i>)<i>
13829
<td align="right">Action</td>
13832
<table width="95%" align="center">
13834
Select the node pointed at. Clear all other selections. Bound to a
13835
button down event. If the pointer is dragged, move the selected node.
13840
<table width="100%">
13842
<td align="left"><b>select-prev</b><i> </i>(<i></i>)<i>
13844
<td align="right">Action</td>
13847
<table width="95%" align="center">
13849
Select the previous node in the graph.
13854
<table width="100%">
13856
<td align="left"><b>show-edges</b><i> </i>(<i></i>[<i></i><code>any</code><i>|</i><code>both</code><i>|</i><code>from</code><i>|</i><code>to</code><i></i>]<i></i>)<i>
13858
<td align="right">Action</td>
13861
<table width="95%" align="center">
13863
Show some edges. <code>any</code> means to process all edges where either
13864
source or target node are selected. <code>both</code> means to process all
13865
edges where both nodes are selected. <code>from</code> means to process all
13866
edges where at least the source node is selected. <code>to</code> means to
13867
process all edges where at least the target node is selected. Default
13868
is <code>any</code>.
13873
<table width="100%">
13875
<td align="left"><b>snap-to-grid</b><i> </i>(<i></i>)<i>
13877
<td align="right">Action</td>
13880
<table width="95%" align="center">
13882
Place all nodes on the nearest grid position.
13887
<table width="100%">
13889
<td align="left"><b>toggle</b><i> </i>(<i></i>)<i>
13891
<td align="right">Action</td>
13894
<table width="95%" align="center">
13896
Toggle the current selection--if the node pointed at is selected,
13897
it will be unselected, and vice versa. Bound to a button down event.
13902
<table width="100%">
13904
<td align="left"><b>toggle-or-move</b><i> </i>(<i></i>)<i>
13906
<td align="right">Action</td>
13909
<table width="95%" align="center">
13911
Toggle the current selection--if the node pointed at is selected,
13912
it will be unselected, and vice versa. Bound to a button down event.
13913
If the pointer is dragged, move the selection.
13918
<table width="100%">
13920
<td align="left"><b>unselect-all</b><i> </i>(<i></i>)<i>
13922
<td align="right">Action</td>
13925
<table width="95%" align="center">
13927
Clear the selection.
13933
<small class=header>
13934
Node:<a name="Debugger%20Console%20Actions">Debugger Console Actions</a>,
13935
Next:<a rel="next" accesskey="n" href="#Source%20Window%20Actions">Source Window Actions</a>,
13936
Previous:<a rel="previous" accesskey="p" href="#Data%20Display%20Actions">Data Display Actions</a>,
13937
Up:<a rel="up" accesskey="u" href="#Actions">Actions</a>
13943
<h4 class="subsection">Debugger Console Actions</h4>
13945
<p>These actions are used in the debugger console and other text fields.
13948
<table width="100%">
13950
<td align="left"><b>gdb-backward-character</b><i> </i>(<i></i>)<i>
13952
<td align="right">Action</td>
13955
<table width="95%" align="center">
13957
Move one character to the left. Bound to <code>Left</code>.
13962
<table width="100%">
13964
<td align="left"><b>gdb-beginning-of-line</b><i> </i>(<i></i>)<i>
13966
<td align="right">Action</td>
13969
<table width="95%" align="center">
13971
Move cursor to the beginning of the current line, after the prompt.
13972
Bound to <code>HOME</code>.
13977
<table width="100%">
13979
<td align="left"><b>gdb-control</b><i> </i>(<i>control-character</i>)<i>
13981
<td align="right">Action</td>
13984
<table width="95%" align="center">
13986
Send the given <var>control-character</var> to the inferior debugger.
13987
<var>control-character</var> must be specified in the form <code>^</code><var>X</var><code></code>,
13988
where <var>X</var> is an upper-case letter, or <code>?</code>.
13993
<table width="100%">
13995
<td align="left"><b>gdb-command</b><i> </i>(<i>command</i>)<i>
13997
<td align="right">Action</td>
14000
<table width="95%" align="center">
14002
Execute <var>command</var> in the debugger console. The following
14003
replacements are performed on <var>command</var>:
14006
<li>If <var>command</var> has the form <code></code><var>name</var><code>...</code>, insert <var>name</var>,
14007
followed by a space, in the debugger console.
14009
<li>All occurrences of <code>()</code> are replaced by the current contents of
14010
the argument field <code>()</code>.
14017
<table width="100%">
14019
<td align="left"><b>gdb-complete-arg</b><i> </i>(<i>command</i>)<i>
14021
<td align="right">Action</td>
14024
<table width="95%" align="center">
14026
Complete current argument as if <var>command</var> was prepended.
14027
Bound to <Ctrl+T>.
14032
<table width="100%">
14034
<td align="left"><b>gdb-complete-command</b><i> </i>(<i></i>)<i>
14036
<td align="right">Action</td>
14039
<table width="95%" align="center">
14041
Complete current command line in the debugger console.
14042
Bound to <TAB>.
14047
<table width="100%">
14049
<td align="left"><b>gdb-complete-tab</b><i> </i>(<i>command</i>)<i>
14051
<td align="right">Action</td>
14054
<table width="95%" align="center">
14056
If global <TAB> completion is enabled, complete current
14057
argument as if <var>command</var> was prepended. Otherwise, proceed as if
14058
the <TAB> key was hit. Bound to <TAB>.
14063
<table width="100%">
14065
<td align="left"><b>gdb-delete-or-control</b><i> </i>(<i>control-character</i>)<i>
14067
<td align="right">Action</td>
14070
<table width="95%" align="center">
14072
Like <code>gdb-control</code>, but effective only if the cursor is at the end
14073
of a line. Otherwise, <var>control-character</var> is ignored and the
14074
character following the cursor is deleted. Bound to <Ctrl+D>.
14079
<table width="100%">
14081
<td align="left"><b>gdb-end-of-line</b><i> </i>(<i></i>)<i>
14083
<td align="right">Action</td>
14086
<table width="95%" align="center">
14088
Move cursor to the end of the current line. Bound to <code>End</code>.
14093
<table width="100%">
14095
<td align="left"><b>gdb-forward-character</b><i> </i>(<i></i>)<i>
14097
<td align="right">Action</td>
14100
<table width="95%" align="center">
14102
Move one character to the right. Bound to <code>Right</code>.
14107
<table width="100%">
14109
<td align="left"><b>gdb-insert-graph-arg</b><i> </i>(<i></i>)<i>
14111
<td align="right">Action</td>
14114
<table width="95%" align="center">
14116
Insert the contents of the data display argument field <code>()</code>.
14121
<table width="100%">
14123
<td align="left"><b>gdb-insert-source-arg</b><i> </i>(<i></i>)<i>
14125
<td align="right">Action</td>
14128
<table width="95%" align="center">
14130
Insert the contents of the source argument field <code>()</code>.
14135
<table width="100%">
14137
<td align="left"><b>gdb-interrupt</b><i> </i>(<i></i>)<i>
14139
<td align="right">Action</td>
14142
<table width="95%" align="center">
14144
If <small>DDD</small> is in incremental search mode, exit it; otherwise
14145
call <code>gdb-control(^C)</code>.
14150
<table width="100%">
14152
<td align="left"><b>gdb-isearch-prev</b><i> </i>(<i></i>)<i>
14154
<td align="right">Action</td>
14157
<table width="95%" align="center">
14159
Enter reverse incremental search mode. Bound to <Ctrl+B>.
14164
<table width="100%">
14166
<td align="left"><b>gdb-isearch-next</b><i> </i>(<i></i>)<i>
14168
<td align="right">Action</td>
14171
<table width="95%" align="center">
14173
Enter incremental search mode. Bound to <Ctrl+F>.
14178
<table width="100%">
14180
<td align="left"><b>gdb-isearch-exit</b><i> </i>(<i></i>)<i>
14182
<td align="right">Action</td>
14185
<table width="95%" align="center">
14187
Exit incremental search mode. Bound to <ESC>.
14192
<table width="100%">
14194
<td align="left"><b>gdb-next-history</b><i> </i>(<i></i>)<i>
14196
<td align="right">Action</td>
14199
<table width="95%" align="center">
14201
Recall next command from history. Bound to <code>Down</code>.
14206
<table width="100%">
14208
<td align="left"><b>gdb-prev-history</b><i> </i>(<i></i>)<i>
14210
<td align="right">Action</td>
14213
<table width="95%" align="center">
14215
Recall previous command from history. Bound to <code>Up</code>.
14220
<table width="100%">
14222
<td align="left"><b>gdb-previous-history</b><i> </i>(<i></i>)<i>
14224
<td align="right">Action</td>
14227
<table width="95%" align="center">
14229
Recall previous command from history. Bound to <code>Up</code>.
14234
<table width="100%">
14236
<td align="left"><b>gdb-process</b><i> </i>(<i></i>[<i>action </i>[<i>, args<small class="dots">...</small></i>]<i></i>]<i></i>)<i>
14238
<td align="right">Action</td>
14241
<table width="95%" align="center">
14243
Process the given event in the debugger console. Bound to key events
14244
in the source and data window. If this action is bound to the source
14245
window, and the source window is editable, perform
14246
<code></code><var>action</var><code>(</code><var>args</var><code>...)</code> on the source window instead; if
14247
<var>action</var> is not given, perform <code>self-insert()</code>.
14252
<table width="100%">
14254
<td align="left"><b>gdb-select-all</b><i> </i>(<i></i>)<i>
14256
<td align="right">Action</td>
14259
<table width="95%" align="center">
14261
If the <code>selectAllBindings</code> resource is set to <code>Motif</code>,
14262
perform <code>beginning-of-line</code>. Otherwise, perform <code>select-all</code>.
14263
Bound to <Ctrl+A>.
14268
<table width="100%">
14270
<td align="left"><b>gdb-set-line</b><i> </i>(<i>value</i>)<i>
14272
<td align="right">Action</td>
14275
<table width="95%" align="center">
14277
Set the current line to <var>value</var>. Bound to <Ctrl+U>.
14283
<small class=header>
14284
Node:<a name="Source%20Window%20Actions">Source Window Actions</a>,
14285
Previous:<a rel="previous" accesskey="p" href="#Debugger%20Console%20Actions">Debugger Console Actions</a>,
14286
Up:<a rel="up" accesskey="u" href="#Actions">Actions</a>
14292
<h4 class="subsection">Source Window Actions</h4>
14294
<p>These actions are used in the source and code windows.
14297
<table width="100%">
14299
<td align="left"><b>source-delete-glyph</b><i> </i>(<i></i>)<i>
14301
<td align="right">Action</td>
14304
<table width="95%" align="center">
14306
Delete the breakpoint related to the glyph at cursor position.
14311
<table width="100%">
14313
<td align="left"><b>source-double-click</b><i> </i>(<i></i>[<i>text-action </i>[<i>, line-action </i>[<i>, function-action</i>]<i></i>]<i></i>]<i></i>)<i>
14315
<td align="right">Action</td>
14318
<table width="95%" align="center">
14320
The double-click action in the source window.
14323
<li>If this action is taken on a breakpoint glyph, edit the breakpoint
14325
<li>If this action is taken in the breakpoint area, invoke
14326
<code>gdb-command(</code><var>line-action</var><code>)</code>. If <var>line-action</var> is not
14327
given, it defaults to <code>break ()</code>.
14328
<li>If this action is taken in the source text, and the next character
14329
following the current selection is <code>(</code>, invoke
14330
<code>gdb-command(</code><var>function-action</var><code>)</code>. If <var>function-action</var>
14331
is not given, it defaults to <code>list ()</code>.
14332
<li>Otherwise, invoke <code>gdb-command(</code><var>text-action</var><code>)</code>. If
14333
<var>text-action</var> is not given, it defaults to <code>graph display ()</code>.
14339
<table width="100%">
14341
<td align="left"><b>source-drag-glyph</b><i> </i>(<i></i>)<i>
14343
<td align="right">Action</td>
14346
<table width="95%" align="center">
14348
Initiate a drag on the glyph at cursor position.
14353
<table width="100%">
14355
<td align="left"><b>source-drop-glyph</b><i> </i>(<i></i>[<i>action</i>]<i></i>)<i>
14357
<td align="right">Action</td>
14360
<table width="95%" align="center">
14362
Drop the dragged glyph at cursor position. <var>action</var> is either
14363
<code>move</code>, meaning to move the dragged glyph, or <code>copy</code>,
14364
meaning to copy the dragged glyph. If no <var>action</var> is given,
14365
<code>move</code> is assumed.
14370
<table width="100%">
14372
<td align="left"><b>source-end-select-word</b><i> </i>(<i></i>)<i>
14374
<td align="right">Action</td>
14377
<table width="95%" align="center">
14379
End selecting a word.
14384
<table width="100%">
14386
<td align="left"><b>source-follow-glyph</b><i> </i>(<i></i>)<i>
14388
<td align="right">Action</td>
14391
<table width="95%" align="center">
14393
Continue a drag on the glyph at cursor position. Usually bound to
14399
<table width="100%">
14401
<td align="left"><b>source-popup-menu</b><i> </i>(<i></i>)<i>
14403
<td align="right">Action</td>
14406
<table width="95%" align="center">
14408
Pop up a menu, depending on the location.
14413
<table width="100%">
14415
<td align="left"><b>source-set-arg</b><i> </i>(<i></i>)<i>
14417
<td align="right">Action</td>
14420
<table width="95%" align="center">
14422
Set the argument field to the current selection. Typically bound to
14423
some selection operation.
14428
<table width="100%">
14430
<td align="left"><b>source-start-select-word</b><i> </i>(<i></i>)<i>
14432
<td align="right">Action</td>
14435
<table width="95%" align="center">
14437
Start selecting a word.
14442
<table width="100%">
14444
<td align="left"><b>source-update-glyphs</b><i> </i>(<i></i>)<i>
14446
<td align="right">Action</td>
14449
<table width="95%" align="center">
14451
Update all visible glyphs. Usually invoked after a scrolling operation.
14457
<small class=header>
14458
Node:<a name="Images">Images</a>,
14459
Previous:<a rel="previous" accesskey="p" href="#Actions">Actions</a>,
14460
Up:<a rel="up" accesskey="u" href="#Application%20Defaults">Application Defaults</a>
14466
<h3 class="section">Images</h3>
14468
<p><small>DDD</small> installs a number of images that may be used as pixmap
14469
resources, simply by giving a symbolic name. For button images,
14470
three variants are installed as well:
14473
<li>The suffix <code>-hi</code> indicates a highlighted variant (Button is entered).
14474
<li>The suffix <code>-arm</code> indicates an armed variant (Button is pushed).
14475
<li>The suffix <code>-xx</code> indicates a disabled (insensitive) variant.
14479
<table width="100%">
14481
<td align="left"><b>break_at</b><i>
14483
<td align="right">Image</td>
14486
<table width="95%" align="center">
14488
<code>Break at ()</code> button.
14493
<table width="100%">
14495
<td align="left"><b>clear_at</b><i>
14497
<td align="right">Image</td>
14500
<table width="95%" align="center">
14502
<code>Clear at ()</code> button.
14507
<table width="100%">
14509
<td align="left"><b>ddd</b><i>
14511
<td align="right">Image</td>
14514
<table width="95%" align="center">
14516
<small>DDD</small> icon.
14521
<table width="100%">
14523
<td align="left"><b>delete</b><i>
14525
<td align="right">Image</td>
14528
<table width="95%" align="center">
14530
<code>Delete ()</code> button.
14535
<table width="100%">
14537
<td align="left"><b>disable</b><i>
14539
<td align="right">Image</td>
14542
<table width="95%" align="center">
14544
<code>Disable</code> button.
14549
<table width="100%">
14551
<td align="left"><b>dispref</b><i>
14553
<td align="right">Image</td>
14556
<table width="95%" align="center">
14558
<code>Display * ()</code> button.
14563
<table width="100%">
14565
<td align="left"><b>display</b><i>
14567
<td align="right">Image</td>
14570
<table width="95%" align="center">
14572
<code>Display ()</code> button.
14577
<table width="100%">
14579
<td align="left"><b>drag_arrow</b><i>
14581
<td align="right">Image</td>
14584
<table width="95%" align="center">
14586
The execution pointer (being dragged).
14591
<table width="100%">
14593
<td align="left"><b>drag_cond</b><i>
14595
<td align="right">Image</td>
14598
<table width="95%" align="center">
14600
A conditional breakpoint (being dragged).
14605
<table width="100%">
14607
<td align="left"><b>drag_stop</b><i>
14609
<td align="right">Image</td>
14612
<table width="95%" align="center">
14614
A breakpoint (being dragged).
14619
<table width="100%">
14621
<td align="left"><b>drag_temp</b><i>
14623
<td align="right">Image</td>
14626
<table width="95%" align="center">
14628
A temporary breakpoint (being dragged).
14633
<table width="100%">
14635
<td align="left"><b>enable</b><i>
14637
<td align="right">Image</td>
14640
<table width="95%" align="center">
14642
<code>Enable</code> button.
14647
<table width="100%">
14649
<td align="left"><b>find_forward</b><i>
14651
<td align="right">Image</td>
14654
<table width="95%" align="center">
14656
<code>Find>> ()</code> button.
14661
<table width="100%">
14663
<td align="left"><b>find_backward</b><i>
14665
<td align="right">Image</td>
14668
<table width="95%" align="center">
14670
<code>Find<< ()</code> button.
14675
<table width="100%">
14677
<td align="left"><b>grey_arrow</b><i>
14679
<td align="right">Image</td>
14682
<table width="95%" align="center">
14684
The execution pointer (not in lowest frame).
14689
<table width="100%">
14691
<td align="left"><b>grey_cond</b><i>
14693
<td align="right">Image</td>
14696
<table width="95%" align="center">
14698
A conditional breakpoint (disabled).
14703
<table width="100%">
14705
<td align="left"><b>grey_stop</b><i>
14707
<td align="right">Image</td>
14710
<table width="95%" align="center">
14712
A breakpoint (disabled).
14717
<table width="100%">
14719
<td align="left"><b>grey_temp</b><i>
14721
<td align="right">Image</td>
14724
<table width="95%" align="center">
14726
A temporary breakpoint (disabled).
14731
<table width="100%">
14733
<td align="left"><b>hide</b><i>
14735
<td align="right">Image</td>
14738
<table width="95%" align="center">
14740
<code>Hide ()</code> button.
14745
<table width="100%">
14747
<td align="left"><b>lookup</b><i>
14749
<td align="right">Image</td>
14752
<table width="95%" align="center">
14754
<code>Lookup ()</code> button.
14759
<table width="100%">
14761
<td align="left"><b>maketemp</b><i>
14763
<td align="right">Image</td>
14766
<table width="95%" align="center">
14768
<code>Make Temporary</code> button.
14773
<table width="100%">
14775
<td align="left"><b>new_break</b><i>
14777
<td align="right">Image</td>
14780
<table width="95%" align="center">
14782
<code>New Breakpoint</code> button.
14787
<table width="100%">
14789
<td align="left"><b>new_display</b><i>
14791
<td align="right">Image</td>
14794
<table width="95%" align="center">
14796
<code>New Display</code> button.
14801
<table width="100%">
14803
<td align="left"><b>new_watch</b><i>
14805
<td align="right">Image</td>
14808
<table width="95%" align="center">
14810
<code>New Watchpoint</code> button.
14815
<table width="100%">
14817
<td align="left"><b>plain_arrow</b><i>
14819
<td align="right">Image</td>
14822
<table width="95%" align="center">
14824
The execution pointer.
14829
<table width="100%">
14831
<td align="left"><b>plain_cond</b><i>
14833
<td align="right">Image</td>
14836
<table width="95%" align="center">
14838
A conditional breakpoint (enabled).
14843
<table width="100%">
14845
<td align="left"><b>plain_stop</b><i>
14847
<td align="right">Image</td>
14850
<table width="95%" align="center">
14852
A breakpoint (enabled).
14857
<table width="100%">
14859
<td align="left"><b>plain_temp</b><i>
14861
<td align="right">Image</td>
14864
<table width="95%" align="center">
14866
A temporary breakpoint (enabled).
14871
<table width="100%">
14873
<td align="left"><b>print</b><i>
14875
<td align="right">Image</td>
14878
<table width="95%" align="center">
14880
<code>Print ()</code> button.
14885
<table width="100%">
14887
<td align="left"><b>properties</b><i>
14889
<td align="right">Image</td>
14892
<table width="95%" align="center">
14894
<code>Properties</code> button.
14899
<table width="100%">
14901
<td align="left"><b>rotate</b><i>
14903
<td align="right">Image</td>
14906
<table width="95%" align="center">
14908
<code>Rotate ()</code> button.
14913
<table width="100%">
14915
<td align="left"><b>set</b><i>
14917
<td align="right">Image</td>
14920
<table width="95%" align="center">
14922
<code>Set ()</code> button.
14927
<table width="100%">
14929
<td align="left"><b>show</b><i>
14931
<td align="right">Image</td>
14934
<table width="95%" align="center">
14936
<code>Show ()</code> button.
14941
<table width="100%">
14943
<td align="left"><b>signal_arrow</b><i>
14945
<td align="right">Image</td>
14948
<table width="95%" align="center">
14950
The execution pointer (stopped by signal).
14955
<table width="100%">
14957
<td align="left"><b>undisplay</b><i>
14959
<td align="right">Image</td>
14962
<table width="95%" align="center">
14964
<code>Undisplay ()</code> button.
14969
<table width="100%">
14971
<td align="left"><b>unwatch</b><i>
14973
<td align="right">Image</td>
14976
<table width="95%" align="center">
14978
<code>Unwatch ()</code> button.
14983
<table width="100%">
14985
<td align="left"><b>watch</b><i>
14987
<td align="right">Image</td>
14990
<table width="95%" align="center">
14992
<code>Watch ()</code> button.
14998
<small class=header>
14999
Node:<a name="Bugs">Bugs</a>,
15000
Next:<a rel="next" accesskey="n" href="#Configuration%20Notes">Configuration Notes</a>,
15001
Previous:<a rel="previous" accesskey="p" href="#Application%20Defaults">Application Defaults</a>,
15002
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
15008
<h2 class="appendix">Bugs and How To Report Them</h2>
15010
<p>Sometimes you will encounter a bug in <small>DDD</small>. Although we cannot
15011
promise we can or will fix the bug, and we might not even agree that it
15012
is a bug, we want to hear about bugs you encounter in case we do want to
15015
<p>To make it possible for us to fix a bug, you must report it. In order
15016
to do so effectively, you must know when and how to do it.
15019
<li><a accesskey="1" href="#Where%20to%20Send%20Bug%20Reports">Where to Send Bug Reports</a>: Our e-mail address.
15020
<li><a accesskey="2" href="#Is%20it%20a%20%3csmall%3eDDD%3c%2fsmall%3e%20Bug%3f">Is it a <small>DDD</small> Bug?</a>: <small>DDD</small> may not be at fault.
15021
<li><a accesskey="3" href="#How%20to%20Report%20Bugs">How to Report Bugs</a>: Report all the facts.
15022
<li><a accesskey="4" href="#Bug%20Reports">Bug Reports</a>: Include all configuration information.
15023
<li><a accesskey="5" href="#Diagnostics">Diagnostics</a>: Maintaining <small>DDD</small>
15028
<small class=header>
15029
Node:<a name="Where%20to%20Send%20Bug%20Reports">Where to Send Bug Reports</a>,
15030
Next:<a rel="next" accesskey="n" href="#Is%20it%20a%20%3csmall%3eDDD%3c%2fsmall%3e%20Bug%3f">Is it a <small>DDD</small> Bug?</a>,
15031
Up:<a rel="up" accesskey="u" href="#Bugs">Bugs</a>
15037
<h3 class="section">Where to Send Bug Reports</h3>
15039
<p>Send bug reports for <small>DDD</small> via electronic mail to
15041
<pre class="example"> <a href="mailto:bug-ddd@gnu.org">bug-ddd@gnu.org</a>
15046
<small class=header>
15047
Node:<a name="Is%20it%20a%20%3csmall%3eDDD%3c%2fsmall%3e%20Bug%3f">Is it a <small>DDD</small> Bug?</a>,
15048
Next:<a rel="next" accesskey="n" href="#How%20to%20Report%20Bugs">How to Report Bugs</a>,
15049
Previous:<a rel="previous" accesskey="p" href="#Where%20to%20Send%20Bug%20Reports">Where to Send Bug Reports</a>,
15050
Up:<a rel="up" accesskey="u" href="#Bugs">Bugs</a>
15056
<h3 class="section">Is it a DDD Bug?</h3>
15058
<p>Before sending in a bug report, try to find out whether the problem
15059
cause really lies within <small>DDD</small>. A common cause of problems
15060
are incomplete or missing X or M*tif installations, for instance, or
15061
bugs in the X server or M*tif itself. Running <small>DDD</small> as
15063
<pre class="example"> $ <kbd>ddd --check-configuration</kbd>
15066
<p>checks for common problems and gives hints on how to repair them.
15068
<p>Another potential cause of problems is the inferior debugger;
15069
occasionally, they show bugs, too. To find out whether a bug was
15070
caused by the inferior debugger, run <small>DDD</small> as
15072
<pre class="example"> $ <kbd>ddd --trace</kbd>
15075
<p>This shows the interaction between <small>DDD</small> and the inferior debugger
15076
on standard error while <small>DDD</small> is running. (If <code>--trace</code> is
15077
not given, this interaction is logged in the file
15078
<code>~/.ddd/log</code>; see <a href="#Logging">Logging</a>) Compare the debugger output
15079
to the output of <small>DDD</small> and determine which one is wrong.
15083
<small class=header>
15084
Node:<a name="How%20to%20Report%20Bugs">How to Report Bugs</a>,
15085
Next:<a rel="next" accesskey="n" href="#Bug%20Reports">Bug Reports</a>,
15086
Previous:<a rel="previous" accesskey="p" href="#Is%20it%20a%20%3csmall%3eDDD%3c%2fsmall%3e%20Bug%3f">Is it a <small>DDD</small> Bug?</a>,
15087
Up:<a rel="up" accesskey="u" href="#Bugs">Bugs</a>
15093
<h3 class="section">How to Report Bugs</h3>
15095
<p>Here are some guidelines for bug reports:
15098
<li>The fundamental principle of reporting bugs usefully is this:
15099
<strong>report all the facts</strong>. If you are not sure whether to state a
15100
fact or leave it out, state it!
15102
<li>Keep in mind that the purpose of a bug report is to enable someone to
15103
fix the bug if it is not known. It is not very important what happens
15104
if the bug is already known. Therefore, always write your bug reports
15105
on the assumption that the bug is not known.
15107
<li>Your bug report should be self-contained. Do not refer to information
15108
sent in previous mails; your previous mail may have been forwarded to
15111
<li>Please report each bug in a separate message. This makes it easier
15112
for us to track which bugs have been fixed and to forward your bugs
15113
reports to the appropriate maintainer.
15115
<li>Please report bugs in English; this increases the chances of finding
15116
someone who can fix the bug. Do not assume one particular person will
15117
receive your bug report.
15122
<small class=header>
15123
Node:<a name="Bug%20Reports">Bug Reports</a>,
15124
Next:<a rel="next" accesskey="n" href="#Diagnostics">Diagnostics</a>,
15125
Previous:<a rel="previous" accesskey="p" href="#How%20to%20Report%20Bugs">How to Report Bugs</a>,
15126
Up:<a rel="up" accesskey="u" href="#Bugs">Bugs</a>
15132
<h3 class="section">What to Include in a Bug Report</h3>
15134
<p>To enable us to fix a <small>DDD</small> bug, you <em>must</em> include the
15135
following information:
15138
<li>Your <small>DDD</small> configuration. Invoke <small>DDD</small> as
15140
<pre class="example"> $ <kbd>ddd --configuration</kbd>
15143
<p>to get the configuration information. If this does not work, please
15144
include at least the <small>DDD</small> version, the type of machine you
15145
are using, and its operating system name and version number.
15147
</p><li>The debugger you are using and its version (e.g., <code>gdb-4.17</code> or
15148
<code>dbx as shipped with Solaris 2.6</code>).
15150
<li>The compiler you used to compile <small>DDD</small> and its version (e.g.,
15151
<code>gcc-2.8.1</code>).
15153
<li>A description of what behavior you observe that you believe is
15154
incorrect. For example, "<small>DDD</small> gets a fatal signal"
15155
or "<small>DDD</small> exits immediately after attempting to create the
15158
<li>A <em>log file</em> showing the interaction between <small>DDD</small> and the
15159
inferior debugger. By default, this interaction is logged in the file
15160
<code>~/.ddd/log</code>. Include all trace output from the
15161
<small>DDD</small> invocation up to the first bug occurrence; insert own
15162
comments where necessary.
15164
<li>If you wish to suggest changes to the <small>DDD</small> source, send us context
15165
diffs. If you even discuss something in the <small>DDD</small> source, refer to
15166
it by context, <em>never</em> by line number.
15169
<p>Be sure to include this information in <em>every</em> single bug report.
15173
<small class=header>
15174
Node:<a name="Diagnostics">Diagnostics</a>,
15175
Previous:<a rel="previous" accesskey="p" href="#Bug%20Reports">Bug Reports</a>,
15176
Up:<a rel="up" accesskey="u" href="#Bugs">Bugs</a>
15182
<h3 class="section">Getting Diagnostics</h3>
15185
<li><a accesskey="1" href="#Logging">Logging</a>: <small>DDD</small> logs all interactions.
15186
<li><a accesskey="2" href="#Debugging%20%3csmall%3eDDD%3c%2fsmall%3e">Debugging <small>DDD</small></a>: Facilities to debug <small>DDD</small>.
15187
<li><a accesskey="3" href="#Customizing%20Diagnostics">Customizing Diagnostics</a>: All diagnostics resources.
15192
<small class=header>
15193
Node:<a name="Logging">Logging</a>,
15194
Next:<a rel="next" accesskey="n" href="#Debugging%20%3csmall%3eDDD%3c%2fsmall%3e">Debugging <small>DDD</small></a>,
15195
Up:<a rel="up" accesskey="u" href="#Diagnostics">Diagnostics</a>
15201
<h4 class="subsection">Logging</h4>
15203
<p>If things go wrong, the first and most important information source is
15204
the <dfn></dfn><small>DDD</small><dfn> log file</dfn>. This file, created in
15205
<code>~/.ddd/log</code> (<code>~</code> stands for your home directory),
15206
records the following information:
15209
<li>Your <small>DDD</small> configuration (at the top)
15211
<li>All programs invoked by <small>DDD</small>, shown as
15212
<code>$ </code><kbd></kbd><var>program</var><kbd> </kbd><var>args</var><kbd>...</kbd><code></code>
15214
<li>All <small>DDD</small> messages, shown as <code># </code><var>message</var><code></code>.
15216
<li>All information sent from <small>DDD</small> to the inferior debugger,
15217
shown as <code>-> </code><var>text</var><code></code>.
15219
<li>All information sent from the inferior debugger standard output to
15220
<small>DDD</small>, shown as <code><- </code><var>text</var><code></code>.
15222
<li>All information sent from the inferior debugger standard error to
15223
<small>DDD</small>, shown as <code><= </code><var>text</var><code></code>.<a rel="footnote" href="#fn-33"><sup>33</sup></a>
15225
<li>All information sent from <small>DDD</small> to Gnuplot,
15226
shown as <code>>> </code><var>text</var><code></code>.
15228
<li>All information sent from Gnuplot standard output to
15229
<small>DDD</small>, shown as <code><< </code><var>text</var><code></code>.
15231
<li>All information sent from Gnuplot standard error to
15232
<small>DDD</small>, shown as <code><= </code><var>text</var><code></code>.
15234
<li>If <small>DDD</small> crashes, a <small>GDB</small> backtrace of the <small>DDD</small> core dump
15235
is included at the end.
15238
<p>This information, all in one place, should give you (and anyone
15239
maintaining <small>DDD</small>) a first insight of what's going wrong.
15242
<li><a accesskey="1" href="#Disabling%20Logging">Disabling Logging</a>:
15247
<small class=header>
15248
Node:<a name="Disabling%20Logging">Disabling Logging</a>,
15249
Up:<a rel="up" accesskey="u" href="#Logging">Logging</a>
15255
<h5 class="subsubsection">Disabling Logging</h5>
15257
<p>The log files created by <small>DDD</small> can become quite large, so you
15258
might want to turn off logging. There is no explicit <small>DDD</small>
15259
feature that allows you to do that. However, you can easily create a
15260
<em>symbolic link</em> from <code>~/.ddd/log</code> to <code>/dev/null</code>,
15261
such that logging information is lost. Enter the following commands at
15264
<pre class="example"> $ <kbd>cd</kbd>
15265
$ <kbd>rm .ddd/log</kbd>
15266
$ <kbd>ln -s /dev/null .ddd/log</kbd>
15270
<p>Be aware, though, that having logging turned off makes diagnostics much
15271
more difficult; in case of trouble, it may be hard to reproduce the
15276
<small class=header>
15277
Node:<a name="Debugging%20%3csmall%3eDDD%3c%2fsmall%3e">Debugging <small>DDD</small></a>,
15278
Next:<a rel="next" accesskey="n" href="#Customizing%20Diagnostics">Customizing Diagnostics</a>,
15279
Previous:<a rel="previous" accesskey="p" href="#Logging">Logging</a>,
15280
Up:<a rel="up" accesskey="u" href="#Diagnostics">Diagnostics</a>
15286
<h4 class="subsection">Debugging DDD</h4>
15288
<p>As long as <small>DDD</small> is compiled with <code>-g</code> (see <a href="#Compiling%20for%20Debugging">Compiling for Debugging</a>), you can invoke a debugger on <small>DDD</small>--even <small>DDD</small>
15289
itself, if you wish. From within <small>DDD</small>, a special
15290
<code>Maintenance</code> menu is provided that invokes <small>GDB</small> on the running
15291
<small>DDD</small> process. See <a href="#Maintenance%20Menu">Maintenance Menu</a>, for details.
15293
<p>The <small>DDD</small> distribution comes with a <code>.gdbinit</code> file that is
15294
suitable for debugging <small>DDD</small>. Among others, this defines a
15295
<code>ddd</code> command that sets up an environment for debugging <small>DDD</small>
15296
and a <code>string</code> command that lets you print the contents of
15297
<small>DDD</small> <code>string</code> variables; just use <code>print </code><var>var</var><code></code>
15298
followed by <code>string</code>.
15300
<p>You can cause <small>DDD</small> to dump core at any time by sending it a
15301
<code>SIGUSR1</code> signal. <small>DDD</small> resumes execution while you can examine
15302
the core file with <small>GDB</small>.
15304
<p>When debugging <small>DDD</small>, it can be useful to make <small>DDD</small> not
15305
catch fatal errors. This can be achieved by setting the environment
15306
variable <code>DDD_NO_SIGNAL_HANDLERS</code> before invoking
15307
<small>DDD</small>.
15311
<small class=header>
15312
Node:<a name="Customizing%20Diagnostics">Customizing Diagnostics</a>,
15313
Previous:<a rel="previous" accesskey="p" href="#Debugging%20%3csmall%3eDDD%3c%2fsmall%3e">Debugging <small>DDD</small></a>,
15314
Up:<a rel="up" accesskey="u" href="#Diagnostics">Diagnostics</a>
15320
<h4 class="subsection">Customizing Diagnostics</h4>
15322
<p>You can use these additional resources to obtain diagnostics about
15323
<small>DDD</small>. Most of them are tied to a particular invocation option.
15326
<table width="100%">
15328
<td align="left"><b>appDefaultsVersion</b><i> </i>(<i>class Version</i>)<i>
15330
<td align="right">Resource</td>
15333
<table width="95%" align="center">
15335
The version of the <small>DDD</small> app-defaults file. If this string
15336
does not match the version of the current <small>DDD</small> executable,
15337
<small>DDD</small> issues a warning.
15342
<table width="100%">
15344
<td align="left"><b>checkConfiguration</b><i> </i>(<i>class CheckConfiguration</i>)<i>
15346
<td align="right">Resource</td>
15349
<table width="95%" align="center">
15351
If <code>on</code>, check the <small>DDD</small> environment (in particular, the
15352
X configuration), report any possible problem causes and exit.
15353
See <a href="#Options">Options</a>, for the <code>--check-configuration</code> option.
15358
<table width="100%">
15360
<td align="left"><b>dddinitVersion</b><i> </i>(<i>class Version</i>)<i>
15362
<td align="right">Resource</td>
15365
<table width="95%" align="center">
15367
The version of the <small>DDD</small> executable that last wrote the
15368
<code>~/.ddd/init</code> file. If this string does not match the
15369
version of the current <small>DDD</small> executable, <small>DDD</small> issues
15375
<table width="100%">
15377
<td align="left"><b>debugCoreDumps</b><i> </i>(<i>class DebugCoreDumps</i>)<i>
15379
<td align="right">Resource</td>
15382
<table width="95%" align="center">
15384
If <code>on</code>, <small>DDD</small> invokes a debugger on itself when receiving a
15385
fatal signal. See <a href="#Maintenance%20Menu">Maintenance Menu</a>, for setting this resource.
15390
<table width="100%">
15392
<td align="left"><b>dumpCore</b><i> </i>(<i>class DumpCore</i>)<i>
15394
<td align="right">Resource</td>
15397
<table width="95%" align="center">
15399
If <code>on</code> (default), <small>DDD</small> dumps core when receiving a
15400
fatal signal. See <a href="#Maintenance%20Menu">Maintenance Menu</a>, for setting this resource.
15405
<table width="100%">
15407
<td align="left"><b>maintenance</b><i> </i>(<i>class Maintenance</i>)<i>
15409
<td align="right">Resource</td>
15412
<table width="95%" align="center">
15414
If <code>on</code>, enables the top-level <code>Maintenance</code> menu
15415
(see <a href="#Maintenance%20Menu">Maintenance Menu</a>) with additional options. See <a href="#Options">Options</a>, for
15416
the <code>--maintenance</code> option.
15421
<table width="100%">
15423
<td align="left"><b>showConfiguration</b><i> </i>(<i>class ShowConfiguration</i>)<i>
15425
<td align="right">Resource</td>
15428
<table width="95%" align="center">
15430
If <code>on</code>, show the <small>DDD</small> configuration on standard output and
15431
exit. See <a href="#Options">Options</a>, for the <code>--configuration</code> option.
15436
<table width="100%">
15438
<td align="left"><b>showFonts</b><i> </i>(<i>class ShowFonts</i>)<i>
15440
<td align="right">Resource</td>
15443
<table width="95%" align="center">
15445
If <code>on</code>, show the <small>DDD</small> font definitions on standard output
15446
and exit. See <a href="#Options">Options</a>, for the <code>--fonts</code> option.
15451
<table width="100%">
15453
<td align="left"><b>showInvocation</b><i> </i>(<i>class ShowInvocation</i>)<i>
15455
<td align="right">Resource</td>
15458
<table width="95%" align="center">
15460
If <code>on</code>, show the <small>DDD</small> invocation options on standard
15461
output and exit. See <a href="#Options">Options</a>, for the <code>--help</code> option.
15466
<table width="100%">
15468
<td align="left"><b>showLicense</b><i> </i>(<i>class ShowLicense</i>)<i>
15470
<td align="right">Resource</td>
15473
<table width="95%" align="center">
15475
If <code>on</code>, show the <small>DDD</small> license on standard output and
15476
exit. See <a href="#Options">Options</a>, for the <code>--license</code> option.
15481
<table width="100%">
15483
<td align="left"><b>showManual</b><i> </i>(<i>class ShowManual</i>)<i>
15485
<td align="right">Resource</td>
15488
<table width="95%" align="center">
15490
If <code>on</code>, show this <small>DDD</small> manual page on standard output and exit.
15491
If the standard output is a terminal, the manual page is shown in a
15492
pager (<code>$PAGER</code>, <code>less</code> or <code>more</code>).
15493
See <a href="#Options">Options</a>, for the <code>--manual</code> option.
15498
<table width="100%">
15500
<td align="left"><b>showNews</b><i> </i>(<i>class ShowNews</i>)<i>
15502
<td align="right">Resource</td>
15505
<table width="95%" align="center">
15507
If <code>on</code>, show the <small>DDD</small> news on standard output and
15508
exit. See <a href="#Options">Options</a>, for the <code>--news</code> option.
15513
<table width="100%">
15515
<td align="left"><b>showVersion</b><i> </i>(<i>class ShowVersion</i>)<i>
15517
<td align="right">Resource</td>
15520
<table width="95%" align="center">
15522
If <code>on</code>, show the <small>DDD</small> version on standard output and
15523
exit. See <a href="#Options">Options</a>, for the <code>--version</code> option.
15528
<table width="100%">
15530
<td align="left"><b>suppressWarnings</b><i> </i>(<i>class SuppressWarnings</i>)<i>
15532
<td align="right">Resource</td>
15535
<table width="95%" align="center">
15537
If <code>on</code>, X warnings are suppressed. This is sometimes useful for
15538
executables that were built on a machine with a different X or M*tif
15539
configuration. By default, this is <code>off</code>. See <a href="#X%20Warnings">X Warnings</a>, for
15545
<table width="100%">
15547
<td align="left"><b>trace</b><i> </i>(<i>class Trace</i>)<i>
15549
<td align="right">Resource</td>
15552
<table width="95%" align="center">
15554
If <code>on</code>, show the dialog between <small>DDD</small> and the inferior debugger
15555
on standard output. Default is <code>off</code>. See <a href="#Options">Options</a>, for the
15556
<code>--trace</code> option.
15562
<small class=header>
15563
Node:<a name="Configuration%20Notes">Configuration Notes</a>,
15564
Next:<a rel="next" accesskey="n" href="#Dirty%20Tricks">Dirty Tricks</a>,
15565
Previous:<a rel="previous" accesskey="p" href="#Bugs">Bugs</a>,
15566
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
15572
<h2 class="appendix">Configuration Notes</h2>
15575
<li><a accesskey="1" href="#GDB">GDB</a>: Using <small>DDD</small> with <small>GDB</small>
15576
<li><a accesskey="2" href="#DBX">DBX</a>: Using <small>DDD</small> with <small>DBX</small>
15577
<li><a accesskey="3" href="#Ladebug">Ladebug</a>: Using <small>DDD</small> with Ladebug
15578
<li><a accesskey="4" href="#XDB">XDB</a>: Using <small>DDD</small> with <small>XDB</small>
15579
<li><a accesskey="5" href="#JDB">JDB</a>: Using <small>DDD</small> with <small>JDB</small>
15580
<li><a accesskey="6" href="#Perl">Perl</a>: Using <small>DDD</small> with Perl
15581
<li><a accesskey="7" href="#Bash">Bash</a>: Using <small>DDD</small> with Bash
15582
<li><a accesskey="8" href="#LessTif">LessTif</a>: Using <small>DDD</small> with LessTif
15587
<small class=header>
15588
Node:<a name="GDB">GDB</a>,
15589
Next:<a rel="next" accesskey="n" href="#DBX">DBX</a>,
15590
Up:<a rel="up" accesskey="u" href="#Configuration%20Notes">Configuration Notes</a>
15596
<h3 class="section">Using DDD with GDB</h3>
15598
<p>Some <small>GDB</small> settings are essential for <small>DDD</small> to work correctly.
15599
These settings with their correct values are:
15600
<pre class="example"> set height 0
15607
<p><small>DDD</small> sets these values automatically when invoking <small>GDB</small>; if these
15608
values are changed, there may be some malfunctions, especially in the
15611
<p>When debugging at the machine level with <small>GDB</small> 4.12 and earlier as
15612
inferior debugger, use a <code>display /x $pc</code> command to ensure the
15613
program counter value is updated correctly at each stop. You may also
15614
enter the command in <code>~/.gdbinit</code> or (better yet) upgrade to the
15615
most recent <small>GDB</small> version.
15618
<li><a accesskey="1" href="#WDB">WDB</a>: Using DDD with WDB
15619
<li><a accesskey="2" href="#WindRiver%20GDB">WindRiver GDB</a>: Using DDD with WindRiver GDB (Tornado)
15624
<small class=header>
15625
Node:<a name="WDB">WDB</a>,
15626
Next:<a rel="next" accesskey="n" href="#WindRiver%20GDB">WindRiver GDB</a>,
15627
Up:<a rel="up" accesskey="u" href="#GDB">GDB</a>
15633
<h4 class="subsection">Using DDD with WDB</h4>
15635
<p>HP's WildeBeest (<small>WDB</small>) is essentially a variant of <small>GDB</small>. To start
15636
<small>DDD</small> with <small>WDB</small> as inferior debugger, use
15638
<pre class="example"> ddd --wdb <var>program</var>
15641
<p>See <a href="#GDB">GDB</a>, for further configuration notes.
15645
<small class=header>
15646
Node:<a name="WindRiver%20GDB">WindRiver GDB</a>,
15647
Previous:<a rel="previous" accesskey="p" href="#WDB">WDB</a>,
15648
Up:<a rel="up" accesskey="u" href="#GDB">GDB</a>
15654
<h4 class="subsection">Using DDD with WindRiver GDB (Tornado)</h4>
15656
<p><small>DDD</small> now supports WindRiver's version of <small>GDB</small>.<a rel="footnote" href="#fn-34"><sup>34</sup></a>
15657
<small>DDD</small> can be integrated into the <code>Launch</code> window by placing the
15658
<code>launch.tcl</code> script (see below) into the the directory
15659
<code>~/.wind</code>.
15661
<p>Currently, <small>DDD</small> only supports the PowerPC and has been only tested on
15662
a Solaris 2.6 host.
15664
<p><small>DDD</small> launches the version of <small>GDB</small> that is either in the current
15665
path, or the one specified on the command line using the
15666
<code>--debugger</code> command.
15668
<p>Normally, the Tornado environment is set up by sourcing a script file
15669
which, among other things, sets up the PATH variable.
15671
<p>It is suggested that a soft link for the version of <small>GDB</small> used for the
15672
target (i.e. <code>gdbppc</code>) be made in the same directory:
15674
<pre class="example"> bin><kbd>ls -l gdb*</kbd>
15675
39 Mar 6 16:14 gdb -> /usr/wind/host/sun4-solaris2/bin/gdbppc*
15676
1619212 Mar 11 1997 gdbppc*
15680
<p>This way <small>DDD</small> will start the correct version of <small>GDB</small> automatically.
15682
<p>It is also suggested that you use <small>DDD</small>'s execution window to
15683
facilitate parsing of <small>GDB</small> output. See <a href="#Debugger%20Communication">Debugger Communication</a>, for
15686
<p>Tornado reads the default TCL scripts first, then the ones in the users
15687
<code>.wind</code> directory. The following procedures can be cut and pasted into
15688
the user's <code>launch.tcl</code> file:
15690
<pre class="smallexample"> # Launch.tcl - Launch application Tcl user customization file.
15695
# setupDDD - sets up DDD for use by the launcher
15697
# This routine adds the DDD to the application bar
15710
# Add to the default application bar
15711
objectCreate app ddd DDD {launchDDD}
15716
# launchDDD - launch the DDD debugger
15728
proc launchDDD {} {
15730
global tgtsvr_selected
15731
global tgtsvr_cpuid
15733
if {$tgtsvr_selected == "" || $tgtsvr_cpuid == 0} {
15734
noticePost error "Select an attached target first."
15738
set startFileName /tmp/dddstartup.[pid]
15740
if [catch {open $startFileName w} file] {
15741
# couldn't create a startup file. Oh, well.
15742
exec ddd --gdb &
15746
# write out a little /tmp file that attaches to the
15747
# selected target server and then deletes itself.
15748
puts $file "set wtx-tool-name ddd"
15749
puts $file "target wtx $tgtsvr_selected"
15750
puts $file "tcl exec rm $startFileName"
15752
exec ddd --gdb --command=$startFileName &
15758
# Launch.tcl - Initialization
15760
# The user's resource file sourced from the initial Launch.tcl
15763
# Add DDD to the laucher
15767
<p>In order for <small>DDD</small> to automatically display the source of a previously
15768
loaded file, the entry point must be named either <code>vxworks_main</code> or
15769
<code>main_vxworks</code>.
15771
<p>See <a href="#GDB">GDB</a>, for further configuration notes.
15775
<small class=header>
15776
Node:<a name="DBX">DBX</a>,
15777
Next:<a rel="next" accesskey="n" href="#Ladebug">Ladebug</a>,
15778
Previous:<a rel="previous" accesskey="p" href="#GDB">GDB</a>,
15779
Up:<a rel="up" accesskey="u" href="#Configuration%20Notes">Configuration Notes</a>
15785
<h3 class="section">Using DDD with DBX</h3>
15787
<p>When used for debugging Pascal-like programs, <small>DDD</small> does not
15788
infer correct array subscripts and always starts to count with 1.
15790
<p>With some <small>DBX</small> versions (notably Solaris <small>DBX</small>),
15791
<small>DDD</small> strips C-style and C++-style comments from the
15792
<small>DBX</small> output in order to interpret it properly. This also
15793
affects the output of the debugged program when sent to the debugger
15794
console. Using the separate execution window avoids these problems.
15796
<p>In some <small>DBX</small> versions (notably DEC <small>DBX</small> and AIX <small>DBX</small>), there is no
15797
automatic data display. As an alternative, <small>DDD</small> uses the <small>DBX</small>
15798
<code>print</code> command to access data values. This means that variable
15799
names are interpreted according to the current frame; variables outside
15800
the current frame cannot be displayed.
15804
<small class=header>
15805
Node:<a name="Ladebug">Ladebug</a>,
15806
Next:<a rel="next" accesskey="n" href="#XDB">XDB</a>,
15807
Previous:<a rel="previous" accesskey="p" href="#DBX">DBX</a>,
15808
Up:<a rel="up" accesskey="u" href="#Configuration%20Notes">Configuration Notes</a>
15814
<h3 class="section">Using DDD with Ladebug</h3>
15816
<p>All <small>DBX</small> limitations (see <a href="#DBX">DBX</a>) apply to Ladebug as well.
15820
<small class=header>
15821
Node:<a name="XDB">XDB</a>,
15822
Next:<a rel="next" accesskey="n" href="#JDB">JDB</a>,
15823
Previous:<a rel="previous" accesskey="p" href="#Ladebug">Ladebug</a>,
15824
Up:<a rel="up" accesskey="u" href="#Configuration%20Notes">Configuration Notes</a>
15830
<h3 class="section">Using DDD with XDB</h3>
15832
<p>There is no automatic data display in <small>XDB</small>. As a workaround,
15833
<small>DDD</small> uses the <code>p</code> command to access data values. This
15834
means that variable names are interpreted according to the current
15835
frame; variables outside the current frame cannot be displayed.
15839
<small class=header>
15840
Node:<a name="JDB">JDB</a>,
15841
Next:<a rel="next" accesskey="n" href="#Perl">Perl</a>,
15842
Previous:<a rel="previous" accesskey="p" href="#XDB">XDB</a>,
15843
Up:<a rel="up" accesskey="u" href="#Configuration%20Notes">Configuration Notes</a>
15849
<h3 class="section">Using DDD with JDB</h3>
15851
<p>There is no automatic data display in <small>JDB</small>. As a workaround,
15852
<small>DDD</small> uses the <code>dump</code> command to access data values.
15853
This means that variable names are interpreted according to the
15854
current frame; variables outside the current frame cannot be
15857
<p>In <small>JDB</small> 1.1, the <code>dump</code> and <code>print</code> commands do not support
15858
expression evaluation. Hence, you cannot display arbitrary expressions.
15860
<p>Parsing of <small>JDB</small> output is quite CPU-intensive, due to the
15861
recognition of asynchronous prompts (any thread may output anything at
15862
any time, including prompts). Hence, a program producing much console
15863
output is likely to slow down <small>DDD</small> considerably. In such a
15864
case, have the program run with <code>-debug</code> in a separate window and
15865
attach <small>JDB</small> to it using the <code>-passwd</code> option.
15869
<small class=header>
15870
Node:<a name="Perl">Perl</a>,
15871
Next:<a rel="next" accesskey="n" href="#Bash">Bash</a>,
15872
Previous:<a rel="previous" accesskey="p" href="#JDB">JDB</a>,
15873
Up:<a rel="up" accesskey="u" href="#Configuration%20Notes">Configuration Notes</a>
15879
<h3 class="section">Using DDD with Perl</h3>
15881
<p>There is no automatic data display in Perl. As a workaround,
15882
<small>DDD</small> uses the <code>x</code> command to access data values. This
15883
means that variable names are interpreted according to the current
15884
frame; variables outside the current frame cannot be displayed.
15888
<small class=header>
15889
Node:<a name="Bash">Bash</a>,
15890
Next:<a rel="next" accesskey="n" href="#LessTif">LessTif</a>,
15891
Previous:<a rel="previous" accesskey="p" href="#Perl">Perl</a>,
15892
Up:<a rel="up" accesskey="u" href="#Configuration%20Notes">Configuration Notes</a>
15898
<h3 class="section">Using DDD with Bash</h3>
15900
<p><small>BASH</small> support is rather new. As a programming language, <small>BASH</small> is
15901
not feature rich: there are no record structures or hash tables (yet),
15902
no pointers, package variable scoping or methods. So much of the data
15903
display and visualization features of DDD are disabled.
15905
<p>As with any scripting or interpreted language like Perl, stepping
15906
a machine-language instructions (commands Stepi/Nexti) doesn't exist.
15908
<p>Some <small>BASH</small> settings are essential for <small>DDD</small> to work correctly.
15909
These settings with their correct values are:
15911
<pre class="example"> set annotate 1
15912
set prompt set prompt bashdb$_Dbg_less$_Dbg_greater$_Dbg_space
15915
<p><small>DDD</small> sets these values automatically when invoking <small>BASH</small>; if these
15916
values are changed, there may be some malfunctions.
15918
<p>Pay special attention when the prompt has extra angle brackets (a
15919
nested shell) or has any parenthesis (is in a subshell). Quitting may
15920
merely exit out of one of these nested (sub)shells rather than leave
15925
<small class=header>
15926
Node:<a name="LessTif">LessTif</a>,
15927
Previous:<a rel="previous" accesskey="p" href="#Bash">Bash</a>,
15928
Up:<a rel="up" accesskey="u" href="#Configuration%20Notes">Configuration Notes</a>
15934
<h3 class="section">Using DDD with LessTif</h3>
15936
<p><small>DDD</small> includes a number of hacks that make <small>DDD</small> run with
15937
<em>LessTif,</em> a free M*tif library without loss of functionality.
15938
Since a <small>DDD</small> binary may be dynamically bound and used with either an
15939
OSF/Motif or LessTif library, these <em>lesstif hacks</em> can be enabled
15940
and disabled at run time.
15942
<p>Whether the <em>lesstif hacks</em> are included at run-time depends on the
15943
setting of the <code>lessTifVersion</code> resource:
15946
<table width="100%">
15948
<td align="left"><b>lessTifVersion</b><i> </i>(<i>class LessTifVersion</i>)<i>
15950
<td align="right">Resource</td>
15953
<table width="95%" align="center">
15955
Indicates the LessTif version <small>DDD</small> is running against. For
15956
LessTif version <var>x.y</var>, the value is <var>x</var> multiplied by 1000 plus
15957
<var>y</var>--for instance, the value <code>79</code> stands for LessTif 0.79 and
15958
the value <code>1005</code> stands for LessTif 1.5.
15960
<p>If the value of this resource is less than 1000, indicating LessTif
15961
0.99 or earlier, <small>DDD</small> enables version-specific hacks to make
15962
<small>DDD</small> work around LessTif bugs and deficiencies.
15964
<p>If <small>DDD</small> was compiled against LessTif, the default value is the
15965
value of the <code>LessTifVersion</code> macro in <code><Xm/Xm.h></code>. If
15966
<small>DDD</small> was compiled against OSF/Motif, the default value is
15967
<code>1000</code>, disabling all LessTif-specific hacks.
15971
<p>To set the <code>lessTifVersion</code> resource at <small>DDD</small> invocation and
15972
to specify the version number of the LessTif library, you can also use
15973
the option <code>--lesstif-version</code> <var>version</var>.
15975
<p>The default value of the <code>lessTifVersion</code> resource is derived from
15976
the LessTif library <small>DDD</small> was compiled against (or <code>1000</code>
15977
when compiled against OSF/Motif). Hence, you normally don't need to
15978
worry about the value of this resource. However, if you use a
15979
dynamically linked <small>DDD</small> binary with a library other than the one
15980
<small>DDD</small> was compiled against, you must specify the version number of
15981
the library using this resource. (Unfortunately, <small>DDD</small> cannot
15982
detect this at run-time.)
15984
<p>Here are a few scenarios to illustrate this scheme:
15986
<li>Your <small>DDD</small> binary was compiled against OSF/Motif, but you use
15987
a LessTif 0.88 dynamic library instead. Invoke <small>DDD</small> with
15988
<code>--lesstif-version 88</code>.
15989
<li>Your <small>DDD</small> binary was compiled against LessTif, but you use
15990
a OSF/Motif dynamic library instead. Invoke <small>DDD</small> with
15991
<code>--lesstif-version 1000</code>.
15992
<li>Your <small>DDD</small> binary was compiled against LessTif 0.85, and you
15993
have upgraded to LessTif 0.90. Invoke <small>DDD</small> with
15994
<code>--lesstif-version 90</code>.
15997
<p>To find out the LessTif or OSF/Motif version <small>DDD</small> was
15998
compiled against, invoke <small>DDD</small> with the
15999
<code>--configuration</code> option.
16001
<p>In the <small>DDD</small> source, LessTif-specific hacks are controlled by
16002
the string <code>lesstif_version</code>.
16006
<small class=header>
16007
Node:<a name="Dirty%20Tricks">Dirty Tricks</a>,
16008
Next:<a rel="next" accesskey="n" href="#Extending">Extending</a>,
16009
Previous:<a rel="previous" accesskey="p" href="#Configuration%20Notes">Configuration Notes</a>,
16010
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
16016
<h2 class="appendix">Dirty Tricks</h2>
16018
<p>Do you miss anything in this manual? Do you have any material that
16019
should be added? Please send any contributions to <a href="mailto:ddd@gnu.org">ddd@gnu.org</a>.
16023
<small class=header>
16024
Node:<a name="Extending">Extending</a>,
16025
Next:<a rel="next" accesskey="n" href="#FAQ">FAQ</a>,
16026
Previous:<a rel="previous" accesskey="p" href="#Dirty%20Tricks">Dirty Tricks</a>,
16027
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
16033
<h2 class="appendix">Extending DDD</h2>
16035
<p>If you have any contributions to be incorporated into <small>DDD</small>,
16036
please send them to <a href="mailto:ddd@gnu.org">ddd@gnu.org</a>. For suggestions on what might
16037
be done, see the file <code>TODO</code> in the <small>DDD</small> distribution.
16041
<small class=header>
16042
Node:<a name="FAQ">FAQ</a>,
16043
Next:<a rel="next" accesskey="n" href="#License">License</a>,
16044
Previous:<a rel="previous" accesskey="p" href="#Extending">Extending</a>,
16045
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
16051
<h2 class="appendix">Frequently Answered Questions</h2>
16053
<p>See <a href="http://www.gnu.org/software/ddd/">the <small>DDD</small> <small>WWW</small> page</a> for
16054
frequently answered questions not covered in this manual.
16058
<small class=header>
16059
Node:<a name="License">License</a>,
16060
Next:<a rel="next" accesskey="n" href="#Help%20and%20Assistance">Help and Assistance</a>,
16061
Previous:<a rel="previous" accesskey="p" href="#FAQ">FAQ</a>,
16062
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
16068
<h2 class="appendix">GNU General Public License</h2>
16070
<div align="center">Version 2, June 1991</div>
16071
<pre class="display"> Copyright © 1989, 1991 Free Software Foundation, Inc. 675
16072
Mass Ave, Boston, MA 02111-1307, USA
16074
Everyone is permitted to copy and distribute verbatim copies
16075
of this license document, but changing it is not allowed.
16078
<h3 class="unnumberedsec">Preamble</h3>
16080
<p>The licenses for most software are designed to take away your
16081
freedom to share and change it. By contrast, the GNU General Public
16082
License is intended to guarantee your freedom to share and change free
16083
software--to make sure the software is free for all its users. This
16084
General Public License applies to most of the Free Software
16085
Foundation's software and to any other program whose authors commit to
16086
using it. (Some other Free Software Foundation software is covered by
16087
the GNU Library General Public License instead.) You can apply it to
16088
your programs, too.
16090
<p>When we speak of free software, we are referring to freedom, not
16091
price. Our General Public Licenses are designed to make sure that you
16092
have the freedom to distribute copies of free software (and charge for
16093
this service if you wish), that you receive source code or can get it
16094
if you want it, that you can change the software or use pieces of it
16095
in new free programs; and that you know you can do these things.
16097
<p>To protect your rights, we need to make restrictions that forbid
16098
anyone to deny you these rights or to ask you to surrender the rights.
16099
These restrictions translate to certain responsibilities for you if you
16100
distribute copies of the software, or if you modify it.
16102
<p>For example, if you distribute copies of such a program, whether
16103
gratis or for a fee, you must give the recipients all the rights that
16104
you have. You must make sure that they, too, receive or can get the
16105
source code. And you must show them these terms so they know their
16108
<p>We protect your rights with two steps: (1) copyright the software, and
16109
(2) offer you this license which gives you legal permission to copy,
16110
distribute and/or modify the software.
16112
<p>Also, for each author's protection and ours, we want to make certain
16113
that everyone understands that there is no warranty for this free
16114
software. If the software is modified by someone else and passed on, we
16115
want its recipients to know that what they have is not the original, so
16116
that any problems introduced by others will not reflect on the original
16117
authors' reputations.
16119
<p>Finally, any free program is threatened constantly by software
16120
patents. We wish to avoid the danger that redistributors of a free
16121
program will individually obtain patent licenses, in effect making the
16122
program proprietary. To prevent this, we have made it clear that any
16123
patent must be licensed for everyone's free use or not licensed at all.
16125
<p>The precise terms and conditions for copying, distribution and
16126
modification follow.
16128
<ol type=1 start=0>
16129
<li>This License applies to any program or other work which contains
16130
a notice placed by the copyright holder saying it may be distributed
16131
under the terms of this General Public License. The "Program", below,
16132
refers to any such program or work, and a "work based on the Program"
16133
means either the Program or any derivative work under copyright law:
16134
that is to say, a work containing the Program or a portion of it,
16135
either verbatim or with modifications and/or translated into another
16136
language. (Hereinafter, translation is included without limitation in
16137
the term "modification".) Each licensee is addressed as "you".
16139
<p>Activities other than copying, distribution and modification are not
16140
covered by this License; they are outside its scope. The act of
16141
running the Program is not restricted, and the output from the Program
16142
is covered only if its contents constitute a work based on the
16143
Program (independent of having been made by running the Program).
16144
Whether that is true depends on what the Program does.
16146
</p><li>You may copy and distribute verbatim copies of the Program's
16147
source code as you receive it, in any medium, provided that you
16148
conspicuously and appropriately publish on each copy an appropriate
16149
copyright notice and disclaimer of warranty; keep intact all the
16150
notices that refer to this License and to the absence of any warranty;
16151
and give any other recipients of the Program a copy of this License
16152
along with the Program.
16154
<p>You may charge a fee for the physical act of transferring a copy, and
16155
you may at your option offer warranty protection in exchange for a fee.
16157
</p><li>You may modify your copy or copies of the Program or any portion
16158
of it, thus forming a work based on the Program, and copy and
16159
distribute such modifications or work under the terms of Section 1
16160
above, provided that you also meet all of these conditions:
16162
<ol type=a start=1>
16163
<li>You must cause the modified files to carry prominent notices
16164
stating that you changed the files and the date of any change.
16166
<li>You must cause any work that you distribute or publish, that in
16167
whole or in part contains or is derived from the Program or any
16168
part thereof, to be licensed as a whole at no charge to all third
16169
parties under the terms of this License.
16171
<li>If the modified program normally reads commands interactively
16172
when run, you must cause it, when started running for such
16173
interactive use in the most ordinary way, to print or display an
16174
announcement including an appropriate copyright notice and a
16175
notice that there is no warranty (or else, saying that you provide
16176
a warranty) and that users may redistribute the program under
16177
these conditions, and telling the user how to view a copy of this
16178
License. (Exception: if the Program itself is interactive but
16179
does not normally print such an announcement, your work based on
16180
the Program is not required to print an announcement.)
16183
<p>These requirements apply to the modified work as a whole. If
16184
identifiable sections of that work are not derived from the Program,
16185
and can be reasonably considered independent and separate works in
16186
themselves, then this License, and its terms, do not apply to those
16187
sections when you distribute them as separate works. But when you
16188
distribute the same sections as part of a whole which is a work based
16189
on the Program, the distribution of the whole must be on the terms of
16190
this License, whose permissions for other licensees extend to the
16191
entire whole, and thus to each and every part regardless of who wrote it.
16193
<p>Thus, it is not the intent of this section to claim rights or contest
16194
your rights to work written entirely by you; rather, the intent is to
16195
exercise the right to control the distribution of derivative or
16196
collective works based on the Program.
16198
<p>In addition, mere aggregation of another work not based on the Program
16199
with the Program (or with a work based on the Program) on a volume of
16200
a storage or distribution medium does not bring the other work under
16201
the scope of this License.
16203
</p><li>You may copy and distribute the Program (or a work based on it,
16204
under Section 2) in object code or executable form under the terms of
16205
Sections 1 and 2 above provided that you also do one of the following:
16207
<ol type=a start=1>
16208
<li>Accompany it with the complete corresponding machine-readable
16209
source code, which must be distributed under the terms of Sections
16210
1 and 2 above on a medium customarily used for software interchange; or,
16212
<li>Accompany it with a written offer, valid for at least three
16213
years, to give any third party, for a charge no more than your
16214
cost of physically performing source distribution, a complete
16215
machine-readable copy of the corresponding source code, to be
16216
distributed under the terms of Sections 1 and 2 above on a medium
16217
customarily used for software interchange; or,
16219
<li>Accompany it with the information you received as to the offer
16220
to distribute corresponding source code. (This alternative is
16221
allowed only for noncommercial distribution and only if you
16222
received the program in object code or executable form with such
16223
an offer, in accord with Subsection b above.)
16226
<p>The source code for a work means the preferred form of the work for
16227
making modifications to it. For an executable work, complete source
16228
code means all the source code for all modules it contains, plus any
16229
associated interface definition files, plus the scripts used to
16230
control compilation and installation of the executable. However, as a
16231
special exception, the source code distributed need not include
16232
anything that is normally distributed (in either source or binary
16233
form) with the major components (compiler, kernel, and so on) of the
16234
operating system on which the executable runs, unless that component
16235
itself accompanies the executable.
16237
<p>If distribution of executable or object code is made by offering
16238
access to copy from a designated place, then offering equivalent
16239
access to copy the source code from the same place counts as
16240
distribution of the source code, even though third parties are not
16241
compelled to copy the source along with the object code.
16243
</p><li>You may not copy, modify, sublicense, or distribute the Program
16244
except as expressly provided under this License. Any attempt
16245
otherwise to copy, modify, sublicense or distribute the Program is
16246
void, and will automatically terminate your rights under this License.
16247
However, parties who have received copies, or rights, from you under
16248
this License will not have their licenses terminated so long as such
16249
parties remain in full compliance.
16251
<li>You are not required to accept this License, since you have not
16252
signed it. However, nothing else grants you permission to modify or
16253
distribute the Program or its derivative works. These actions are
16254
prohibited by law if you do not accept this License. Therefore, by
16255
modifying or distributing the Program (or any work based on the
16256
Program), you indicate your acceptance of this License to do so, and
16257
all its terms and conditions for copying, distributing or modifying
16258
the Program or works based on it.
16260
<li>Each time you redistribute the Program (or any work based on the
16261
Program), the recipient automatically receives a license from the
16262
original licensor to copy, distribute or modify the Program subject to
16263
these terms and conditions. You may not impose any further
16264
restrictions on the recipients' exercise of the rights granted herein.
16265
You are not responsible for enforcing compliance by third parties to
16268
<li>If, as a consequence of a court judgment or allegation of patent
16269
infringement or for any other reason (not limited to patent issues),
16270
conditions are imposed on you (whether by court order, agreement or
16271
otherwise) that contradict the conditions of this License, they do not
16272
excuse you from the conditions of this License. If you cannot
16273
distribute so as to satisfy simultaneously your obligations under this
16274
License and any other pertinent obligations, then as a consequence you
16275
may not distribute the Program at all. For example, if a patent
16276
license would not permit royalty-free redistribution of the Program by
16277
all those who receive copies directly or indirectly through you, then
16278
the only way you could satisfy both it and this License would be to
16279
refrain entirely from distribution of the Program.
16281
<p>If any portion of this section is held invalid or unenforceable under
16282
any particular circumstance, the balance of the section is intended to
16283
apply and the section as a whole is intended to apply in other
16286
<p>It is not the purpose of this section to induce you to infringe any
16287
patents or other property right claims or to contest validity of any
16288
such claims; this section has the sole purpose of protecting the
16289
integrity of the free software distribution system, which is
16290
implemented by public license practices. Many people have made
16291
generous contributions to the wide range of software distributed
16292
through that system in reliance on consistent application of that
16293
system; it is up to the author/donor to decide if he or she is willing
16294
to distribute software through any other system and a licensee cannot
16295
impose that choice.
16297
<p>This section is intended to make thoroughly clear what is believed to
16298
be a consequence of the rest of this License.
16300
</p><li>If the distribution and/or use of the Program is restricted in
16301
certain countries either by patents or by copyrighted interfaces, the
16302
original copyright holder who places the Program under this License
16303
may add an explicit geographical distribution limitation excluding
16304
those countries, so that distribution is permitted only in or among
16305
countries not thus excluded. In such case, this License incorporates
16306
the limitation as if written in the body of this License.
16308
<li>The Free Software Foundation may publish revised and/or new versions
16309
of the General Public License from time to time. Such new versions will
16310
be similar in spirit to the present version, but may differ in detail to
16311
address new problems or concerns.
16313
<p>Each version is given a distinguishing version number. If the Program
16314
specifies a version number of this License which applies to it and "any
16315
later version", you have the option of following the terms and conditions
16316
either of that version or of any later version published by the Free
16317
Software Foundation. If the Program does not specify a version number of
16318
this License, you may choose any version ever published by the Free Software
16321
</p><li>If you wish to incorporate parts of the Program into other free
16322
programs whose distribution conditions are different, write to the author
16323
to ask for permission. For software which is copyrighted by the Free
16324
Software Foundation, write to the Free Software Foundation; we sometimes
16325
make exceptions for this. Our decision will be guided by the two goals
16326
of preserving the free status of all derivatives of our free software and
16327
of promoting the sharing and reuse of software generally.
16329
<li>BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
16330
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
16331
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
16332
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
16333
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
16334
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
16335
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
16336
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
16337
REPAIR OR CORRECTION.
16339
<li>IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
16340
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
16341
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
16342
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
16343
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
16344
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
16345
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
16346
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
16347
POSSIBILITY OF SUCH DAMAGES.
16350
<h3 class="unnumberedsec">How to Apply These Terms to Your New Programs</h3>
16352
<p>If you develop a new program, and you want it to be of the greatest
16353
possible use to the public, the best way to achieve this is to make it
16354
free software which everyone can redistribute and change under these terms.
16356
<p>To do so, attach the following notices to the program. It is safest
16357
to attach them to the start of each source file to most effectively
16358
convey the exclusion of warranty; and each file should have at least
16359
the "copyright" line and a pointer to where the full notice is found.
16361
<pre class="smallexample"> <var>one line to give the program's name and an idea of what it does.</var>
16362
Copyright (C) 19<var>yy</var> <var>name of author</var>
16364
This program is free software; you can redistribute it and/or
16365
modify it under the terms of the GNU General Public License
16366
as published by the Free Software Foundation; either version 2
16367
of the License, or (at your option) any later version.
16369
This program is distributed in the hope that it will be useful,
16370
but WITHOUT ANY WARRANTY; without even the implied warranty of
16371
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16372
GNU General Public License for more details.
16374
You should have received a copy of the GNU General Public License
16375
along with this program; if not, write to the Free Software
16376
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16379
<p>Also add information on how to contact you by electronic and paper mail.
16381
<p>If the program is interactive, make it output a short notice like this
16382
when it starts in an interactive mode:
16384
<pre class="smallexample"> Gnomovision version 69, Copyright (C) 19<var>yy</var> <var>name of author</var>
16385
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
16386
type `show w'. This is free software, and you are welcome
16387
to redistribute it under certain conditions; type `show c'
16391
<p>The hypothetical commands <code>show w</code> and <code>show c</code> should show
16392
the appropriate parts of the General Public License. Of course, the
16393
commands you use may be called something other than <code>show w</code> and
16394
<code>show c</code>; they could even be mouse-clicks or menu items--whatever
16395
suits your program.
16397
<p>You should also get your employer (if you work as a programmer) or your
16398
school, if any, to sign a "copyright disclaimer" for the program, if
16399
necessary. Here is a sample; alter the names:
16401
<pre class="example"> Yoyodyne, Inc., hereby disclaims all copyright
16402
interest in the program `Gnomovision'
16403
(which makes passes at compilers) written
16406
<var>signature of Ty Coon</var>, 1 April 1989
16407
Ty Coon, President of Vice
16410
<p>This General Public License does not permit incorporating your program into
16411
proprietary programs. If your program is a subroutine library, you may
16412
consider it more useful to permit linking proprietary applications with the
16413
library. If this is what you want to do, use the GNU Library General
16414
Public License instead of this License.
16418
<small class=header>
16419
Node:<a name="Help%20and%20Assistance">Help and Assistance</a>,
16420
Next:<a rel="next" accesskey="n" href="#Documentation%20License">Documentation License</a>,
16421
Previous:<a rel="previous" accesskey="p" href="#License">License</a>,
16422
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
16428
<h2 class="appendix">Help and Assistance</h2>
16430
<p>We have set up a <em>mailing list</em> for general <small>DDD</small>
16431
discussions. If you need help and assistance for solving a <small>DDD</small>
16432
problem, you find the right people here.
16434
<p>Send message to all receivers of the mailing list to:
16436
<pre class="example"> <a href="mailto:ddd@gnu.org">ddd@gnu.org</a>
16439
<p>This mailing list is also the place where new <small>DDD</small> releases are
16440
announced. If you want to subscribe the list, or get more information,
16443
<pre class="example"> <a href="mailto:ddd-request@gnu.org">ddd-request@gnu.org</a>
16446
<p>See also <a href="http://www.gnu.org/software/ddd/">the <small>DDD</small> <small>WWW</small> page</a> for recent announcements and other news related to <small>DDD</small>.
16450
<small class=header>
16451
Node:<a name="Documentation%20License">Documentation License</a>,
16452
Next:<a rel="next" accesskey="n" href="#Label%20Index">Label Index</a>,
16453
Previous:<a rel="previous" accesskey="p" href="#Help%20and%20Assistance">Help and Assistance</a>,
16454
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
16460
<h2 class="appendix">GNU Free Documentation License</h2>
16462
<div align="center">Version 1.1, March 2000</div>
16463
<pre class="display"> Copyright (C) 2000 Free Software Foundation, Inc.
16464
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16466
Everyone is permitted to copy and distribute verbatim copies
16467
of this license document, but changing it is not allowed.
16471
<ol type=1 start=0>
16474
<p>The purpose of this License is to make a manual, textbook, or other
16475
written document "free" in the sense of freedom: to assure everyone
16476
the effective freedom to copy and redistribute it, with or without
16477
modifying it, either commercially or noncommercially. Secondarily,
16478
this License preserves for the author and publisher a way to get
16479
credit for their work, while not being considered responsible for
16480
modifications made by others.
16482
<p>This License is a kind of "copyleft", which means that derivative
16483
works of the document must themselves be free in the same sense. It
16484
complements the GNU General Public License, which is a copyleft
16485
license designed for free software.
16487
<p>We have designed this License in order to use it for manuals for free
16488
software, because free software needs free documentation: a free
16489
program should come with manuals providing the same freedoms that the
16490
software does. But this License is not limited to software manuals;
16491
it can be used for any textual work, regardless of subject matter or
16492
whether it is published as a printed book. We recommend this License
16493
principally for works whose purpose is instruction or reference.
16496
</p><li>APPLICABILITY AND DEFINITIONS
16498
<p>This License applies to any manual or other work that contains a
16499
notice placed by the copyright holder saying it can be distributed
16500
under the terms of this License. The "Document", below, refers to any
16501
such manual or work. Any member of the public is a licensee, and is
16502
addressed as "you".
16504
<p>A "Modified Version" of the Document means any work containing the
16505
Document or a portion of it, either copied verbatim, or with
16506
modifications and/or translated into another language.
16508
<p>A "Secondary Section" is a named appendix or a front-matter section of
16509
the Document that deals exclusively with the relationship of the
16510
publishers or authors of the Document to the Document's overall subject
16511
(or to related matters) and contains nothing that could fall directly
16512
within that overall subject. (For example, if the Document is in part a
16513
textbook of mathematics, a Secondary Section may not explain any
16514
mathematics.) The relationship could be a matter of historical
16515
connection with the subject or with related matters, or of legal,
16516
commercial, philosophical, ethical or political position regarding
16519
<p>The "Invariant Sections" are certain Secondary Sections whose titles
16520
are designated, as being those of Invariant Sections, in the notice
16521
that says that the Document is released under this License.
16523
<p>The "Cover Texts" are certain short passages of text that are listed,
16524
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
16525
the Document is released under this License.
16527
<p>A "Transparent" copy of the Document means a machine-readable copy,
16528
represented in a format whose specification is available to the
16529
general public, whose contents can be viewed and edited directly and
16530
straightforwardly with generic text editors or (for images composed of
16531
pixels) generic paint programs or (for drawings) some widely available
16532
drawing editor, and that is suitable for input to text formatters or
16533
for automatic translation to a variety of formats suitable for input
16534
to text formatters. A copy made in an otherwise Transparent file
16535
format whose markup has been designed to thwart or discourage
16536
subsequent modification by readers is not Transparent. A copy that is
16537
not "Transparent" is called "Opaque".
16539
<p>Examples of suitable formats for Transparent copies include plain
16540
ASCII without markup, Texinfo input format, LaTeX input format, SGML
16541
or XML using a publicly available DTD, and standard-conforming simple
16542
HTML designed for human modification. Opaque formats include
16543
PostScript, PDF, proprietary formats that can be read and edited only
16544
by proprietary word processors, SGML or XML for which the DTD and/or
16545
processing tools are not generally available, and the
16546
machine-generated HTML produced by some word processors for output
16549
<p>The "Title Page" means, for a printed book, the title page itself,
16550
plus such following pages as are needed to hold, legibly, the material
16551
this License requires to appear in the title page. For works in
16552
formats which do not have any title page as such, "Title Page" means
16553
the text near the most prominent appearance of the work's title,
16554
preceding the beginning of the body of the text.
16556
</p><li>VERBATIM COPYING
16558
<p>You may copy and distribute the Document in any medium, either
16559
commercially or noncommercially, provided that this License, the
16560
copyright notices, and the license notice saying this License applies
16561
to the Document are reproduced in all copies, and that you add no other
16562
conditions whatsoever to those of this License. You may not use
16563
technical measures to obstruct or control the reading or further
16564
copying of the copies you make or distribute. However, you may accept
16565
compensation in exchange for copies. If you distribute a large enough
16566
number of copies you must also follow the conditions in section 3.
16568
<p>You may also lend copies, under the same conditions stated above, and
16569
you may publicly display copies.
16571
</p><li>COPYING IN QUANTITY
16573
<p>If you publish printed copies of the Document numbering more than 100,
16574
and the Document's license notice requires Cover Texts, you must enclose
16575
the copies in covers that carry, clearly and legibly, all these Cover
16576
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
16577
the back cover. Both covers must also clearly and legibly identify
16578
you as the publisher of these copies. The front cover must present
16579
the full title with all words of the title equally prominent and
16580
visible. You may add other material on the covers in addition.
16581
Copying with changes limited to the covers, as long as they preserve
16582
the title of the Document and satisfy these conditions, can be treated
16583
as verbatim copying in other respects.
16585
<p>If the required texts for either cover are too voluminous to fit
16586
legibly, you should put the first ones listed (as many as fit
16587
reasonably) on the actual cover, and continue the rest onto adjacent
16590
<p>If you publish or distribute Opaque copies of the Document numbering
16591
more than 100, you must either include a machine-readable Transparent
16592
copy along with each Opaque copy, or state in or with each Opaque copy
16593
a publicly-accessible computer-network location containing a complete
16594
Transparent copy of the Document, free of added material, which the
16595
general network-using public has access to download anonymously at no
16596
charge using public-standard network protocols. If you use the latter
16597
option, you must take reasonably prudent steps, when you begin
16598
distribution of Opaque copies in quantity, to ensure that this
16599
Transparent copy will remain thus accessible at the stated location
16600
until at least one year after the last time you distribute an Opaque
16601
copy (directly or through your agents or retailers) of that edition to
16604
<p>It is requested, but not required, that you contact the authors of the
16605
Document well before redistributing any large number of copies, to give
16606
them a chance to provide you with an updated version of the Document.
16608
</p><li>MODIFICATIONS
16610
<p>You may copy and distribute a Modified Version of the Document under
16611
the conditions of sections 2 and 3 above, provided that you release
16612
the Modified Version under precisely this License, with the Modified
16613
Version filling the role of the Document, thus licensing distribution
16614
and modification of the Modified Version to whoever possesses a copy
16615
of it. In addition, you must do these things in the Modified Version:
16617
<p>A. Use in the Title Page (and on the covers, if any) a title distinct
16618
from that of the Document, and from those of previous versions
16619
(which should, if there were any, be listed in the History section
16620
of the Document). You may use the same title as a previous version
16621
if the original publisher of that version gives permission.<br>
16622
B. List on the Title Page, as authors, one or more persons or entities
16623
responsible for authorship of the modifications in the Modified
16624
Version, together with at least five of the principal authors of the
16625
Document (all of its principal authors, if it has less than five).<br>
16626
C. State on the Title page the name of the publisher of the
16627
Modified Version, as the publisher.<br>
16628
D. Preserve all the copyright notices of the Document.<br>
16629
E. Add an appropriate copyright notice for your modifications
16630
adjacent to the other copyright notices.<br>
16631
F. Include, immediately after the copyright notices, a license notice
16632
giving the public permission to use the Modified Version under the
16633
terms of this License, in the form shown in the Addendum below.<br>
16634
G. Preserve in that license notice the full lists of Invariant Sections
16635
and required Cover Texts given in the Document's license notice.<br>
16636
H. Include an unaltered copy of this License.<br>
16637
I. Preserve the section entitled "History", and its title, and add to
16638
it an item stating at least the title, year, new authors, and
16639
publisher of the Modified Version as given on the Title Page. If
16640
there is no section entitled "History" in the Document, create one
16641
stating the title, year, authors, and publisher of the Document as
16642
given on its Title Page, then add an item describing the Modified
16643
Version as stated in the previous sentence.<br>
16644
J. Preserve the network location, if any, given in the Document for
16645
public access to a Transparent copy of the Document, and likewise
16646
the network locations given in the Document for previous versions
16647
it was based on. These may be placed in the "History" section.
16648
You may omit a network location for a work that was published at
16649
least four years before the Document itself, or if the original
16650
publisher of the version it refers to gives permission.<br>
16651
K. In any section entitled "Acknowledgements" or "Dedications",
16652
preserve the section's title, and preserve in the section all the
16653
substance and tone of each of the contributor acknowledgements
16654
and/or dedications given therein.<br>
16655
L. Preserve all the Invariant Sections of the Document,
16656
unaltered in their text and in their titles. Section numbers
16657
or the equivalent are not considered part of the section titles.<br>
16658
M. Delete any section entitled "Endorsements". Such a section
16659
may not be included in the Modified Version.<br>
16660
N. Do not retitle any existing section as "Endorsements"
16661
or to conflict in title with any Invariant Section.<br>
16663
<p>If the Modified Version includes new front-matter sections or
16664
appendices that qualify as Secondary Sections and contain no material
16665
copied from the Document, you may at your option designate some or all
16666
of these sections as invariant. To do this, add their titles to the
16667
list of Invariant Sections in the Modified Version's license notice.
16668
These titles must be distinct from any other section titles.
16670
<p>You may add a section entitled "Endorsements", provided it contains
16671
nothing but endorsements of your Modified Version by various
16672
parties-for example, statements of peer review or that the text has
16673
been approved by an organization as the authoritative definition of a
16676
<p>You may add a passage of up to five words as a Front-Cover Text, and a
16677
passage of up to 25 words as a Back-Cover Text, to the end of the list
16678
of Cover Texts in the Modified Version. Only one passage of
16679
Front-Cover Text and one of Back-Cover Text may be added by (or
16680
through arrangements made by) any one entity. If the Document already
16681
includes a cover text for the same cover, previously added by you or
16682
by arrangement made by the same entity you are acting on behalf of,
16683
you may not add another; but you may replace the old one, on explicit
16684
permission from the previous publisher that added the old one.
16686
<p>The author(s) and publisher(s) of the Document do not by this License
16687
give permission to use their names for publicity for or to assert or
16688
imply endorsement of any Modified Version.
16690
</p><li>COMBINING DOCUMENTS
16692
<p>You may combine the Document with other documents released under this
16693
License, under the terms defined in section 4 above for modified
16694
versions, provided that you include in the combination all of the
16695
Invariant Sections of all of the original documents, unmodified, and
16696
list them all as Invariant Sections of your combined work in its
16699
<p>The combined work need only contain one copy of this License, and
16700
multiple identical Invariant Sections may be replaced with a single
16701
copy. If there are multiple Invariant Sections with the same name but
16702
different contents, make the title of each such section unique by
16703
adding at the end of it, in parentheses, the name of the original
16704
author or publisher of that section if known, or else a unique number.
16705
Make the same adjustment to the section titles in the list of
16706
Invariant Sections in the license notice of the combined work.
16708
<p>In the combination, you must combine any sections entitled "History"
16709
in the various original documents, forming one section entitled
16710
"History"; likewise combine any sections entitled "Acknowledgements",
16711
and any sections entitled "Dedications". You must delete all sections
16712
entitled "Endorsements."
16714
</p><li>COLLECTIONS OF DOCUMENTS
16716
<p>You may make a collection consisting of the Document and other documents
16717
released under this License, and replace the individual copies of this
16718
License in the various documents with a single copy that is included in
16719
the collection, provided that you follow the rules of this License for
16720
verbatim copying of each of the documents in all other respects.
16722
<p>You may extract a single document from such a collection, and distribute
16723
it individually under this License, provided you insert a copy of this
16724
License into the extracted document, and follow this License in all
16725
other respects regarding verbatim copying of that document.
16727
</p><li>AGGREGATION WITH INDEPENDENT WORKS
16729
<p>A compilation of the Document or its derivatives with other separate
16730
and independent documents or works, in or on a volume of a storage or
16731
distribution medium, does not as a whole count as a Modified Version
16732
of the Document, provided no compilation copyright is claimed for the
16733
compilation. Such a compilation is called an "aggregate", and this
16734
License does not apply to the other self-contained works thus compiled
16735
with the Document, on account of their being thus compiled, if they
16736
are not themselves derivative works of the Document.
16738
<p>If the Cover Text requirement of section 3 is applicable to these
16739
copies of the Document, then if the Document is less than one quarter
16740
of the entire aggregate, the Document's Cover Texts may be placed on
16741
covers that surround only the Document within the aggregate.
16742
Otherwise they must appear on covers around the whole aggregate.
16744
</p><li>TRANSLATION
16746
<p>Translation is considered a kind of modification, so you may
16747
distribute translations of the Document under the terms of section 4.
16748
Replacing Invariant Sections with translations requires special
16749
permission from their copyright holders, but you may include
16750
translations of some or all Invariant Sections in addition to the
16751
original versions of these Invariant Sections. You may include a
16752
translation of this License provided that you also include the
16753
original English version of this License. In case of a disagreement
16754
between the translation and the original English version of this
16755
License, the original English version will prevail.
16757
</p><li>TERMINATION
16759
<p>You may not copy, modify, sublicense, or distribute the Document except
16760
as expressly provided for under this License. Any other attempt to
16761
copy, modify, sublicense or distribute the Document is void, and will
16762
automatically terminate your rights under this License. However,
16763
parties who have received copies, or rights, from you under this
16764
License will not have their licenses terminated so long as such
16765
parties remain in full compliance.
16767
</p><li>FUTURE REVISIONS OF THIS LICENSE
16769
<p>The Free Software Foundation may publish new, revised versions
16770
of the GNU Free Documentation License from time to time. Such new
16771
versions will be similar in spirit to the present version, but may
16772
differ in detail to address new problems or concerns. See
16773
http://www.gnu.org/copyleft/.
16775
<p>Each version of the License is given a distinguishing version number.
16776
If the Document specifies that a particular numbered version of this
16777
License "or any later version" applies to it, you have the option of
16778
following the terms and conditions either of that specified version or
16779
of any later version that has been published (not as a draft) by the
16780
Free Software Foundation. If the Document does not specify a version
16781
number of this License, you may choose any version ever published (not
16782
as a draft) by the Free Software Foundation.
16786
<h3 class="unnumberedsec">ADDENDUM: How to use this License for your documents</h3>
16788
<p>To use this License in a document you have written, include a copy of
16789
the License in the document and put the following copyright and
16790
license notices just after the title page:
16792
<pre class="smallexample">
16793
Copyright (C) <var>year</var> <var>your name</var>.
16794
Permission is granted to copy, distribute and/or modify this document
16795
under the terms of the GNU Free Documentation License, Version 1.1
16796
or any later version published by the Free Software Foundation;
16797
with the Invariant Sections being <var>list their titles</var>, with the
16798
Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts being <var>list</var>.
16799
A copy of the license is included in the section entitled ``GNU
16800
Free Documentation License''.
16802
If you have no Invariant Sections, write "with no Invariant Sections"
16803
instead of saying which ones are invariant. If you have no
16804
Front-Cover Texts, write "no Front-Cover Texts" instead of
16805
"Front-Cover Texts being <var>list</var>"; likewise for Back-Cover Texts.
16807
<p>If your document contains nontrivial examples of program code, we
16808
recommend releasing these examples in parallel under your choice of
16809
free software license, such as the GNU General Public License,
16810
to permit their use in free software.
16814
<small class=header>
16815
Node:<a name="Label%20Index">Label Index</a>,
16816
Next:<a rel="next" accesskey="n" href="#Key%20Index">Key Index</a>,
16817
Previous:<a rel="previous" accesskey="p" href="#Documentation%20License">Documentation License</a>,
16818
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
16824
<h2 class="unnumbered">Label Index</h2>
16826
<ul class="index-lb" compact>
16827
<li><code>()</code>: <a href="#GDB%20Argument%20Commands">GDB Argument Commands</a>
16828
<li><code>3-D Lines</code>: <a href="#Plot%20Appearance">Plot Appearance</a>
16829
<li><code>Abort</code>: <a href="#Program%20Menu">Program Menu</a>, <a href="#Quitting">Quitting</a>
16830
<li><code>About </code><small>DDD</small><code></code>: <a href="#Help%20Menu">Help Menu</a>
16831
<li><code>Align on Grid</code>: <a href="#Data%20Menu">Data Menu</a>
16832
<li><code>All Signals</code>: <a href="#Signals">Signals</a>
16833
<li><code>Apply</code>: <a href="#Commands%20Menu">Commands Menu</a>
16834
<li><code>Attach</code>: <a href="#Attaching%20to%20a%20Process">Attaching to a Process</a>
16835
<li><code>Attach to Process</code>: <a href="#Attaching%20to%20a%20Process">Attaching to a Process</a>, <a href="#File%20Menu">File Menu</a>
16836
<li><code>Auto-align Displays on Nearest Grid Point</code>: <a href="#Aligning%20Displays">Aligning Displays</a>
16837
<li><code>Automatic Display of Button Hints</code>: <a href="#Button%20tips">Button tips</a>
16838
<li><code>Automatic Display of Variable Values</code>: <a href="#Value%20Tips">Value Tips</a>
16839
<li><code>Backtrace</code>: <a href="#Status%20Menu">Status Menu</a>
16840
<li><code>Bash Console</code>: <a href="#View%20Menu">View Menu</a>
16841
<li><code>Bash Reference</code>: <a href="#Getting%20Help">Getting Help</a>, <a href="#Help%20Menu">Help Menu</a>
16842
<li><code>Break</code>: <a href="#Setting%20Breakpoints">Setting Breakpoints</a>, <a href="#Tool%20Bar">Tool Bar</a>
16843
<li><code>Breakpoints</code>: <a href="#Source%20Menu">Source Menu</a>
16844
<li><code>Button</code>: <a href="#GDB%20Simple%20Commands">GDB Simple Commands</a>
16845
<li><code>Cache Machine Code</code>: <a href="#Customizing%20Machine%20Code">Customizing Machine Code</a>
16846
<li><code>Cache source files</code>: <a href="#Customizing%20Source%20Lookup">Customizing Source Lookup</a>
16847
<li><code>Change Directory</code>: <a href="#Working%20Directory">Working Directory</a>, <a href="#File%20Menu">File Menu</a>
16848
<li><code>Clear</code>: <a href="#Disabling%20Breakpoints">Disabling Breakpoints</a>, <a href="#Deleting%20Breakpoints">Deleting Breakpoints</a>, <a href="#Tool%20Bar">Tool Bar</a>, <a href="#Edit%20Menu">Edit Menu</a>
16849
<li><code>Clear Line</code>: <a href="#Commands%20Menu">Commands Menu</a>
16850
<li><code>Clear Undo Buffer</code>: <a href="#Customizing%20Undo">Customizing Undo</a>
16851
<li><code>Clear Window</code>: <a href="#Commands%20Menu">Commands Menu</a>
16852
<li><code>Close</code>: <a href="#File%20Menu">File Menu</a>
16853
<li><code>Close data window when deleting last display</code>: <a href="#Deleting%20Displays">Deleting Displays</a>
16854
<li><code>Cluster</code>: <a href="#Clustering">Clustering</a>
16855
<li><code>Cluster Data Displays</code>: <a href="#Clustering">Clustering</a>
16856
<li><code>clustered</code>: <a href="#Clustering">Clustering</a>
16857
<li><code>Color</code>: <a href="#Printing%20the%20Graph">Printing the Graph</a>
16858
<li><code>Command</code>: <a href="#GDB%20Simple%20Commands">GDB Simple Commands</a>, <a href="#Entering%20Plotting%20Commands">Entering Plotting Commands</a>
16859
<li><code>Command History</code>: <a href="#Commands%20Menu">Commands Menu</a>
16860
<li><code>Command Tool</code>: <a href="#View%20Menu">View Menu</a>
16861
<li><code>Commands</code>: <a href="#Commands%20Menu">Commands Menu</a>, <a href="#Menu%20Bar">Menu Bar</a>
16862
<li><code>Complete</code>: <a href="#Commands%20Menu">Commands Menu</a>
16863
<li><code>Cont</code>: <a href="#Command%20Tool">Command Tool</a>
16864
<li><code>Continue</code>: <a href="#Continuing%20Somewhere%20Else">Continuing Somewhere Else</a>, <a href="#Resuming%20Execution">Resuming Execution</a>, <a href="#Program%20Menu">Program Menu</a>
16865
<li><code>Continue Automatically when Mouse Pointer is Frozen</code>: <a href="#Stopping%20X%20Programs">Stopping X Programs</a>
16866
<li><code>Continue Until Here</code>: <a href="#Temporary%20Breakpoints">Temporary Breakpoints</a>
16867
<li><code>Continue Without Signal</code>: <a href="#Signals">Signals</a>, <a href="#Program%20Menu">Program Menu</a>
16868
<li><code>Contour</code>: <a href="#Plot%20Appearance">Plot Appearance</a>
16869
<li><code>Copy</code>: <a href="#Deleting%20Displays">Deleting Displays</a>, <a href="#Edit%20Menu">Edit Menu</a>
16870
<li><code>Ctrl+A is</code>: <a href="#Customizing%20the%20Edit%20Menu">Customizing the Edit Menu</a>
16871
<li><code>Ctrl+C is</code>: <a href="#Customizing%20the%20Edit%20Menu">Customizing the Edit Menu</a>
16872
<li><code>Cut</code>: <a href="#Deleting%20Displays">Deleting Displays</a>, <a href="#Edit%20Menu">Edit Menu</a>
16873
<li><code>Data</code>: <a href="#Data%20Menu">Data Menu</a>, <a href="#Menu%20Bar">Menu Bar</a>
16874
<li><code>Data Scrolling</code>: <a href="#Scrolling%20Data">Scrolling Data</a>
16875
<li><code>Data Window</code>: <a href="#View%20Menu">View Menu</a>
16876
<li><code>DBX Console</code>: <a href="#View%20Menu">View Menu</a>
16877
<li><code>DBX Reference</code>: <a href="#Getting%20Help">Getting Help</a>, <a href="#Help%20Menu">Help Menu</a>
16878
<li><code>DBX Settings</code>: <a href="#Edit%20Menu">Edit Menu</a>
16879
<li><code>DDD License</code>: <a href="#Help%20Menu">Help Menu</a>
16880
<li><code>DDD News</code>: <a href="#Help%20Menu">Help Menu</a>
16881
<li><code>DDD Reference</code>: <a href="#Getting%20Help">Getting Help</a>, <a href="#Help%20Menu">Help Menu</a>
16882
<li><code>DDD Splash Screen</code>: <a href="#Splash%20Screen">Splash Screen</a>
16883
<li><code>DDD </code><small>WWW</small><code> Page</code>: <a href="#Getting%20Help">Getting Help</a>
16884
<li><code>DDD WWW Page</code>: <a href="#Help%20Menu">Help Menu</a>
16885
<li><code>Debug DDD</code>: <a href="#Maintenance%20Menu">Maintenance Menu</a>
16886
<li><code>Debugger Reference</code>: <a href="#Getting%20Help">Getting Help</a>, <a href="#Help%20Menu">Help Menu</a>
16887
<li><code>Debugger Settings</code>: <a href="#Edit%20Menu">Edit Menu</a>
16888
<li><code>Debugger Type</code>: <a href="#Debugger%20Invocation">Debugger Invocation</a>
16889
<li><code>Define Command</code>: <a href="#Commands%20Menu">Commands Menu</a>
16890
<li><code>Delete</code>: <a href="#Editing%20Breakpoint%20Properties">Editing Breakpoint Properties</a>, <a href="#Deleting%20Breakpoints">Deleting Breakpoints</a>, <a href="#Edit%20Menu">Edit Menu</a>, <a href="#Deleting%20Sessions">Deleting Sessions</a>
16891
<li><code>Delete Breakpoint</code>: <a href="#Deleting%20Breakpoints">Deleting Breakpoints</a>
16892
<li><code>Detach Process</code>: <a href="#Attaching%20to%20a%20Process">Attaching to a Process</a>, <a href="#File%20Menu">File Menu</a>
16893
<li><code>Detect Aliases</code>: <a href="#Shared%20Structures">Shared Structures</a>, <a href="#Data%20Menu">Data Menu</a>
16894
<li><code>Determine Automatically from Arguments</code>: <a href="#Debugger%20Invocation">Debugger Invocation</a>
16895
<li><code>Disable</code>: <a href="#Editing%20Breakpoint%20Properties">Editing Breakpoint Properties</a>, <a href="#Disabling%20Breakpoints">Disabling Breakpoints</a>
16896
<li><code>Disable Breakpoint</code>: <a href="#Disabling%20Breakpoints">Disabling Breakpoints</a>
16897
<li><code>Disp *</code>: <a href="#Dereferencing%20Pointers">Dereferencing Pointers</a>
16898
<li><code>Display</code>: <a href="#Creating%20Single%20Displays">Creating Single Displays</a>, <a href="#Display%20Basics">Display Basics</a>, <a href="#Tool%20Bar">Tool Bar</a>
16899
<li><code>Display ()</code>: <a href="#Data%20Menu">Data Menu</a>
16900
<li><code>Display *</code>: <a href="#Dereferencing%20Pointers">Dereferencing Pointers</a>
16901
<li><code>Display *()</code>: <a href="#Dereferencing%20Pointers">Dereferencing Pointers</a>
16902
<li><code>Display Arguments</code>: <a href="#Displaying%20Local%20Variables">Displaying Local Variables</a>, <a href="#Data%20Menu">Data Menu</a>
16903
<li><code>Display Line Numbers</code>: <a href="#Source%20Menu">Source Menu</a>
16904
<li><code>Display Local Variables</code>: <a href="#Displaying%20Local%20Variables">Displaying Local Variables</a>, <a href="#Data%20Menu">Data Menu</a>
16905
<li><code>Display Machine Code</code>: <a href="#Source%20Menu">Source Menu</a>
16906
<li><code>Display Source Line Numbers</code>: <a href="#Customizing%20Source%20Appearance">Customizing Source Appearance</a>
16907
<li><code>Display Two-Dimensional Arrays as Tables</code>: <a href="#Arrays%20as%20Tables">Arrays as Tables</a>
16908
<li><code>Displays</code>: <a href="#Data%20Menu">Data Menu</a>
16909
<li><code>Do Nothing</code>: <a href="#Maintenance%20Menu">Maintenance Menu</a>
16910
<li><code>Down</code>: <a href="#Selecting%20a%20frame">Selecting a frame</a>, <a href="#Command%20Tool">Command Tool</a>, <a href="#Status%20Menu">Status Menu</a>
16911
<li><code>Dump Core</code>: <a href="#Maintenance%20Menu">Maintenance Menu</a>
16912
<li><code>Dump Core Now</code>: <a href="#Maintenance%20Menu">Maintenance Menu</a>
16913
<li><code>Edit</code>: <a href="#Editing%20Source%20Code">Editing Source Code</a>, <a href="#Command%20Tool">Command Tool</a>, <a href="#Edit%20Menu">Edit Menu</a>, <a href="#Menu%20Bar">Menu Bar</a>
16914
<li><code>Edit <<</code>: <a href="#GDB%20Simple%20Commands">GDB Simple Commands</a>
16915
<li><code>Edit >></code>: <a href="#GDB%20Simple%20Commands">GDB Simple Commands</a>, <a href="#Breakpoint%20Commands">Breakpoint Commands</a>
16916
<li><code>Edit Buttons</code>: <a href="#Defining%20Buttons">Defining Buttons</a>, <a href="#Commands%20Menu">Commands Menu</a>
16917
<li><code>Edit Menu</code>: <a href="#Display%20Shortcuts">Display Shortcuts</a>
16918
<li><code>Edit Source</code>: <a href="#Editing%20Source%20Code">Editing Source Code</a>, <a href="#Source%20Menu">Source Menu</a>
16919
<li><code>Edit Sources</code>: <a href="#Editing%20Source%20Code">Editing Source Code</a>
16920
<li><code>Edit Themes</code>: <a href="#Editing%20Themes">Editing Themes</a>
16921
<li><code>Enable</code>: <a href="#Editing%20Breakpoint%20Properties">Editing Breakpoint Properties</a>, <a href="#Disabling%20Breakpoints">Disabling Breakpoints</a>
16922
<li><code>Enable Breakpoint</code>: <a href="#Disabling%20Breakpoints">Disabling Breakpoints</a>
16923
<li><code>Enable supported buttons only</code>: <a href="#Defining%20Buttons">Defining Buttons</a>
16924
<li><code>End</code>: <a href="#GDB%20Simple%20Commands">GDB Simple Commands</a>, <a href="#Breakpoint%20Commands">Breakpoint Commands</a>
16925
<li><code>Execute</code>: <a href="#GDB%20Simple%20Commands">GDB Simple Commands</a>
16926
<li><code>Execution Window</code>: <a href="#Customizing%20the%20Execution%20Window">Customizing the Execution Window</a>, <a href="#View%20Menu">View Menu</a>
16927
<li><code>Exit</code>: <a href="#File%20Menu">File Menu</a>, <a href="#Quitting">Quitting</a>
16928
<li><code>File</code>: <a href="#File%20Menu">File Menu</a>, <a href="#Menu%20Bar">Menu Bar</a>
16929
<li><code>File Name</code>: <a href="#Printing%20the%20Graph">Printing the Graph</a>
16930
<li><code>Find <<</code>: <a href="#Textual%20Search">Textual Search</a>
16931
<li><code>Find << ()</code>: <a href="#Source%20Menu">Source Menu</a>
16932
<li><code>Find >></code>: <a href="#Textual%20Search">Textual Search</a>, <a href="#Tool%20Bar">Tool Bar</a>
16933
<li><code>Find >> ()</code>: <a href="#Source%20Menu">Source Menu</a>
16934
<li><code>Find Backward</code>: <a href="#Commands%20Menu">Commands Menu</a>
16935
<li><code>Find Case Sensitive</code>: <a href="#Source%20Menu">Source Menu</a>
16936
<li><code>Find Forward</code>: <a href="#Commands%20Menu">Commands Menu</a>
16937
<li><code>Find Words Only</code>: <a href="#Textual%20Search">Textual Search</a>, <a href="#Source%20Menu">Source Menu</a>
16938
<li><code>Finish</code>: <a href="#Resuming%20Execution">Resuming Execution</a>, <a href="#Command%20Tool">Command Tool</a>, <a href="#Program%20Menu">Program Menu</a>
16939
<li><code>GDB Console</code>: <a href="#View%20Menu">View Menu</a>
16940
<li><code>GDB Reference</code>: <a href="#Getting%20Help">Getting Help</a>, <a href="#Help%20Menu">Help Menu</a>
16941
<li><code>GDB Settings</code>: <a href="#Edit%20Menu">Edit Menu</a>
16942
<li><code>Get Core File</code>: <a href="#Customizing%20Sessions">Customizing Sessions</a>
16943
<li><code>Help</code>: <a href="#Getting%20Help">Getting Help</a>, <a href="#Help%20Menu">Help Menu</a>, <a href="#Menu%20Bar">Menu Bar</a>
16944
<li><code>Hide</code>: <a href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>, <a href="#Tool%20Bar">Tool Bar</a>
16945
<li><code>Iconify all windows at once</code>: <a href="#Icons">Icons</a>
16946
<li><code>Ignore Count</code>: <a href="#Breakpoint%20Ignore%20Counts">Breakpoint Ignore Counts</a>
16947
<li><code>Include Core Dump</code>: <a href="#Saving%20Sessions">Saving Sessions</a>
16948
<li><code>Interrupt</code>: <a href="#Interrupting">Interrupting</a>, <a href="#Command%20Tool">Command Tool</a>, <a href="#Program%20Menu">Program Menu</a>
16949
<li><code>JDB Console</code>: <a href="#View%20Menu">View Menu</a>
16950
<li><code>JDB Reference</code>: <a href="#Getting%20Help">Getting Help</a>, <a href="#Help%20Menu">Help Menu</a>
16951
<li><code>JDB Settings</code>: <a href="#Edit%20Menu">Edit Menu</a>
16952
<li><code>Kill</code>: <a href="#Killing%20the%20Program">Killing the Program</a>, <a href="#Command%20Tool">Command Tool</a>, <a href="#Program%20Menu">Program Menu</a>
16953
<li><code>Ladebug Console</code>: <a href="#View%20Menu">View Menu</a>
16954
<li><code>Ladebug Reference</code>: <a href="#Getting%20Help">Getting Help</a>, <a href="#Help%20Menu">Help Menu</a>
16955
<li><code>Ladebug Settings</code>: <a href="#Edit%20Menu">Edit Menu</a>
16956
<li><code>Landscape</code>: <a href="#Printing%20Plots">Printing Plots</a>
16957
<li><code>Layout Graph</code>: <a href="#Automatic%20Layout">Automatic Layout</a>, <a href="#Data%20Menu">Data Menu</a>
16958
<li><code>Left to right</code>: <a href="#Placement">Placement</a>
16959
<li><code>List Processes</code>: <a href="#Attaching%20to%20a%20Process">Attaching to a Process</a>
16960
<li><code>Lookup</code>: <a href="#Editing%20Breakpoint%20Properties">Editing Breakpoint Properties</a>, <a href="#Looking%20up%20Definitions">Looking up Definitions</a>, <a href="#Tool%20Bar">Tool Bar</a>
16961
<li><code>Lookup ()</code>: <a href="#Source%20Menu">Source Menu</a>
16962
<li><code>Machine Code Indentation</code>: <a href="#Customizing%20Machine%20Code">Customizing Machine Code</a>
16963
<li><code>Machine Code Window</code>: <a href="#View%20Menu">View Menu</a>
16964
<li><code>Maintenance</code>: <a href="#Maintenance%20Menu">Maintenance Menu</a>, <a href="#Menu%20Bar">Menu Bar</a>
16965
<li><code>Make</code>: <a href="#Recompiling">Recompiling</a>, <a href="#Command%20Tool">Command Tool</a>, <a href="#File%20Menu">File Menu</a>
16966
<li><code>Memory</code>: <a href="#Examining%20Memory">Examining Memory</a>, <a href="#Data%20Menu">Data Menu</a>
16967
<li><code>New Display</code>: <a href="#Display%20Shortcuts">Display Shortcuts</a>
16968
<li><code>New Game</code>: <a href="#Maintenance%20Menu">Maintenance Menu</a>
16969
<li><code>Next</code>: <a href="#Resuming%20Execution">Resuming Execution</a>, <a href="#Command%20Tool">Command Tool</a>, <a href="#Commands%20Menu">Commands Menu</a>, <a href="#Program%20Menu">Program Menu</a>
16970
<li><code>Next Instruction</code>: <a href="#Machine%20Code%20Execution">Machine Code Execution</a>, <a href="#Program%20Menu">Program Menu</a>
16971
<li><code>Nexti</code>: <a href="#Machine%20Code%20Execution">Machine Code Execution</a>, <a href="#Command%20Tool">Command Tool</a>
16972
<li><code>On item</code>: <a href="#Help%20Menu">Help Menu</a>
16973
<li><code>Open</code>: <a href="#Opening%20Source%20Files">Opening Source Files</a>, <a href="#Opening%20Core%20Dumps">Opening Core Dumps</a>, <a href="#Opening%20Programs">Opening Programs</a>
16974
<li><code>Open Class</code>: <a href="#Opening%20Programs">Opening Programs</a>, <a href="#File%20Menu">File Menu</a>
16975
<li><code>Open Core Dump</code>: <a href="#File%20Menu">File Menu</a>
16976
<li><code>Open Program</code>: <a href="#Attaching%20to%20a%20Process">Attaching to a Process</a>, <a href="#Opening%20Programs">Opening Programs</a>, <a href="#File%20Menu">File Menu</a>
16977
<li><code>Open Recent</code>: <a href="#Opening%20Programs">Opening Programs</a>, <a href="#File%20Menu">File Menu</a>
16978
<li><code>Open Session</code>: <a href="#File%20Menu">File Menu</a>, <a href="#Resuming%20Sessions">Resuming Sessions</a>
16979
<li><code>Open Source</code>: <a href="#Opening%20Source%20Files">Opening Source Files</a>, <a href="#File%20Menu">File Menu</a>
16980
<li><code>Orientation</code>: <a href="#Printing%20the%20Graph">Printing the Graph</a>
16981
<li><code>Other</code>: <a href="#Display%20Shortcuts">Display Shortcuts</a>
16982
<li><code>Overview</code>: <a href="#Help%20Menu">Help Menu</a>
16983
<li><code>Paper Size</code>: <a href="#Printing%20Plots">Printing Plots</a>, <a href="#Printing%20the%20Graph">Printing the Graph</a>
16984
<li><code>Pass</code>: <a href="#Signals">Signals</a>
16985
<li><code>Paste</code>: <a href="#Deleting%20Displays">Deleting Displays</a>, <a href="#Edit%20Menu">Edit Menu</a>
16986
<li><code>Perl Console</code>: <a href="#View%20Menu">View Menu</a>
16987
<li><code>Perl Reference</code>: <a href="#Getting%20Help">Getting Help</a>, <a href="#Help%20Menu">Help Menu</a>
16988
<li><code>Perl Settings</code>: <a href="#Edit%20Menu">Edit Menu</a>
16989
<li><code>Placement</code>: <a href="#Clustering">Clustering</a>, <a href="#Placement">Placement</a>
16990
<li><code>Plot</code>: <a href="#Gnuplot%20Invocation">Gnuplot Invocation</a>, <a href="#Plot%20Appearance">Plot Appearance</a>, <a href="#Tool%20Bar">Tool Bar</a>
16991
<li><code>Plot Window</code>: <a href="#Gnuplot%20Invocation">Gnuplot Invocation</a>
16992
<li><code>Portrait</code>: <a href="#Printing%20Plots">Printing Plots</a>
16993
<li><code>Preferences</code>: <a href="#Edit%20Menu">Edit Menu</a>
16994
<li><code>Previous</code>: <a href="#Commands%20Menu">Commands Menu</a>
16995
<li><code>Print</code>: <a href="#Printing%20Values">Printing Values</a>, <a href="#Signals">Signals</a>, <a href="#Editing%20all%20Watchpoints">Editing all Watchpoints</a>, <a href="#Editing%20Watchpoint%20Properties">Editing Watchpoint Properties</a>, <a href="#Tool%20Bar">Tool Bar</a>
16996
<li><code>Print ()</code>: <a href="#Data%20Menu">Data Menu</a>
16997
<li><code>Print Command</code>: <a href="#Printing%20the%20Graph">Printing the Graph</a>
16998
<li><code>Print Graph</code>: <a href="#Printing%20the%20Graph">Printing the Graph</a>, <a href="#File%20Menu">File Menu</a>
16999
<li><code>Print Plot</code>: <a href="#Printing%20Plots">Printing Plots</a>
17000
<li><code>Program</code>: <a href="#Program%20Menu">Program Menu</a>, <a href="#Menu%20Bar">Menu Bar</a>
17001
<li><code>PYDB Console</code>: <a href="#View%20Menu">View Menu</a>
17002
<li><code>PYDB Reference</code>: <a href="#Getting%20Help">Getting Help</a>, <a href="#Help%20Menu">Help Menu</a>
17003
<li><code>PYDB Settings</code>: <a href="#Edit%20Menu">Edit Menu</a>
17004
<li><code>Quit Search</code>: <a href="#Commands%20Menu">Commands Menu</a>
17005
<li><code>Record</code>: <a href="#GDB%20Simple%20Commands">GDB Simple Commands</a>, <a href="#Breakpoint%20Commands">Breakpoint Commands</a>
17006
<li><code>Red Background</code>: <a href="#Applying%20Data%20Themes%20to%20Several%20Values">Applying Data Themes to Several Values</a>
17007
<li><code>Redo</code>: <a href="#Undoing%20Program%20Execution">Undoing Program Execution</a>, <a href="#Looking%20up%20Previous%20Locations">Looking up Previous Locations</a>, <a href="#Undo%20and%20Redo">Undo and Redo</a>, <a href="#Command%20Tool">Command Tool</a>, <a href="#Edit%20Menu">Edit Menu</a>
17008
<li><code>Refer to Program Sources</code>: <a href="#Customizing%20Source%20Lookup">Customizing Source Lookup</a>
17009
<li><code>Refresh</code>: <a href="#Data%20Menu">Data Menu</a>
17010
<li><code>Refresh Displays</code>: <a href="#Repeated%20Values">Repeated Values</a>, <a href="#Refreshing%20the%20Data%20Window">Refreshing the Data Window</a>
17011
<li><code>Registers</code>: <a href="#Registers">Registers</a>, <a href="#Status%20Menu">Status Menu</a>
17012
<li><code>Reload Source</code>: <a href="#Editing%20Source%20Code">Editing Source Code</a>, <a href="#Source%20Menu">Source Menu</a>
17013
<li><code>Remove Menu</code>: <a href="#Maintenance%20Menu">Maintenance Menu</a>
17014
<li><code>Reset</code>: <a href="#Signals">Signals</a>
17015
<li><code>Restart</code>: <a href="#File%20Menu">File Menu</a>
17016
<li><code>Rotate</code>: <a href="#Tool%20Bar">Tool Bar</a>
17017
<li><code>Rotate Graph</code>: <a href="#Rotating%20the%20Graph">Rotating the Graph</a>, <a href="#Data%20Menu">Data Menu</a>
17018
<li><code>Run</code>: <a href="#Starting%20Program%20Execution">Starting Program Execution</a>, <a href="#Command%20Tool">Command Tool</a>, <a href="#Program%20Menu">Program Menu</a>
17019
<li><code>Run Again</code>: <a href="#Starting%20Program%20Execution">Starting Program Execution</a>, <a href="#Program%20Menu">Program Menu</a>
17020
<li><code>Run in Execution Window</code>: <a href="#Using%20the%20Execution%20Window">Using the Execution Window</a>, <a href="#Program%20Menu">Program Menu</a>
17021
<li><code>Save Data As</code>: <a href="#Exporting%20Plot%20Data">Exporting Plot Data</a>
17022
<li><code>Save Options</code>: <a href="#Signals">Signals</a>, <a href="#Edit%20Menu">Edit Menu</a>
17023
<li><code>Save Session As</code>: <a href="#Signals">Signals</a>, <a href="#File%20Menu">File Menu</a>, <a href="#Saving%20Sessions">Saving Sessions</a>
17024
<li><code>Scale</code>: <a href="#Plot%20Appearance">Plot Appearance</a>
17025
<li><code>Search path for source files</code>: <a href="#Source%20Path">Source Path</a>
17026
<li><code>Select All</code>: <a href="#Edit%20Menu">Edit Menu</a>
17027
<li><code>Selected Only</code>: <a href="#Printing%20Plots">Printing Plots</a>, <a href="#Printing%20the%20Graph">Printing the Graph</a>
17028
<li><code>Send</code>: <a href="#Signals">Signals</a>
17029
<li><code>Set</code>: <a href="#Assignment">Assignment</a>, <a href="#Tool%20Bar">Tool Bar</a>
17030
<li><code>Set Execution Position</code>: <a href="#Continuing%20Somewhere%20Else">Continuing Somewhere Else</a>
17031
<li><code>Set Temporary Breakpoint</code>: <a href="#Temporary%20Breakpoints">Temporary Breakpoints</a>
17032
<li><code>Set Value</code>: <a href="#Assignment">Assignment</a>
17033
<li><code>Show</code>: <a href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>, <a href="#Tool%20Bar">Tool Bar</a>
17034
<li><code>Show All</code>: <a href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>
17035
<li><code>Show Just</code>: <a href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>
17036
<li><code>Show More</code>: <a href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>
17037
<li><code>Show Position and Breakpoints</code>: <a href="#Customizing%20Glyphs">Customizing Glyphs</a>
17038
<li><code>Signals</code>: <a href="#Signals">Signals</a>, <a href="#Status%20Menu">Status Menu</a>
17039
<li><code>Small Titles</code>: <a href="#Using%20Data%20Themes">Using Data Themes</a>
17040
<li><code>Small Values</code>: <a href="#Using%20Data%20Themes">Using Data Themes</a>
17041
<li><code>Source</code>: <a href="#Source%20Menu">Source Menu</a>, <a href="#Menu%20Bar">Menu Bar</a>
17042
<li><code>Source indentation</code>: <a href="#Customizing%20Source%20Appearance">Customizing Source Appearance</a>
17043
<li><code>Source Window</code>: <a href="#View%20Menu">View Menu</a>
17044
<li><code>Status</code>: <a href="#Status%20Menu">Status Menu</a>, <a href="#Menu%20Bar">Menu Bar</a>
17045
<li><code>Status Displays</code>: <a href="#Displaying%20Program%20Status">Displaying Program Status</a>, <a href="#Data%20Menu">Data Menu</a>
17046
<li><code>Step</code>: <a href="#Resuming%20Execution">Resuming Execution</a>, <a href="#Command%20Tool">Command Tool</a>, <a href="#Program%20Menu">Program Menu</a>
17047
<li><code>Step Instruction</code>: <a href="#Machine%20Code%20Execution">Machine Code Execution</a>, <a href="#Program%20Menu">Program Menu</a>
17048
<li><code>Stepi</code>: <a href="#Machine%20Code%20Execution">Machine Code Execution</a>, <a href="#Command%20Tool">Command Tool</a>
17049
<li><code>Stop</code>: <a href="#Signals">Signals</a>
17050
<li><code>Suppress Values</code>: <a href="#Using%20Data%20Themes">Using Data Themes</a>, <a href="#Deleting%20Displays">Deleting Displays</a>
17051
<li><code>Suppress X warnings</code>: <a href="#X%20Warnings">X Warnings</a>
17052
<li><code>Tab Width</code>: <a href="#Customizing%20Source%20Appearance">Customizing Source Appearance</a>
17053
<li><code>Temp</code>: <a href="#Editing%20Breakpoint%20Properties">Editing Breakpoint Properties</a>
17054
<li><code>Theme</code>: <a href="#Using%20Data%20Themes">Using Data Themes</a>
17055
<li><code>Themes</code>: <a href="#Editing%20Themes">Editing Themes</a>
17056
<li><code>Threads</code>: <a href="#Threads">Threads</a>, <a href="#Status%20Menu">Status Menu</a>
17057
<li><code>Threshold for repeated print elements</code>: <a href="#Repeated%20Values">Repeated Values</a>
17058
<li><code>Tic Tac Toe</code>: <a href="#Maintenance%20Menu">Maintenance Menu</a>
17059
<li><code>Tiny Values</code>: <a href="#Using%20Data%20Themes">Using Data Themes</a>
17060
<li><code>Tip of the Day</code>: <a href="#Help%20Menu">Help Menu</a>
17061
<li><code>Tool Bar Appearance</code>: <a href="#Window%20Layout">Window Layout</a>
17062
<li><code>Tool Buttons Location</code>: <a href="#Disabling%20the%20Command%20Tool">Disabling the Command Tool</a>
17063
<li><code>Top to bottom</code>: <a href="#Placement">Placement</a>
17064
<li><code>Uncluster</code>: <a href="#Clustering">Clustering</a>
17065
<li><code>Uncompress</code>: <a href="#Help%20Helpers">Help Helpers</a>
17066
<li><code>Undisp</code>: <a href="#Deleting%20Displays">Deleting Displays</a>, <a href="#Tool%20Bar">Tool Bar</a>
17067
<li><code>Undisplay</code>: <a href="#Display%20Basics">Display Basics</a>
17068
<li><code>Undo</code>: <a href="#Deleting%20Displays">Deleting Displays</a>, <a href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>, <a href="#Undoing%20Program%20Execution">Undoing Program Execution</a>, <a href="#Selecting%20a%20frame">Selecting a frame</a>, <a href="#Looking%20up%20Previous%20Locations">Looking up Previous Locations</a>, <a href="#Undo%20and%20Redo">Undo and Redo</a>, <a href="#Command%20Tool">Command Tool</a>, <a href="#Edit%20Menu">Edit Menu</a>
17069
<li><code>Undo Buffer Size</code>: <a href="#Customizing%20Undo">Customizing Undo</a>
17070
<li><code>Uniconify When Ready</code>: <a href="#Program%20Stop">Program Stop</a>
17071
<li><code>Until</code>: <a href="#Resuming%20Execution">Resuming Execution</a>, <a href="#Command%20Tool">Command Tool</a>, <a href="#Program%20Menu">Program Menu</a>
17072
<li><code>Unwatch</code>: <a href="#Tool%20Bar">Tool Bar</a>
17073
<li><code>Up</code>: <a href="#Selecting%20a%20frame">Selecting a frame</a>, <a href="#Command%20Tool">Command Tool</a>, <a href="#Status%20Menu">Status Menu</a>
17074
<li><code>View</code>: <a href="#Plot%20Appearance">Plot Appearance</a>, <a href="#View%20Menu">View Menu</a>, <a href="#Menu%20Bar">Menu Bar</a>
17075
<li><code>Warn if Multiple DDD Instances are Running</code>: <a href="#Multiple%20Instances">Multiple Instances</a>
17076
<li><code>Watch</code>: <a href="#Editing%20Watchpoint%20Properties">Editing Watchpoint Properties</a>, <a href="#Setting%20Watchpoints">Setting Watchpoints</a>, <a href="#Tool%20Bar">Tool Bar</a>
17077
<li><code>Watchpoints</code>: <a href="#Data%20Menu">Data Menu</a>
17078
<li><code>Web Browser</code>: <a href="#Help%20Helpers">Help Helpers</a>
17079
<li><code>What Now?</code>: <a href="#Getting%20Help">Getting Help</a>, <a href="#Help%20Menu">Help Menu</a>
17080
<li><code>When DDD Crashes</code>: <a href="#Maintenance%20Menu">Maintenance Menu</a>
17081
<li><code>Window Layout</code>: <a href="#Window%20Layout">Window Layout</a>
17082
<li><code>Writing into executable and core files</code>: <a href="#Patching">Patching</a>
17083
<li><code>XDB Console</code>: <a href="#View%20Menu">View Menu</a>
17084
<li><code>XDB Reference</code>: <a href="#Getting%20Help">Getting Help</a>, <a href="#Help%20Menu">Help Menu</a>
17085
<li><code>XDB Settings</code>: <a href="#Edit%20Menu">Edit Menu</a>
17090
<small class=header>
17091
Node:<a name="Key%20Index">Key Index</a>,
17092
Next:<a rel="next" accesskey="n" href="#Command%20Index">Command Index</a>,
17093
Previous:<a rel="previous" accesskey="p" href="#Label%20Index">Label Index</a>,
17094
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
17100
<h2 class="unnumbered">Key Index</h2>
17102
<ul class="index-ky" compact>
17103
<li><code>Alt+1</code>: <a href="#View%20Menu">View Menu</a>
17104
<li><code>Alt+2</code>: <a href="#View%20Menu">View Menu</a>
17105
<li><code>Alt+3</code>: <a href="#View%20Menu">View Menu</a>
17106
<li><code>Alt+4</code>: <a href="#Source%20Menu">Source Menu</a>, <a href="#View%20Menu">View Menu</a>
17107
<li><code>Alt+8</code>: <a href="#View%20Menu">View Menu</a>
17108
<li><code>Alt+9</code>: <a href="#View%20Menu">View Menu</a>
17109
<li><code>Alt+A</code>: <a href="#Data%20Menu">Data Menu</a>
17110
<li><code>Alt+G</code>: <a href="#Data%20Menu">Data Menu</a>
17111
<li><code>Alt+I</code>: <a href="#Source%20Menu">Source Menu</a>
17112
<li><code>Alt+L</code>: <a href="#Data%20Menu">Data Menu</a>
17113
<li><code>Alt+N</code>: <a href="#Source%20Menu">Source Menu</a>
17114
<li><code>Alt+R</code>: <a href="#Data%20Menu">Data Menu</a>
17115
<li><code>Alt+U</code>: <a href="#Data%20Menu">Data Menu</a>
17116
<li><code>Alt+W</code>: <a href="#Source%20Menu">Source Menu</a>
17117
<li><code>Alt+Y</code>: <a href="#Data%20Menu">Data Menu</a>
17118
<li><code>Ctrl+,</code>: <a href="#Source%20Menu">Source Menu</a>
17119
<li><code>Ctrl+-</code>: <a href="#Data%20Menu">Data Menu</a>
17120
<li><code>Ctrl+.</code>: <a href="#Source%20Menu">Source Menu</a>
17121
<li><code>Ctrl+/</code>: <a href="#Source%20Menu">Source Menu</a>
17122
<li><code>Ctrl+=</code>: <a href="#Data%20Menu">Data Menu</a>
17123
<li><code>Ctrl+\</code>: <a href="#Program%20Menu">Program Menu</a>, <a href="#Quitting">Quitting</a>
17124
<li><code>Ctrl+A</code>: <a href="#Edit%20Menu">Edit Menu</a>
17125
<li><code>Ctrl+B</code>: <a href="#Command%20History">Command History</a>, <a href="#Commands%20Menu">Commands Menu</a>
17126
<li><code>Ctrl+C</code>: <a href="#Interrupting">Interrupting</a>, <a href="#Customizing%20the%20Edit%20Menu">Customizing the Edit Menu</a>, <a href="#Program%20Menu">Program Menu</a>, <a href="#Edit%20Menu">Edit Menu</a>, <a href="#Quitting">Quitting</a>
17127
<li><code>Ctrl+D</code>: <a href="#Quitting">Quitting</a>
17128
<li><code>Ctrl+Down</code>: <a href="#Selecting%20a%20frame">Selecting a frame</a>, <a href="#Status%20Menu">Status Menu</a>
17129
<li><code>Ctrl+F</code>: <a href="#Command%20History">Command History</a>, <a href="#Commands%20Menu">Commands Menu</a>
17130
<li><code>Ctrl+F1</code>: <a href="#Getting%20Help">Getting Help</a>
17131
<li><code>Ctrl+Ins</code>: <a href="#Edit%20Menu">Edit Menu</a>
17132
<li><code>Ctrl+L</code>: <a href="#Data%20Menu">Data Menu</a>
17133
<li><code>Ctrl+M</code>: <a href="#File%20Menu">File Menu</a>
17134
<li><code>Ctrl+N</code>: <a href="#File%20Menu">File Menu</a>
17135
<li><code>Ctrl+O</code>: <a href="#File%20Menu">File Menu</a>
17136
<li><code>Ctrl+Q</code>: <a href="#File%20Menu">File Menu</a>, <a href="#Quitting">Quitting</a>, <a href="#Invocation">Invocation</a>
17137
<li><code>Ctrl+S</code>: <a href="#File%20Menu">File Menu</a>
17138
<li><code>Ctrl+Shift+A</code>: <a href="#Customizing%20the%20Edit%20Menu">Customizing the Edit Menu</a>, <a href="#Edit%20Menu">Edit Menu</a>
17139
<li><code>Ctrl+U</code>: <a href="#Commands%20Menu">Commands Menu</a>, <a href="#Edit%20Menu">Edit Menu</a>
17140
<li><code>Ctrl+Up</code>: <a href="#Selecting%20a%20frame">Selecting a frame</a>, <a href="#Status%20Menu">Status Menu</a>
17141
<li><code>Ctrl+V</code>: <a href="#Edit%20Menu">Edit Menu</a>
17142
<li><code>Ctrl+W</code>: <a href="#File%20Menu">File Menu</a>
17143
<li><code>Ctrl+X</code>: <a href="#Edit%20Menu">Edit Menu</a>
17144
<li><code>Ctrl+Y</code>: <a href="#Edit%20Menu">Edit Menu</a>
17145
<li><code>Ctrl+Z</code>: <a href="#Edit%20Menu">Edit Menu</a>
17146
<li><code>Down</code>: <a href="#Command%20History">Command History</a>, <a href="#Moving%20Displays">Moving Displays</a>, <a href="#Selecting%20Displays">Selecting Displays</a>, <a href="#Commands%20Menu">Commands Menu</a>
17147
<li><code>ESC</code>: <a href="#Command%20History">Command History</a>, <a href="#Interrupting">Interrupting</a>, <a href="#Customizing%20the%20Edit%20Menu">Customizing the Edit Menu</a>
17148
<li><code>Esc</code>: <a href="#Commands%20Menu">Commands Menu</a>, <a href="#Program%20Menu">Program Menu</a>
17149
<li><code>ESC</code>: <a href="#Quitting">Quitting</a>
17150
<li><code>F1</code>: <a href="#Getting%20Help">Getting Help</a>
17151
<li><code>F12</code>: <a href="#Maintenance%20Menu">Maintenance Menu</a>
17152
<li><code>F2</code>: <a href="#Program%20Menu">Program Menu</a>
17153
<li><code>F3</code>: <a href="#Program%20Menu">Program Menu</a>
17154
<li><code>F4</code>: <a href="#Program%20Menu">Program Menu</a>
17155
<li><code>F5</code>: <a href="#Program%20Menu">Program Menu</a>
17156
<li><code>F6</code>: <a href="#Program%20Menu">Program Menu</a>
17157
<li><code>F7</code>: <a href="#Program%20Menu">Program Menu</a>
17158
<li><code>F8</code>: <a href="#Program%20Menu">Program Menu</a>
17159
<li><code>F9</code>: <a href="#Program%20Menu">Program Menu</a>
17160
<li><code>Home</code>: <a href="#Customizing%20the%20Edit%20Menu">Customizing the Edit Menu</a>
17161
<li><code>Left</code>: <a href="#Moving%20Displays">Moving Displays</a>, <a href="#Selecting%20Displays">Selecting Displays</a>
17162
<li><code>Return</code>: <a href="#Command%20History">Command History</a>, <a href="#Commands%20Menu">Commands Menu</a>
17163
<li><code>Right</code>: <a href="#Moving%20Displays">Moving Displays</a>, <a href="#Selecting%20Displays">Selecting Displays</a>
17164
<li><code>Shift</code>: <a href="#Selecting%20Displays">Selecting Displays</a>
17165
<li><code>Shift+Ctrl+L</code>: <a href="#Source%20Menu">Source Menu</a>
17166
<li><code>Shift+Ctrl+U</code>: <a href="#Commands%20Menu">Commands Menu</a>
17167
<li><code>Shift+Ctrl+V</code>: <a href="#Source%20Menu">Source Menu</a>
17168
<li><code>Shift+Del</code>: <a href="#Edit%20Menu">Edit Menu</a>
17169
<li><code>Shift+F5</code>: <a href="#Program%20Menu">Program Menu</a>
17170
<li><code>Shift+F6</code>: <a href="#Program%20Menu">Program Menu</a>
17171
<li><code>Shift+F9</code>: <a href="#Program%20Menu">Program Menu</a>
17172
<li><code>Shift+Ins</code>: <a href="#Edit%20Menu">Edit Menu</a>
17173
<li><code>TAB</code>: <a href="#Tool%20Bar">Tool Bar</a>
17174
<li><code>Tab</code>: <a href="#Commands%20Menu">Commands Menu</a>
17175
<li><code>Up</code>: <a href="#Command%20History">Command History</a>, <a href="#Moving%20Displays">Moving Displays</a>, <a href="#Selecting%20Displays">Selecting Displays</a>, <a href="#Commands%20Menu">Commands Menu</a>
17180
<small class=header>
17181
Node:<a name="Command%20Index">Command Index</a>,
17182
Next:<a rel="next" accesskey="n" href="#Resource%20Index">Resource Index</a>,
17183
Previous:<a rel="previous" accesskey="p" href="#Key%20Index">Key Index</a>,
17184
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
17190
<h2 class="unnumbered">Command Index</h2>
17192
<ul class="index-cm" compact>
17193
<li><code>cont</code>: <a href="#Undoing%20Program%20Execution">Undoing Program Execution</a>, <a href="#Customizing%20Grab%20Checking">Customizing Grab Checking</a>
17194
<li><code>contuntil</code>: <a href="#GDB%20Argument%20Commands">GDB Argument Commands</a>
17195
<li><code>directory</code>: <a href="#Source%20Path">Source Path</a>
17196
<li><code>down</code>: <a href="#Selecting%20a%20frame">Selecting a frame</a>
17197
<li><code>file</code>: <a href="#Remote%20Program">Remote Program</a>
17198
<li><code>gcore</code>: <a href="#Customizing%20Sessions">Customizing Sessions</a>
17199
<li><code>gd</code>: <a href="#Commands%20with%20Other%20Debuggers">Commands with Other Debuggers</a>
17200
<li><code>graph apply theme</code>: <a href="#Applying%20Data%20Themes%20to%20Several%20Values">Applying Data Themes to Several Values</a>
17201
<li><code>graph disable display</code>: <a href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>
17202
<li><code>graph display</code>: <a href="#Displaying%20Program%20Status">Displaying Program Status</a>, <a href="#Creating%20Single%20Displays">Creating Single Displays</a>
17203
<li><code>graph enable display</code>: <a href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>
17204
<li><code>graph plot</code>: <a href="#Plotting%20Arrays">Plotting Arrays</a>
17205
<li><code>graph refresh</code>: <a href="#Refreshing%20the%20Data%20Window">Refreshing the Data Window</a>
17206
<li><code>graph toggle theme</code>: <a href="#Applying%20Data%20Themes%20to%20Several%20Values">Applying Data Themes to Several Values</a>
17207
<li><code>graph unapply theme</code>: <a href="#Applying%20Data%20Themes%20to%20Several%20Values">Applying Data Themes to Several Values</a>
17208
<li><code>gunzip</code>: <a href="#Help%20Helpers">Help Helpers</a>
17209
<li><code>gzip</code>: <a href="#Help%20Helpers">Help Helpers</a>
17210
<li><code>hbreak</code>: <a href="#Hardware-Assisted%20Breakpoints">Hardware-Assisted Breakpoints</a>
17211
<li><code>help</code>: <a href="#Getting%20Help">Getting Help</a>
17212
<li><code>kill</code>: <a href="#Customizing%20Grab%20Checking">Customizing Grab Checking</a>
17213
<li><code>mwm</code>: <a href="#Gnuplot%20Invocation">Gnuplot Invocation</a>
17214
<li><code>print</code>: <a href="#Printing%20Values">Printing Values</a>
17215
<li><code>quit</code>: <a href="#Customizing%20Grab%20Checking">Customizing Grab Checking</a>, <a href="#Quitting">Quitting</a>
17216
<li><code>remsh</code>: <a href="#Remote%20Debugger">Remote Debugger</a>
17217
<li><code>replot</code>: <a href="#Entering%20Plotting%20Commands">Entering Plotting Commands</a>
17218
<li><code>rsh</code>: <a href="#Remote%20Debugger">Remote Debugger</a>
17219
<li><code>run</code>: <a href="#Starting%20Program%20Execution">Starting Program Execution</a>
17220
<li><code>set environment</code>: <a href="#Environment">Environment</a>
17221
<li><code>set output</code>: <a href="#Entering%20Plotting%20Commands">Entering Plotting Commands</a>
17222
<li><code>set term</code>: <a href="#Entering%20Plotting%20Commands">Entering Plotting Commands</a>
17223
<li><code>target remote</code>: <a href="#Remote%20Program">Remote Program</a>
17224
<li><code>thbreak</code>: <a href="#Hardware-Assisted%20Breakpoints">Hardware-Assisted Breakpoints</a>
17225
<li><code>tty</code>: <a href="#Debugger%20Communication">Debugger Communication</a>
17226
<li><code>unset environment</code>: <a href="#Environment">Environment</a>
17227
<li><code>up</code>: <a href="#Selecting%20a%20frame">Selecting a frame</a>
17228
<li><code>zcat</code>: <a href="#Help%20Helpers">Help Helpers</a>
17233
<small class=header>
17234
Node:<a name="Resource%20Index">Resource Index</a>,
17235
Next:<a rel="next" accesskey="n" href="#File%20Index">File Index</a>,
17236
Previous:<a rel="previous" accesskey="p" href="#Command%20Index">Command Index</a>,
17237
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
17243
<h2 class="unnumbered">Resource Index</h2>
17245
<ul class="index-vr" compact>
17246
<li><code>activeButtonColorKey</code>: <a href="#Customizing%20the%20Tool%20Bar">Customizing the Tool Bar</a>
17247
<li><code>align2dArrays</code>: <a href="#Arrays%20as%20Tables">Arrays as Tables</a>
17248
<li><code>appDefaultsVersion</code>: <a href="#Customizing%20Diagnostics">Customizing Diagnostics</a>
17249
<li><code>arrayOrientation</code>: <a href="#Rotating%20Displays">Rotating Displays</a>
17250
<li><code>autoCloseDataWindow</code>: <a href="#Display%20Resources">Display Resources</a>
17251
<li><code>autoDebugger</code>: <a href="#Debugger%20Invocation">Debugger Invocation</a>
17252
<li><code>autoRaiseMenu</code>: <a href="#Auto-Raise%20Menus">Auto-Raise Menus</a>
17253
<li><code>autoRaiseMenuDelay</code>: <a href="#Auto-Raise%20Menus">Auto-Raise Menus</a>
17254
<li><code>autoRaiseTool</code>: <a href="#Customizing%20Tool%20Position">Customizing Tool Position</a>
17255
<li><code>bash</code>: <a href="#Bash%20Initialization">Bash Initialization</a>
17256
<li><code>bashDisplayShortcuts</code>: <a href="#Display%20Shortcuts">Display Shortcuts</a>
17257
<li><code>bashInitCommands</code>: <a href="#Bash%20Initialization">Bash Initialization</a>
17258
<li><code>blockTTYInput</code>: <a href="#Debugger%20Communication">Debugger Communication</a>
17259
<li><code>break_at</code>: <a href="#Images">Images</a>
17260
<li><code>bufferGDBOutput</code>: <a href="#Debugger%20Communication">Debugger Communication</a>
17261
<li><code>bumpDisplays</code>: <a href="#Display%20Resources">Display Resources</a>
17262
<li><code>buttonCaptionGeometry</code>: <a href="#Customizing%20the%20Tool%20Bar">Customizing the Tool Bar</a>
17263
<li><code>buttonCaptions</code>: <a href="#Customizing%20the%20Tool%20Bar">Customizing the Tool Bar</a>
17264
<li><code>buttonColorKey</code>: <a href="#Customizing%20the%20Tool%20Bar">Customizing the Tool Bar</a>
17265
<li><code>buttonDocs</code>: <a href="#Button%20tips">Button tips</a>
17266
<li><code>buttonImageGeometry</code>: <a href="#Customizing%20the%20Tool%20Bar">Customizing the Tool Bar</a>
17267
<li><code>buttonImages</code>: <a href="#Customizing%20the%20Tool%20Bar">Customizing the Tool Bar</a>
17268
<li><code>buttonTips</code>: <a href="#Button%20tips">Button tips</a>
17269
<li><code>cacheGlyphImages</code>: <a href="#Customizing%20Glyphs">Customizing Glyphs</a>
17270
<li><code>cacheMachineCode</code>: <a href="#Customizing%20Machine%20Code">Customizing Machine Code</a>
17271
<li><code>cacheSourceFiles</code>: <a href="#Customizing%20Source%20Lookup">Customizing Source Lookup</a>
17272
<li><code>checkConfiguration</code>: <a href="#Customizing%20Diagnostics">Customizing Diagnostics</a>
17273
<li><code>checkGrabDelay</code>: <a href="#Customizing%20Grab%20Checking">Customizing Grab Checking</a>
17274
<li><code>checkGrabs</code>: <a href="#Customizing%20Grab%20Checking">Customizing Grab Checking</a>
17275
<li><code>checkOptions</code>: <a href="#Multiple%20Instances">Multiple Instances</a>
17276
<li><code>CLASSPATH</code>: <a href="#Source%20Path">Source Path</a>
17277
<li><code>clear_at</code>: <a href="#Images">Images</a>
17278
<li><code>clusterDisplays</code>: <a href="#Display%20Resources">Display Resources</a>
17279
<li><code>commandToolBar</code>: <a href="#Disabling%20the%20Command%20Tool">Disabling the Command Tool</a>
17280
<li><code>commonToolBar</code>: <a href="#Window%20Layout">Window Layout</a>
17281
<li><code>consoleButtons</code>: <a href="#Customizing%20Buttons">Customizing Buttons</a>
17282
<li><code>consoleHasFocus</code>: <a href="#Typing%20in%20the%20Source%20Window">Typing in the Source Window</a>
17283
<li><code>contInterruptDelay</code>: <a href="#Debugger%20Communication">Debugger Communication</a>
17284
<li><code>cutCopyPasteBindings</code>: <a href="#Customizing%20the%20Edit%20Menu">Customizing the Edit Menu</a>
17285
<li><code>dataButtons</code>: <a href="#Customizing%20Buttons">Customizing Buttons</a>
17286
<li><code>dataFont</code>: <a href="#Customizing%20Fonts">Customizing Fonts</a>
17287
<li><code>dataFontSize</code>: <a href="#Customizing%20Fonts">Customizing Fonts</a>
17288
<li><code>dbxDisplayShortcuts</code>: <a href="#Display%20Shortcuts">Display Shortcuts</a>
17289
<li><code>dbxInitCommands</code>: <a href="#DBX%20Initialization">DBX Initialization</a>
17290
<li><code>dbxSettings</code>: <a href="#DBX%20Initialization">DBX Initialization</a>
17291
<li><code>ddd</code>: <a href="#Images">Images</a>
17292
<li><code>DDD</code>: <a href="#Environment">Environment</a>
17293
<li><code>DDD_NO_SIGNAL_HANDLERS</code>: <a href="#Debugging%20%3csmall%3eDDD%3c%2fsmall%3e">Debugging <small>DDD</small></a>
17294
<li><code>DDD_SESSION</code>: <a href="#Resources">Resources</a>
17295
<li><code>DDD_SESSIONS</code>: <a href="#Customizing%20Sessions">Customizing Sessions</a>
17296
<li><code>DDD_STATE</code>: <a href="#Resources">Resources</a>
17297
<li><code>dddinitVersion</code>: <a href="#Customizing%20Diagnostics">Customizing Diagnostics</a>
17298
<li><code>debugCoreDumps</code>: <a href="#Customizing%20Diagnostics">Customizing Diagnostics</a>
17299
<li><code>debugger</code>: <a href="#Debugger%20Invocation">Debugger Invocation</a>
17300
<li><code>debuggerCommand</code>: <a href="#Debugger%20Invocation">Debugger Invocation</a>
17301
<li><code>decorateTool</code>: <a href="#Customizing%20Tool%20Decoration">Customizing Tool Decoration</a>
17302
<li><code>defaultFont</code>: <a href="#Customizing%20Fonts">Customizing Fonts</a>
17303
<li><code>defaultFontSize</code>: <a href="#Customizing%20Fonts">Customizing Fonts</a>
17304
<li><code>delete</code>: <a href="#Images">Images</a>
17305
<li><code>deleteAliasDisplays</code>: <a href="#Shared%20Structures">Shared Structures</a>
17306
<li><code>detectAliases</code>: <a href="#Shared%20Structures">Shared Structures</a>
17307
<li><code>disable</code>: <a href="#Images">Images</a>
17308
<li><code>disassemble</code>: <a href="#Customizing%20Machine%20Code">Customizing Machine Code</a>
17309
<li><code>display</code>: <a href="#Images">Images</a>
17310
<li><code>DISPLAY</code>: <a href="#Remote%20Host">Remote Host</a>, <a href="#X%20Options">X Options</a>
17311
<li><code>displayGlyphs</code>: <a href="#Customizing%20Glyphs">Customizing Glyphs</a>
17312
<li><code>displayLineNumbers</code>: <a href="#Customizing%20Source%20Appearance">Customizing Source Appearance</a>
17313
<li><code>displayPlacement</code>: <a href="#Placement">Placement</a>
17314
<li><code>displayTimeout</code>: <a href="#Debugger%20Communication">Debugger Communication</a>
17315
<li><code>dispref</code>: <a href="#Images">Images</a>
17316
<li><code>drag_arrow</code>: <a href="#Images">Images</a>
17317
<li><code>drag_cond</code>: <a href="#Images">Images</a>
17318
<li><code>drag_stop</code>: <a href="#Images">Images</a>
17319
<li><code>drag_temp</code>: <a href="#Images">Images</a>
17320
<li><code>dumpCore</code>: <a href="#Customizing%20Diagnostics">Customizing Diagnostics</a>
17321
<li><code>editCommand</code>: <a href="#Customizing%20Editing">Customizing Editing</a>
17322
<li><code>EDITOR</code>: <a href="#Customizing%20Editing">Customizing Editing</a>
17323
<li><code>enable</code>: <a href="#Images">Images</a>
17324
<li><code>expandRepeatedValues</code>: <a href="#Repeated%20Values">Repeated Values</a>
17325
<li><code>filterFiles</code>: <a href="#Customizing%20File%20Filtering">Customizing File Filtering</a>
17326
<li><code>find_backward</code>: <a href="#Images">Images</a>
17327
<li><code>find_forward</code>: <a href="#Images">Images</a>
17328
<li><code>findCaseSensitive</code>: <a href="#Customizing%20Searching">Customizing Searching</a>
17329
<li><code>findWordsOnly</code>: <a href="#Customizing%20Searching">Customizing Searching</a>
17330
<li><code>fixedWidthFont</code>: <a href="#Customizing%20Fonts">Customizing Fonts</a>
17331
<li><code>fixedWidthFontSize</code>: <a href="#Customizing%20Fonts">Customizing Fonts</a>
17332
<li><code>flatDialogButtons</code>: <a href="#Customizing%20the%20Tool%20Bar">Customizing the Tool Bar</a>
17333
<li><code>flatToolbarButtons</code>: <a href="#Customizing%20the%20Tool%20Bar">Customizing the Tool Bar</a>
17334
<li><code>fontSelectCommand</code>: <a href="#Customizing%20Fonts">Customizing Fonts</a>
17335
<li><code>gdbDisplayShortcuts</code>: <a href="#Display%20Shortcuts">Display Shortcuts</a>
17336
<li><code>gdbInitCommands</code>: <a href="#GDB%20Initialization">GDB Initialization</a>
17337
<li><code>gdbSettings</code>: <a href="#GDB%20Initialization">GDB Initialization</a>
17338
<li><code>getCoreCommand</code>: <a href="#Customizing%20Sessions">Customizing Sessions</a>
17339
<li><code>globalTabCompletion</code>: <a href="#Command%20Completion">Command Completion</a>
17340
<li><code>glyphUpdateDelay</code>: <a href="#Customizing%20Glyphs">Customizing Glyphs</a>
17341
<li><code>grabAction</code>: <a href="#Customizing%20Grab%20Checking">Customizing Grab Checking</a>
17342
<li><code>grabActionDelay</code>: <a href="#Customizing%20Grab%20Checking">Customizing Grab Checking</a>
17343
<li><code>grey_arrow</code>: <a href="#Images">Images</a>
17344
<li><code>grey_cond</code>: <a href="#Images">Images</a>
17345
<li><code>grey_stop</code>: <a href="#Images">Images</a>
17346
<li><code>grey_temp</code>: <a href="#Images">Images</a>
17347
<li><code>groupIconify</code>: <a href="#Icons">Icons</a>
17348
<li><code>hide</code>: <a href="#Images">Images</a>
17349
<li><code>hideInactiveDisplays</code>: <a href="#Display%20Resources">Display Resources</a>
17350
<li><code>indentCode</code>: <a href="#Customizing%20Machine%20Code">Customizing Machine Code</a>
17351
<li><code>indentScript</code>: <a href="#Customizing%20Source%20Appearance">Customizing Source Appearance</a>
17352
<li><code>indentSource</code>: <a href="#Customizing%20Source%20Appearance">Customizing Source Appearance</a>
17353
<li><code>initSymbols</code>: <a href="#Finding%20a%20Place%20to%20Start">Finding a Place to Start</a>
17354
<li><code>jdbDisplayShortcuts</code>: <a href="#Display%20Shortcuts">Display Shortcuts</a>
17355
<li><code>jdbInitCommands</code>: <a href="#JDB%20Initialization">JDB Initialization</a>
17356
<li><code>jdbSettings</code>: <a href="#JDB%20Initialization">JDB Initialization</a>
17357
<li><code>labelDelimiter</code>: <a href="#Customizing%20Buttons">Customizing Buttons</a>
17358
<li><code>lessTifVersion</code>: <a href="#LessTif">LessTif</a>
17359
<li><code>lineBufferedConsole</code>: <a href="#Input%2fOutput">Input/Output</a>
17360
<li><code>lineNumberWidth</code>: <a href="#Customizing%20Source%20Appearance">Customizing Source Appearance</a>
17361
<li><code>linesAboveCursor</code>: <a href="#Customizing%20Source%20Scrolling">Customizing Source Scrolling</a>
17362
<li><code>linesBelowCursor</code>: <a href="#Customizing%20Source%20Scrolling">Customizing Source Scrolling</a>
17363
<li><code>listCoreCommand</code>: <a href="#Customizing%20Remote%20Debugging">Customizing Remote Debugging</a>
17364
<li><code>listDirCommand</code>: <a href="#Customizing%20Remote%20Debugging">Customizing Remote Debugging</a>
17365
<li><code>listExecCommand</code>: <a href="#Customizing%20Remote%20Debugging">Customizing Remote Debugging</a>
17366
<li><code>listSourceCommand</code>: <a href="#Customizing%20Remote%20Debugging">Customizing Remote Debugging</a>
17367
<li><code>lookup</code>: <a href="#Images">Images</a>
17368
<li><code>maintenance</code>: <a href="#Customizing%20Diagnostics">Customizing Diagnostics</a>
17369
<li><code>maketemp</code>: <a href="#Images">Images</a>
17370
<li><code>maxDisassemble</code>: <a href="#Customizing%20Machine%20Code">Customizing Machine Code</a>
17371
<li><code>maxGlyphs</code>: <a href="#Customizing%20Glyphs">Customizing Glyphs</a>
17372
<li><code>maxUndoDepth</code>: <a href="#Customizing%20Undo">Customizing Undo</a>
17373
<li><code>maxUndoSize</code>: <a href="#Customizing%20Undo">Customizing Undo</a>
17374
<li><code>new_break</code>: <a href="#Images">Images</a>
17375
<li><code>new_display</code>: <a href="#Images">Images</a>
17376
<li><code>new_watch</code>: <a href="#Images">Images</a>
17377
<li><code>openDataWindow</code>: <a href="#Toggling%20Windows">Toggling Windows</a>
17378
<li><code>openDebuggerConsole</code>: <a href="#Toggling%20Windows">Toggling Windows</a>
17379
<li><code>openSelection</code>: <a href="#Opening%20the%20Selection">Opening the Selection</a>
17380
<li><code>openSourceWindow</code>: <a href="#Toggling%20Windows">Toggling Windows</a>
17381
<li><code>PAGER</code>: <a href="#Customizing%20Diagnostics">Customizing Diagnostics</a>, <a href="#Environment">Environment</a>
17382
<li><code>pannedGraphEditor</code>: <a href="#Scrolling%20Data">Scrolling Data</a>
17383
<li><code>paperSize</code>: <a href="#Printing%20the%20Graph">Printing the Graph</a>
17384
<li><code>perlDisplayShortcuts</code>: <a href="#Display%20Shortcuts">Display Shortcuts</a>
17385
<li><code>perlInitCommands</code>: <a href="#Perl%20Initialization">Perl Initialization</a>
17386
<li><code>perlSettings</code>: <a href="#Perl%20Initialization">Perl Initialization</a>
17387
<li><code>plain_arrow</code>: <a href="#Images">Images</a>
17388
<li><code>plain_cond</code>: <a href="#Images">Images</a>
17389
<li><code>plain_stop</code>: <a href="#Images">Images</a>
17390
<li><code>plain_temp</code>: <a href="#Images">Images</a>
17391
<li><code>plot2dSettings</code>: <a href="#Gnuplot%20Settings">Gnuplot Settings</a>
17392
<li><code>plot3dSettings</code>: <a href="#Gnuplot%20Settings">Gnuplot Settings</a>
17393
<li><code>plotCommand</code>: <a href="#Gnuplot%20Invocation">Gnuplot Invocation</a>
17394
<li><code>plotInitCommands</code>: <a href="#Gnuplot%20Settings">Gnuplot Settings</a>
17395
<li><code>plotTermType</code>: <a href="#Gnuplot%20Invocation">Gnuplot Invocation</a>
17396
<li><code>plotWindowClass</code>: <a href="#Gnuplot%20Invocation">Gnuplot Invocation</a>
17397
<li><code>plotWindowDelay</code>: <a href="#Gnuplot%20Invocation">Gnuplot Invocation</a>
17398
<li><code>popdownHistorySize</code>: <a href="#Text%20Fields">Text Fields</a>
17399
<li><code>positionTimeout</code>: <a href="#Debugger%20Communication">Debugger Communication</a>
17400
<li><code>print</code>: <a href="#Images">Images</a>
17401
<li><code>printCommand</code>: <a href="#Printing%20the%20Graph">Printing the Graph</a>
17402
<li><code>properties</code>: <a href="#Images">Images</a>
17403
<li><code>psCommand</code>: <a href="#Customizing%20Attaching%20to%20Processes">Customizing Attaching to Processes</a>
17404
<li><code>pydbDisplayShortcuts</code>: <a href="#Display%20Shortcuts">Display Shortcuts</a>
17405
<li><code>pydbInitCommands</code>: <a href="#PYDB%20Initialization">PYDB Initialization</a>
17406
<li><code>pydbSettings</code>: <a href="#PYDB%20Initialization">PYDB Initialization</a>
17407
<li><code>questionTimeout</code>: <a href="#Debugger%20Communication">Debugger Communication</a>
17408
<li><code>rotate</code>: <a href="#Images">Images</a>
17409
<li><code>rshCommand</code>: <a href="#Customizing%20Remote%20Debugging">Customizing Remote Debugging</a>
17410
<li><code>runInterruptDelay</code>: <a href="#Debugger%20Communication">Debugger Communication</a>
17411
<li><code>saveHistoryOnExit</code>: <a href="#Command%20History">Command History</a>
17412
<li><code>saveOptionsOnExit</code>: <a href="#Saving%20Options">Saving Options</a>
17413
<li><code>selectAllBindings</code>: <a href="#Customizing%20the%20Edit%20Menu">Customizing the Edit Menu</a>
17414
<li><code>separateDataWindow</code>: <a href="#Window%20Layout">Window Layout</a>
17415
<li><code>separateExecWindow</code>: <a href="#Customizing%20the%20Execution%20Window">Customizing the Execution Window</a>
17416
<li><code>separateSourceWindow</code>: <a href="#Window%20Layout">Window Layout</a>
17417
<li><code>set</code>: <a href="#Images">Images</a>
17418
<li><code>SHELL</code>: <a href="#Arguments">Arguments</a>
17419
<li><code>show</code>: <a href="#Images">Images</a>
17420
<li><code>showBaseDisplayTitles</code>: <a href="#Display%20Resources">Display Resources</a>
17421
<li><code>showConfiguration</code>: <a href="#Customizing%20Diagnostics">Customizing Diagnostics</a>
17422
<li><code>showDependentDisplayTitles</code>: <a href="#Display%20Resources">Display Resources</a>
17423
<li><code>showFonts</code>: <a href="#Customizing%20Diagnostics">Customizing Diagnostics</a>
17424
<li><code>showInvocation</code>: <a href="#Customizing%20Diagnostics">Customizing Diagnostics</a>
17425
<li><code>showLicense</code>: <a href="#Customizing%20Diagnostics">Customizing Diagnostics</a>
17426
<li><code>showManual</code>: <a href="#Customizing%20Diagnostics">Customizing Diagnostics</a>
17427
<li><code>showMemberNames</code>: <a href="#Rotating%20Displays">Rotating Displays</a>
17428
<li><code>showNews</code>: <a href="#Customizing%20Diagnostics">Customizing Diagnostics</a>
17429
<li><code>showVersion</code>: <a href="#Customizing%20Diagnostics">Customizing Diagnostics</a>
17430
<li><code>signal_arrow</code>: <a href="#Images">Images</a>
17431
<li><code>sortPopdownHistory</code>: <a href="#Text%20Fields">Text Fields</a>
17432
<li><code>sourceButtons</code>: <a href="#Customizing%20Buttons">Customizing Buttons</a>
17433
<li><code>sourceEditing</code>: <a href="#In-Place%20Editing">In-Place Editing</a>
17434
<li><code>sourceInitCommands</code>: <a href="#GDB%20Initialization">GDB Initialization</a>
17435
<li><code>splashScreen</code>: <a href="#Splash%20Screen">Splash Screen</a>
17436
<li><code>splashScreenColorKey</code>: <a href="#Splash%20Screen">Splash Screen</a>
17437
<li><code>startupTipCount</code>: <a href="#Tip%20of%20the%20day">Tip of the day</a>
17438
<li><code>startupTips</code>: <a href="#Tip%20of%20the%20day">Tip of the day</a>
17439
<li><code>statusAtBottom</code>: <a href="#Window%20Layout">Window Layout</a>
17440
<li><code>stickyTool</code>: <a href="#Customizing%20Tool%20Position">Customizing Tool Position</a>
17441
<li><code>stopAndContinue</code>: <a href="#Debugger%20Communication">Debugger Communication</a>
17442
<li><code>structOrientation</code>: <a href="#Rotating%20Displays">Rotating Displays</a>
17443
<li><code>suppressTheme</code>: <a href="#Display%20Resources">Display Resources</a>
17444
<li><code>suppressWarnings</code>: <a href="#Customizing%20Diagnostics">Customizing Diagnostics</a>, <a href="#X%20Warnings">X Warnings</a>
17445
<li><code>synchronousDebugger</code>: <a href="#Debugger%20Communication">Debugger Communication</a>
17446
<li><code>tabWidth</code>: <a href="#Customizing%20Source%20Appearance">Customizing Source Appearance</a>
17447
<li><code>TERM</code>: <a href="#Customizing%20the%20Execution%20Window">Customizing the Execution Window</a>, <a href="#Environment">Environment</a>
17448
<li><code>TERMCAP</code>: <a href="#Environment">Environment</a>
17449
<li><code>termCommand</code>: <a href="#Customizing%20the%20Execution%20Window">Customizing the Execution Window</a>
17450
<li><code>terminateOnEOF</code>: <a href="#Debugger%20Communication">Debugger Communication</a>
17451
<li><code>termType</code>: <a href="#Customizing%20the%20Execution%20Window">Customizing the Execution Window</a>
17452
<li><code>themes</code>: <a href="#Display%20Resources">Display Resources</a>
17453
<li><code>tip</code>: <a href="#Tip%20of%20the%20day">Tip of the day</a>
17454
<li><code>toolbarsAtBottom</code>: <a href="#Window%20Layout">Window Layout</a>
17455
<li><code>toolButtons</code>: <a href="#Customizing%20Buttons">Customizing Buttons</a>
17456
<li><code>toolRightOffset</code>: <a href="#Customizing%20Tool%20Position">Customizing Tool Position</a>
17457
<li><code>toolTopOffset</code>: <a href="#Customizing%20Tool%20Position">Customizing Tool Position</a>
17458
<li><code>trace</code>: <a href="#Customizing%20Diagnostics">Customizing Diagnostics</a>
17459
<li><code>typedAliases</code>: <a href="#Shared%20Structures">Shared Structures</a>
17460
<li><code>uncompressCommand</code>: <a href="#Help%20Helpers">Help Helpers</a>
17461
<li><code>undisplay</code>: <a href="#Images">Images</a>
17462
<li><code>uniconifyWhenReady</code>: <a href="#Icons">Icons</a>
17463
<li><code>unwatch</code>: <a href="#Images">Images</a>
17464
<li><code>useSourcePath</code>: <a href="#Customizing%20Source%20Lookup">Customizing Source Lookup</a>
17465
<li><code>useTTYCommand</code>: <a href="#Debugger%20Communication">Debugger Communication</a>
17466
<li><code>valueDocs</code>: <a href="#Value%20Tips">Value Tips</a>
17467
<li><code>valueTips</code>: <a href="#Value%20Tips">Value Tips</a>
17468
<li><code>variableWidthFont</code>: <a href="#Customizing%20Fonts">Customizing Fonts</a>
17469
<li><code>variableWidthFontSize</code>: <a href="#Customizing%20Fonts">Customizing Fonts</a>
17470
<li><code>verifyButtons</code>: <a href="#Customizing%20Buttons">Customizing Buttons</a>
17471
<li><code>vslBaseDefs</code>: <a href="#VSL%20Resources">VSL Resources</a>
17472
<li><code>vslDefs</code>: <a href="#VSL%20Resources">VSL Resources</a>
17473
<li><code>vslLibrary</code>: <a href="#VSL%20Resources">VSL Resources</a>
17474
<li><code>vslPath</code>: <a href="#VSL%20Resources">VSL Resources</a>
17475
<li><code>warnIfLocked</code>: <a href="#Multiple%20Instances">Multiple Instances</a>
17476
<li><code>watch</code>: <a href="#Images">Images</a>
17477
<li><code>WWWBROWSER</code>: <a href="#Help%20Helpers">Help Helpers</a>
17478
<li><code>wwwCommand</code>: <a href="#Help%20Helpers">Help Helpers</a>
17479
<li><code>wwwPage</code>: <a href="#Help%20Helpers">Help Helpers</a>
17480
<li><code>xdbDisplayShortcuts</code>: <a href="#Display%20Shortcuts">Display Shortcuts</a>
17481
<li><code>xdbInitCommands</code>: <a href="#XDB%20Initialization">XDB Initialization</a>
17482
<li><code>xdbSettings</code>: <a href="#XDB%20Initialization">XDB Initialization</a>
17483
<li><code>XEDITOR</code>: <a href="#Customizing%20Editing">Customizing Editing</a>
17488
<small class=header>
17489
Node:<a name="File%20Index">File Index</a>,
17490
Next:<a rel="next" accesskey="n" href="#Concept%20Index">Concept Index</a>,
17491
Previous:<a rel="previous" accesskey="p" href="#Resource%20Index">Resource Index</a>,
17492
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
17498
<h2 class="unnumbered">File Index</h2>
17500
<ul class="index-fl" compact>
17501
<li><code>.emacs</code>: <a href="#Integrating%20%3csmall%3eDDD%3c%2fsmall%3e">Integrating <small>DDD</small></a>
17502
<li><code>.gdbinit</code>: <a href="#Debugging%20%3csmall%3eDDD%3c%2fsmall%3e">Debugging <small>DDD</small></a>, <a href="#Remote%20Program">Remote Program</a>, <a href="#GDB%20Options">GDB Options</a>
17503
<li><code>ChangeLog</code>: <a href="#Contributors">Contributors</a>
17504
<li><code>dbx</code>: <a href="#Options">Options</a>
17505
<li><code>Ddd</code>: <a href="#Application%20Defaults">Application Defaults</a>, <a href="#More%20Customizations">More Customizations</a>, <a href="#Resources">Resources</a>
17506
<li><code>ddd-3.3.9-test2-html-manual.tar.gz</code>: <a href="#About%20this%20Manual">About this Manual</a>
17507
<li><code>ddd-3.3.9-test2-pics.tar.gz</code>: <a href="#About%20this%20Manual">About this Manual</a>
17508
<li><code>ddd-3.3.9-test2.tar.gz</code>: <a href="#About%20this%20Manual">About this Manual</a>
17509
<li><code>ddd-</code><var>version</var><code>-html-manual.tar.gz</code>: <a href="#Getting%20%3csmall%3eDDD%3c%2fsmall%3e">Getting <small>DDD</small></a>
17510
<li><code>ddd-</code><var>version</var><code>-pics.tar.gz</code>: <a href="#Getting%20%3csmall%3eDDD%3c%2fsmall%3e">Getting <small>DDD</small></a>
17511
<li><code>ddd-</code><var>version</var><code>.tar.gz</code>: <a href="#Getting%20%3csmall%3eDDD%3c%2fsmall%3e">Getting <small>DDD</small></a>
17512
<li><code>emacs</code>: <a href="#Integrating%20%3csmall%3eDDD%3c%2fsmall%3e">Integrating <small>DDD</small></a>, <a href="#Customizing%20Editing">Customizing Editing</a>, <a href="#Help%20Helpers">Help Helpers</a>
17513
<li><code>emacsclient</code>: <a href="#Customizing%20Editing">Customizing Editing</a>
17514
<li><code>emacsserver</code>: <a href="#Customizing%20Editing">Customizing Editing</a>
17515
<li><code>fig2dev</code>: <a href="#Printing%20the%20Graph">Printing the Graph</a>
17516
<li><code>file</code>: <a href="#Customizing%20Remote%20Debugging">Customizing Remote Debugging</a>
17517
<li><code>gdb</code>: <a href="#Options">Options</a>
17518
<li><code>gdbserver</code>: <a href="#Remote%20Program">Remote Program</a>
17519
<li><code>gnuclient</code>: <a href="#Customizing%20Editing">Customizing Editing</a>
17520
<li><code>gnudoit</code>: <a href="#Help%20Helpers">Help Helpers</a>
17521
<li><code>gnuplot</code>: <a href="#Plot%20Appearance">Plot Appearance</a>
17522
<li><code>gnuserv</code>: <a href="#Customizing%20Editing">Customizing Editing</a>
17523
<li><code>init</code>: <a href="#Resources">Resources</a>
17524
<li><code>java.prof</code>: <a href="#JDB%20Options">JDB Options</a>
17525
<li><code>jdb</code>: <a href="#Options">Options</a>
17526
<li><code>ladebug</code>: <a href="#Options">Options</a>
17527
<li><code>less</code>: <a href="#Customizing%20Diagnostics">Customizing Diagnostics</a>
17528
<li><code>log</code>: <a href="#Logging">Logging</a>, <a href="#Entering%20Plotting%20Commands">Entering Plotting Commands</a>, <a href="#Options">Options</a>
17529
<li><code>lynx</code>: <a href="#Help%20Helpers">Help Helpers</a>
17530
<li><code>make</code>: <a href="#Recompiling">Recompiling</a>
17531
<li><code>more</code>: <a href="#Customizing%20Diagnostics">Customizing Diagnostics</a>
17532
<li><code>mosaic</code>: <a href="#Help%20Helpers">Help Helpers</a>
17533
<li><code>mozilla</code>: <a href="#Help%20Helpers">Help Helpers</a>
17534
<li><code>netscape</code>: <a href="#Help%20Helpers">Help Helpers</a>
17535
<li><code>on</code>: <a href="#Customizing%20Remote%20Debugging">Customizing Remote Debugging</a>
17536
<li><code>perl</code>: <a href="#Options">Options</a>
17537
<li><code>ps</code>: <a href="#Customizing%20Attaching%20to%20Processes">Customizing Attaching to Processes</a>
17538
<li><code>pydb</code>: <a href="#Options">Options</a>
17539
<li><code>remsh</code>: <a href="#Customizing%20Remote%20Debugging">Customizing Remote Debugging</a>
17540
<li><code>rsh</code>: <a href="#Customizing%20Remote%20Debugging">Customizing Remote Debugging</a>
17541
<li><code>sample</code>: <a href="#Sample%20Session">Sample Session</a>
17542
<li><code>sample.c</code>: <a href="#Sample%20Program">Sample Program</a>, <a href="#Sample%20Session">Sample Session</a>
17543
<li><code>sessions</code>: <a href="#Customizing%20Sessions">Customizing Sessions</a>
17544
<li><code>ssh</code>: <a href="#Customizing%20Remote%20Debugging">Customizing Remote Debugging</a>
17545
<li><code>stty</code>: <a href="#Input%2fOutput">Input/Output</a>
17546
<li><code>suppress.vsl</code>: <a href="#Display%20Resources">Display Resources</a>
17547
<li><code>TODO</code>: <a href="#Contributors">Contributors</a>
17548
<li><code>transfig</code>: <a href="#Printing%20the%20Graph">Printing the Graph</a>
17549
<li><code>vi</code>: <a href="#Customizing%20Editing">Customizing Editing</a>
17550
<li><code>wdb</code>: <a href="#Options">Options</a>
17551
<li><code>xdb</code>: <a href="#Options">Options</a>
17552
<li><code>xemacs</code>: <a href="#Integrating%20%3csmall%3eDDD%3c%2fsmall%3e">Integrating <small>DDD</small></a>, <a href="#Customizing%20Editing">Customizing Editing</a>, <a href="#Help%20Helpers">Help Helpers</a>
17553
<li><code>xfig</code>: <a href="#Printing%20the%20Graph">Printing the Graph</a>
17554
<li><code>xfontsel</code>: <a href="#Customizing%20Fonts">Customizing Fonts</a>
17555
<li><code>xmgr</code>: <a href="#Exporting%20Plot%20Data">Exporting Plot Data</a>
17556
<li><code>xsm</code>: <a href="#Resuming%20Sessions">Resuming Sessions</a>
17557
<li><code>xterm</code>: <a href="#Customizing%20the%20Execution%20Window">Customizing the Execution Window</a>
17558
<li><code>xxgdb</code>: <a href="#Integrating%20%3csmall%3eDDD%3c%2fsmall%3e">Integrating <small>DDD</small></a>
17559
<li><code>~</code>: <a href="#Resources">Resources</a>, <a href="#Options">Options</a>
17564
<small class=header>
17565
Node:<a name="Concept%20Index">Concept Index</a>,
17566
Previous:<a rel="previous" accesskey="p" href="#File%20Index">File Index</a>,
17567
Up:<a rel="up" accesskey="u" href="#Top">Top</a>
17573
<h2 class="unnumbered">Concept Index</h2>
17575
<ul class="index-cp" compact>
17576
<li>Aborting execution: <a href="#Program%20Menu">Program Menu</a>, <a href="#Quitting">Quitting</a>
17577
<li>Ada: <a href="#Summary">Summary</a>
17578
<li>Aliases, detecting: <a href="#Shared%20Structures">Shared Structures</a>
17579
<li>Animating plots: <a href="#Animating%20Plots">Animating Plots</a>
17580
<li>Arguments, displaying: <a href="#Displaying%20Local%20Variables">Displaying Local Variables</a>
17581
<li>Arguments, of the debugged program: <a href="#Arguments">Arguments</a>
17582
<li>Arguments, program: <a href="#Starting%20Program%20Execution">Starting Program Execution</a>
17583
<li>Array slices: <a href="#Array%20Slices">Array Slices</a>
17584
<li>Array, artificial: <a href="#Array%20Slices">Array Slices</a>
17585
<li>Array, plotting: <a href="#Plotting%20Arrays">Plotting Arrays</a>
17586
<li>Artificial arrays: <a href="#Array%20Slices">Array Slices</a>
17587
<li>Assertions and breakpoints: <a href="#Breakpoint%20Conditions">Breakpoint Conditions</a>
17588
<li>Assertions and watchpoints: <a href="#Watchpoints">Watchpoints</a>
17589
<li>Assignment: <a href="#Assignment">Assignment</a>
17590
<li>Assistance: <a href="#Help%20and%20Assistance">Help and Assistance</a>
17591
<li>Auto-command: <a href="#Commands%20with%20Other%20Debuggers">Commands with Other Debuggers</a>
17592
<li>Automatic Layout: <a href="#Automatic%20Layout">Automatic Layout</a>
17593
<li>Balloon help: <a href="#Getting%20Help">Getting Help</a>
17594
<li>Bash: <a href="#Summary">Summary</a>
17595
<li>Bash, invoking <small>DDD</small> with: <a href="#Choosing%20an%20Inferior%20Debugger">Choosing an Inferior Debugger</a>
17596
<li>Box library: <a href="#History">History</a>
17597
<li>Breakpoint: <a href="#Stopping">Stopping</a>
17598
<li>Breakpoint commands: <a href="#Breakpoint%20Commands">Breakpoint Commands</a>
17599
<li>Breakpoint commands, vs. conditions: <a href="#Breakpoint%20Conditions">Breakpoint Conditions</a>
17600
<li>Breakpoint conditions: <a href="#Breakpoint%20Conditions">Breakpoint Conditions</a>
17601
<li>Breakpoint ignore counts: <a href="#Breakpoint%20Ignore%20Counts">Breakpoint Ignore Counts</a>
17602
<li>Breakpoint properties: <a href="#Editing%20Breakpoint%20Properties">Editing Breakpoint Properties</a>
17603
<li>Breakpoint, copying: <a href="#Moving%20and%20Copying%20Breakpoints">Moving and Copying Breakpoints</a>
17604
<li>Breakpoint, deleting: <a href="#Deleting%20Breakpoints">Deleting Breakpoints</a>
17605
<li>Breakpoint, disabling: <a href="#Disabling%20Breakpoints">Disabling Breakpoints</a>
17606
<li>Breakpoint, dragging: <a href="#Moving%20and%20Copying%20Breakpoints">Moving and Copying Breakpoints</a>
17607
<li>Breakpoint, editing: <a href="#Editing%20Breakpoint%20Properties">Editing Breakpoint Properties</a>
17608
<li>Breakpoint, enabling: <a href="#Disabling%20Breakpoints">Disabling Breakpoints</a>
17609
<li>Breakpoint, hardware-assisted: <a href="#Hardware-Assisted%20Breakpoints">Hardware-Assisted Breakpoints</a>
17610
<li>Breakpoint, looking up: <a href="#Looking%20up%20Breakpoints">Looking up Breakpoints</a>
17611
<li>Breakpoint, moving: <a href="#Moving%20and%20Copying%20Breakpoints">Moving and Copying Breakpoints</a>
17612
<li>Breakpoint, setting: <a href="#Setting%20Breakpoints">Setting Breakpoints</a>
17613
<li>Breakpoint, temporary: <a href="#Temporary%20Breakpoints">Temporary Breakpoints</a>
17614
<li>Breakpoint, toggling: <a href="#Tool%20Bar">Tool Bar</a>
17615
<li>Breakpoints, editing: <a href="#Editing%20all%20Breakpoints">Editing all Breakpoints</a>
17616
<li>Button editor: <a href="#Defining%20Buttons">Defining Buttons</a>
17617
<li>Button tip: <a href="#Getting%20Help">Getting Help</a>
17618
<li>Button tip, turning off: <a href="#Button%20tips">Button tips</a>
17619
<li>Buttons, defining: <a href="#Defining%20Buttons">Defining Buttons</a>
17620
<li>C: <a href="#Summary">Summary</a>
17621
<li>C++: <a href="#Summary">Summary</a>
17622
<li>Call stack: <a href="#Stack">Stack</a>
17623
<li>Chill: <a href="#Summary">Summary</a>
17624
<li>Class, opening: <a href="#Opening%20Programs">Opening Programs</a>
17625
<li>Clipboard: <a href="#Edit%20Menu">Edit Menu</a>
17626
<li>Clipboard, putting displays: <a href="#Deleting%20Displays">Deleting Displays</a>
17627
<li>Cluster: <a href="#Clustering">Clustering</a>
17628
<li>Cluster, and plotting: <a href="#Scalars%20and%20Composites">Scalars and Composites</a>
17629
<li>Clustered display, creating: <a href="#Creating%20Single%20Displays">Creating Single Displays</a>
17630
<li>Command completion: <a href="#Command%20Completion">Command Completion</a>
17631
<li>Command history: <a href="#Command%20History">Command History</a>
17632
<li>Command tool: <a href="#Windows">Windows</a>
17633
<li>Command, argument: <a href="#GDB%20Argument%20Commands">GDB Argument Commands</a>
17634
<li>Command, auto: <a href="#Commands%20with%20Other%20Debuggers">Commands with Other Debuggers</a>
17635
<li>Command, breakpoint: <a href="#Breakpoint%20Commands">Breakpoint Commands</a>
17636
<li>Command, defining: <a href="#Defining%20Commands">Defining Commands</a>
17637
<li>Command, defining in <small>GDB</small>: <a href="#GDB%20Simple%20Commands">GDB Simple Commands</a>
17638
<li>Command, defining with other debuggers: <a href="#Commands%20with%20Other%20Debuggers">Commands with Other Debuggers</a>
17639
<li>Command, recording: <a href="#GDB%20Simple%20Commands">GDB Simple Commands</a>
17640
<li>Command, repeating: <a href="#Command%20History">Command History</a>
17641
<li>Command, searching: <a href="#Command%20History">Command History</a>
17642
<li>Command, user-defined: <a href="#Defining%20Commands">Defining Commands</a>
17643
<li>Command-line debugger: <a href="#Summary">Summary</a>
17644
<li>Compact Layout: <a href="#Automatic%20Layout">Automatic Layout</a>
17645
<li>Completion of commands: <a href="#Command%20Completion">Command Completion</a>
17646
<li>Completion of quoted strings: <a href="#Command%20Completion">Command Completion</a>
17647
<li>Conditions on breakpoints: <a href="#Breakpoint%20Conditions">Breakpoint Conditions</a>
17648
<li>Context-sensitive help: <a href="#Getting%20Help">Getting Help</a>
17649
<li>Continue, at different address: <a href="#Continuing%20Somewhere%20Else">Continuing Somewhere Else</a>
17650
<li>Continue, one line: <a href="#Resuming%20Execution">Resuming Execution</a>
17651
<li>Continue, to location: <a href="#Resuming%20Execution">Resuming Execution</a>
17652
<li>Continue, to next line: <a href="#Resuming%20Execution">Resuming Execution</a>
17653
<li>Continue, until function returns: <a href="#Resuming%20Execution">Resuming Execution</a>
17654
<li>Continue, until greater line is reached: <a href="#Resuming%20Execution">Resuming Execution</a>
17655
<li>Continuing execution: <a href="#Resuming%20Execution">Resuming Execution</a>
17656
<li>Continuing process execution: <a href="#Attaching%20to%20a%20Process">Attaching to a Process</a>
17657
<li>Contour lines, in plots: <a href="#Plot%20Appearance">Plot Appearance</a>
17658
<li>Contributors: <a href="#Contributors">Contributors</a>
17659
<li>Copying displays: <a href="#Deleting%20Displays">Deleting Displays</a>
17660
<li>Core dump, opening: <a href="#Opening%20Core%20Dumps">Opening Core Dumps</a>
17661
<li>Core file, in sessions: <a href="#Saving%20Sessions">Saving Sessions</a>
17662
<li>Cutting displays: <a href="#Deleting%20Displays">Deleting Displays</a>
17663
<li>Data Theme: <a href="#Using%20Data%20Themes">Using Data Themes</a>
17664
<li>Data Window: <a href="#Displaying%20Values">Displaying Values</a>
17665
<li>Data window: <a href="#Windows">Windows</a>
17666
<li><small>DBX</small>: <a href="#Summary">Summary</a>
17667
<li><small>DBX</small>, invoking <small>DDD</small> with: <a href="#Choosing%20an%20Inferior%20Debugger">Choosing an Inferior Debugger</a>
17668
<li>Debugger console: <a href="#Windows">Windows</a>
17669
<li>Debugger, on remote host: <a href="#Remote%20Debugger">Remote Debugger</a>
17670
<li>Debugging <small>DDD</small>: <a href="#Debugging%20%3csmall%3eDDD%3c%2fsmall%3e">Debugging <small>DDD</small></a>
17671
<li>Debugging flags: <a href="#Patching">Patching</a>
17672
<li>Debugging optimized code: <a href="#Compiling%20for%20Debugging">Compiling for Debugging</a>
17673
<li>Default session: <a href="#Resuming%20Sessions">Resuming Sessions</a>
17674
<li>Deferred display: <a href="#Creating%20Single%20Displays">Creating Single Displays</a>
17675
<li>Deferred display, in sessions: <a href="#Saving%20Sessions">Saving Sessions</a>
17676
<li>Deleting displays: <a href="#Deleting%20Displays">Deleting Displays</a>, <a href="#Tool%20Bar">Tool Bar</a>
17677
<li>Deleting displays, undoing: <a href="#Deleting%20Displays">Deleting Displays</a>
17678
<li>Dependent display: <a href="#Creating%20Single%20Displays">Creating Single Displays</a>
17679
<li>Dereferencing: <a href="#Dereferencing%20Pointers">Dereferencing Pointers</a>
17680
<li>Detail toggling with <code>Show/Hide</code>: <a href="#Tool%20Bar">Tool Bar</a>
17681
<li>Detail, hiding: <a href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>
17682
<li>Detail, showing: <a href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>
17683
<li>Directory, of the debugged program: <a href="#Working%20Directory">Working Directory</a>
17684
<li>Disabled displays: <a href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>
17685
<li>Disabling displays, undoing: <a href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>
17686
<li>Display: <a href="#Displaying%20Values">Displaying Values</a>
17687
<li>Display Editor: <a href="#Editing%20all%20Displays">Editing all Displays</a>
17688
<li>Display name: <a href="#Selecting%20Displays">Selecting Displays</a>
17689
<li>Display position: <a href="#Creating%20Single%20Displays">Creating Single Displays</a>
17690
<li>Display selection: <a href="#Selecting%20Displays">Selecting Displays</a>
17691
<li>Display title: <a href="#Selecting%20Displays">Selecting Displays</a>
17692
<li>Display value: <a href="#Selecting%20Displays">Selecting Displays</a>
17693
<li>Display, aligning on grid: <a href="#Aligning%20Displays">Aligning Displays</a>
17694
<li>Display, clustered: <a href="#Creating%20Single%20Displays">Creating Single Displays</a>
17695
<li>Display, clustering: <a href="#Clustering">Clustering</a>
17696
<li>Display, copying: <a href="#Deleting%20Displays">Deleting Displays</a>
17697
<li>Display, creating: <a href="#Creating%20Single%20Displays">Creating Single Displays</a>, <a href="#Tool%20Bar">Tool Bar</a>
17698
<li>Display, customizing: <a href="#Customizing%20Displays">Customizing Displays</a>
17699
<li>Display, cutting: <a href="#Deleting%20Displays">Deleting Displays</a>
17700
<li>Display, deferred: <a href="#Creating%20Single%20Displays">Creating Single Displays</a>
17701
<li>Display, deleting: <a href="#Deleting%20Displays">Deleting Displays</a>, <a href="#Tool%20Bar">Tool Bar</a>
17702
<li>Display, dependent: <a href="#Dependent%20Values">Dependent Values</a>, <a href="#Creating%20Single%20Displays">Creating Single Displays</a>
17703
<li>Display, disabled: <a href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>
17704
<li>Display, frozen: <a href="#Stopping%20X%20Programs">Stopping X Programs</a>
17705
<li>Display, hiding details: <a href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>
17706
<li>Display, locked: <a href="#Stopping%20X%20Programs">Stopping X Programs</a>
17707
<li>Display, moving: <a href="#Moving%20Displays">Moving Displays</a>
17708
<li>Display, pasting: <a href="#Deleting%20Displays">Deleting Displays</a>
17709
<li>Display, placement: <a href="#Placement">Placement</a>
17710
<li>Display, plotting the history: <a href="#Plotting%20Histories">Plotting Histories</a>
17711
<li>Display, refreshing: <a href="#Refreshing%20the%20Data%20Window">Refreshing the Data Window</a>
17712
<li>Display, rotating: <a href="#Rotating%20Displays">Rotating Displays</a>, <a href="#Tool%20Bar">Tool Bar</a>
17713
<li>Display, selecting: <a href="#Selecting%20Displays">Selecting Displays</a>
17714
<li>Display, setting: <a href="#Tool%20Bar">Tool Bar</a>, <a href="#Remote%20Host">Remote Host</a>
17715
<li>Display, setting when invoking <small>DDD</small>: <a href="#X%20Options">X Options</a>
17716
<li>Display, showing details: <a href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>
17717
<li>Display, suppressing: <a href="#Deleting%20Displays">Deleting Displays</a>
17718
<li>Display, toggling detail: <a href="#Tool%20Bar">Tool Bar</a>
17719
<li>Display, updating: <a href="#Refreshing%20the%20Data%20Window">Refreshing the Data Window</a>
17720
<li>Displaying values: <a href="#Displaying%20Values">Displaying Values</a>, <a href="#Examining%20Data">Examining Data</a>
17721
<li>Displaying values with <code>Display</code>: <a href="#Tool%20Bar">Tool Bar</a>
17722
<li>Dumping values: <a href="#Examining%20Data">Examining Data</a>
17723
<li>Edge: <a href="#Dependent%20Values">Dependent Values</a>
17724
<li>Edge hint: <a href="#Automatic%20Layout">Automatic Layout</a>, <a href="#Shared%20Structures">Shared Structures</a>
17725
<li>Editing source code: <a href="#Editing%20Source%20Code">Editing Source Code</a>
17726
<li>Emacs, integrating <small>DDD</small>: <a href="#Integrating%20%3csmall%3eDDD%3c%2fsmall%3e">Integrating <small>DDD</small></a>
17727
<li>Emergency repairs: <a href="#Patching">Patching</a>
17728
<li>Environment, of the debugged program: <a href="#Environment">Environment</a>
17729
<li><small>EPROM</small> code debugging: <a href="#Hardware-Assisted%20Breakpoints">Hardware-Assisted Breakpoints</a>
17730
<li>Examining memory contents: <a href="#Examining%20Memory">Examining Memory</a>
17731
<li>Execution position, dragging: <a href="#Continuing%20Somewhere%20Else">Continuing Somewhere Else</a>
17732
<li>Execution window: <a href="#Using%20the%20Execution%20Window">Using the Execution Window</a>, <a href="#Windows">Windows</a>
17733
<li>Execution, "undoing": <a href="#Undoing%20Program%20Execution">Undoing Program Execution</a>
17734
<li>Execution, aborting: <a href="#Program%20Menu">Program Menu</a>, <a href="#Quitting">Quitting</a>
17735
<li>Execution, at different address: <a href="#Continuing%20Somewhere%20Else">Continuing Somewhere Else</a>
17736
<li>Execution, continuing: <a href="#Resuming%20Execution">Resuming Execution</a>
17737
<li>Execution, interrupting: <a href="#Quitting">Quitting</a>
17738
<li>Execution, interrupting automatically: <a href="#Debugger%20Communication">Debugger Communication</a>
17739
<li>Execution, one line: <a href="#Resuming%20Execution">Resuming Execution</a>
17740
<li>Execution, to location: <a href="#Resuming%20Execution">Resuming Execution</a>
17741
<li>Execution, to next line: <a href="#Resuming%20Execution">Resuming Execution</a>
17742
<li>Execution, until function returns: <a href="#Resuming%20Execution">Resuming Execution</a>
17743
<li>Execution, until greater line is reached: <a href="#Resuming%20Execution">Resuming Execution</a>
17744
<li>Exiting: <a href="#Quitting">Quitting</a>
17745
<li>Extending display selection: <a href="#Selecting%20Displays">Selecting Displays</a>
17746
<li>FIG file, printing as: <a href="#Printing%20the%20Graph">Printing the Graph</a>
17747
<li>Files, opening: <a href="#Opening%20Files">Opening Files</a>
17748
<li>Finding items: <a href="#Tool%20Bar">Tool Bar</a>
17749
<li>Fonts: <a href="#Customizing%20Fonts">Customizing Fonts</a>
17750
<li>FORTRAN: <a href="#Summary">Summary</a>
17751
<li>Frame: <a href="#Frames">Frames</a>, <a href="#Stack">Stack</a>
17752
<li>Frame changes, undoing: <a href="#Selecting%20a%20frame">Selecting a frame</a>
17753
<li>Frame number: <a href="#Frames">Frames</a>
17754
<li>Frame pointer: <a href="#Frames">Frames</a>
17755
<li>Frame, selecting: <a href="#Selecting%20a%20frame">Selecting a frame</a>
17756
<li>GCC: <a href="#Compiling%20for%20Debugging">Compiling for Debugging</a>
17757
<li><small>GDB</small>: <a href="#Summary">Summary</a>
17758
<li><small>GDB</small>, invoking <small>DDD</small> with: <a href="#Choosing%20an%20Inferior%20Debugger">Choosing an Inferior Debugger</a>
17759
<li>Glyph: <a href="#Customizing%20Glyphs">Customizing Glyphs</a>
17760
<li>GPL: <a href="#Free%20Software">Free Software</a>
17761
<li>Grabbed pointer: <a href="#Stopping%20X%20Programs">Stopping X Programs</a>
17762
<li>Graph, printing: <a href="#Printing%20the%20Graph">Printing the Graph</a>
17763
<li>Graph, rotating: <a href="#Rotating%20the%20Graph">Rotating the Graph</a>
17764
<li>Grid, aligning displays: <a href="#Aligning%20Displays">Aligning Displays</a>
17765
<li>Grid, in plots: <a href="#Plot%20Appearance">Plot Appearance</a>
17766
<li>Help: <a href="#Help%20and%20Assistance">Help and Assistance</a>, <a href="#Getting%20Help">Getting Help</a>
17767
<li>Help, in the status line: <a href="#Getting%20Help">Getting Help</a>
17768
<li>Help, on buttons: <a href="#Getting%20Help">Getting Help</a>
17769
<li>Help, on commands: <a href="#Getting%20Help">Getting Help</a>
17770
<li>Help, on items: <a href="#Getting%20Help">Getting Help</a>
17771
<li>Help, when stuck: <a href="#Getting%20Help">Getting Help</a>
17772
<li>Hiding display details: <a href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>
17773
<li>Historic mode: <a href="#Undoing%20Program%20Execution">Undoing Program Execution</a>
17774
<li>History: <a href="#History">History</a>
17775
<li>History, plotting: <a href="#Plotting%20Histories">Plotting Histories</a>
17776
<li>Host, remote: <a href="#Remote%20Host">Remote Host</a>
17777
<li>HTML manual: <a href="#About%20this%20Manual">About this Manual</a>
17778
<li>IBMGL file, printing as: <a href="#Printing%20the%20Graph">Printing the Graph</a>
17779
<li>Icon, invoking <small>DDD</small> as: <a href="#X%20Options">X Options</a>
17780
<li>Ignore count: <a href="#Breakpoint%20Ignore%20Counts">Breakpoint Ignore Counts</a>
17781
<li>Indent, source code: <a href="#Customizing%20Source%20Appearance">Customizing Source Appearance</a>
17782
<li>Inferior debugger: <a href="#Summary">Summary</a>
17783
<li>Info manual: <a href="#About%20this%20Manual">About this Manual</a>
17784
<li>Initial frame: <a href="#Frames">Frames</a>
17785
<li>Innermost frame: <a href="#Frames">Frames</a>
17786
<li>Input of the debugged program: <a href="#Input%2fOutput">Input/Output</a>
17787
<li>Instruction, stepping: <a href="#Machine%20Code%20Execution">Machine Code Execution</a>
17788
<li>Integrating <small>DDD</small>: <a href="#Integrating%20%3csmall%3eDDD%3c%2fsmall%3e">Integrating <small>DDD</small></a>
17789
<li>Interrupting <small>DDD</small>: <a href="#Quitting">Quitting</a>
17790
<li>Interrupting execution: <a href="#Quitting">Quitting</a>
17791
<li>Interrupting execution, automatically: <a href="#Debugger%20Communication">Debugger Communication</a>
17792
<li>Invoking: <a href="#Invoking">Invoking</a>
17793
<li>Java: <a href="#Summary">Summary</a>
17794
<li><small>JDB</small>: <a href="#Summary">Summary</a>
17795
<li><small>JDB</small>, invoking <small>DDD</small> with: <a href="#Choosing%20an%20Inferior%20Debugger">Choosing an Inferior Debugger</a>
17796
<li>Jump to different address: <a href="#Continuing%20Somewhere%20Else">Continuing Somewhere Else</a>
17797
<li>Killing <small>DDD</small>: <a href="#Quitting">Quitting</a>
17798
<li>Killing the debugged program: <a href="#Killing%20the%20Program">Killing the Program</a>
17799
<li>Ladebug: <a href="#Summary">Summary</a>
17800
<li>Ladebug, invoking <small>DDD</small> with: <a href="#Choosing%20an%20Inferior%20Debugger">Choosing an Inferior Debugger</a>
17801
<li>License: <a href="#License">License</a>, <a href="#Free%20Software">Free Software</a>
17802
<li>License, Documentation: <a href="#Documentation%20License">Documentation License</a>
17803
<li>License, showing on standard output: <a href="#Options">Options</a>
17804
<li>Line numbers: <a href="#Customizing%20Source%20Appearance">Customizing Source Appearance</a>
17805
<li>Local variables, displaying: <a href="#Displaying%20Local%20Variables">Displaying Local Variables</a>
17806
<li>Logging: <a href="#Logging">Logging</a>
17807
<li>Logging, disabling: <a href="#Disabling%20Logging">Disabling Logging</a>
17808
<li>Looking up breakpoints: <a href="#Looking%20up%20Breakpoints">Looking up Breakpoints</a>
17809
<li>Looking up items: <a href="#Tool%20Bar">Tool Bar</a>
17810
<li>Lookups, redoing: <a href="#Looking%20up%20Previous%20Locations">Looking up Previous Locations</a>
17811
<li>Lookups, undoing: <a href="#Looking%20up%20Previous%20Locations">Looking up Previous Locations</a>
17812
<li>L�tkehaus, Dorothea: <a href="#History">History</a>, <a href="#Contributors">Contributors</a>
17813
<li>Machine code window: <a href="#Windows">Windows</a>
17814
<li>Machine code, examining: <a href="#Machine%20Code">Machine Code</a>
17815
<li>Machine code, executing: <a href="#Machine%20Code%20Execution">Machine Code Execution</a>
17816
<li>Mailing list: <a href="#Help%20and%20Assistance">Help and Assistance</a>
17817
<li>Make, invoking: <a href="#Recompiling">Recompiling</a>
17818
<li>Manual, showing on standard output: <a href="#Options">Options</a>
17819
<li>Memory, dumping contents: <a href="#Examining%20Data">Examining Data</a>
17820
<li>Memory, examining: <a href="#Examining%20Memory">Examining Memory</a>
17821
<li>Modula-2: <a href="#Summary">Summary</a>
17822
<li>Modula-3: <a href="#Summary">Summary</a>
17823
<li>Mouse pointer, frozen: <a href="#Stopping%20X%20Programs">Stopping X Programs</a>
17824
<li>Name, display: <a href="#Selecting%20Displays">Selecting Displays</a>
17825
<li>News, showing on standard output: <a href="#Options">Options</a>
17826
<li>NORA: <a href="#History">History</a>
17827
<li>Optimized code, debugging: <a href="#Compiling%20for%20Debugging">Compiling for Debugging</a>
17828
<li>Option: <a href="#Invoking">Invoking</a>
17829
<li>Outermost frame: <a href="#Frames">Frames</a>
17830
<li>Output of the debugged program: <a href="#Input%2fOutput">Input/Output</a>
17831
<li>Pascal: <a href="#Summary">Summary</a>
17832
<li>Pasting displays: <a href="#Deleting%20Displays">Deleting Displays</a>
17833
<li>Patching: <a href="#Patching">Patching</a>
17834
<li>PDF manual: <a href="#About%20this%20Manual">About this Manual</a>
17835
<li>Perl: <a href="#Summary">Summary</a>
17836
<li>Perl, invoking <small>DDD</small> with: <a href="#Choosing%20an%20Inferior%20Debugger">Choosing an Inferior Debugger</a>
17837
<li>PIC file, printing as: <a href="#Printing%20the%20Graph">Printing the Graph</a>
17838
<li>Pipe: <a href="#Input%2fOutput">Input/Output</a>
17839
<li>Placement: <a href="#Placement">Placement</a>
17840
<li>Plot appearance: <a href="#Plot%20Appearance">Plot Appearance</a>
17841
<li>Plot, animating: <a href="#Animating%20Plots">Animating Plots</a>
17842
<li>Plot, exporting: <a href="#Exporting%20Plot%20Data">Exporting Plot Data</a>
17843
<li>Plot, printing: <a href="#Printing%20Plots">Printing Plots</a>
17844
<li>Plot, scrolling: <a href="#Plot%20Appearance">Plot Appearance</a>
17845
<li>Plotting style: <a href="#Plot%20Appearance">Plot Appearance</a>
17846
<li>Plotting values: <a href="#Plotting%20Values">Plotting Values</a>, <a href="#Examining%20Data">Examining Data</a>, <a href="#Tool%20Bar">Tool Bar</a>
17847
<li>Pointers, dereferencing: <a href="#Dereferencing%20Pointers">Dereferencing Pointers</a>
17848
<li>Position, of display: <a href="#Creating%20Single%20Displays">Creating Single Displays</a>
17849
<li>PostScript manual: <a href="#About%20this%20Manual">About this Manual</a>
17850
<li>PostScript, printing as: <a href="#Printing%20the%20Graph">Printing the Graph</a>
17851
<li>Print, output formats: <a href="#Printing%20Values">Printing Values</a>
17852
<li>Printing plots: <a href="#Printing%20Plots">Printing Plots</a>
17853
<li>Printing the Graph: <a href="#Printing%20the%20Graph">Printing the Graph</a>
17854
<li>Printing values: <a href="#Printing%20Values">Printing Values</a>, <a href="#Examining%20Data">Examining Data</a>
17855
<li>Printing values with <code>Print</code>: <a href="#Tool%20Bar">Tool Bar</a>
17856
<li>Process, attaching: <a href="#Attaching%20to%20a%20Process">Attaching to a Process</a>
17857
<li>Program arguments: <a href="#Starting%20Program%20Execution">Starting Program Execution</a>
17858
<li>Program counter, displaying: <a href="#Machine%20Code%20Execution">Machine Code Execution</a>
17859
<li>Program output, confusing: <a href="#Input%2fOutput">Input/Output</a>
17860
<li>Program, on remote host: <a href="#Remote%20Program">Remote Program</a>
17861
<li>Program, opening: <a href="#Opening%20Programs">Opening Programs</a>
17862
<li>Program, patching: <a href="#Patching">Patching</a>
17863
<li>PSG: <a href="#History">History</a>
17864
<li><small>PYDB</small>: <a href="#Summary">Summary</a>
17865
<li><small>PYDB</small>, invoking <small>DDD</small> with: <a href="#Choosing%20an%20Inferior%20Debugger">Choosing an Inferior Debugger</a>
17866
<li>Python: <a href="#Summary">Summary</a>
17867
<li>Quitting: <a href="#Quitting">Quitting</a>
17868
<li>Quotes in commands: <a href="#Command%20Completion">Command Completion</a>
17869
<li>Readline: <a href="#TTY%20mode">TTY mode</a>
17870
<li>Recompiling: <a href="#Recompiling">Recompiling</a>
17871
<li>Recording commands: <a href="#GDB%20Simple%20Commands">GDB Simple Commands</a>
17872
<li>Redirecting I/O of the debugged program: <a href="#Input%2fOutput">Input/Output</a>
17873
<li>Redirecting I/O to the execution window: <a href="#Using%20the%20Execution%20Window">Using the Execution Window</a>
17874
<li>Redirection: <a href="#Input%2fOutput">Input/Output</a>
17875
<li>Redirection, to execution window: <a href="#Using%20the%20Execution%20Window">Using the Execution Window</a>, <a href="#Debugger%20Communication">Debugger Communication</a>
17876
<li>Redoing commands: <a href="#Undo%20and%20Redo">Undo and Redo</a>
17877
<li>Redoing lookups: <a href="#Looking%20up%20Previous%20Locations">Looking up Previous Locations</a>
17878
<li>Refreshing displayed values: <a href="#Refreshing%20the%20Data%20Window">Refreshing the Data Window</a>
17879
<li>Registers, examining: <a href="#Registers">Registers</a>
17880
<li>Reloading source code: <a href="#Editing%20Source%20Code">Editing Source Code</a>
17881
<li>Remote debugger: <a href="#Remote%20Debugger">Remote Debugger</a>
17882
<li>Remote host: <a href="#Remote%20Host">Remote Host</a>
17883
<li>Remote program: <a href="#Remote%20Program">Remote Program</a>
17884
<li>Resource, setting when invoking <small>DDD</small>: <a href="#X%20Options">X Options</a>
17885
<li>Resources: <a href="#Resources">Resources</a>
17886
<li><small>ROM</small> code debugging: <a href="#Hardware-Assisted%20Breakpoints">Hardware-Assisted Breakpoints</a>
17887
<li>Rotating displays with <code>Rotate</code>: <a href="#Tool%20Bar">Tool Bar</a>
17888
<li>Rotating the graph: <a href="#Rotating%20the%20Graph">Rotating the Graph</a>
17889
<li>Running the debugged program: <a href="#Running">Running</a>
17890
<li>Scalars, plotting: <a href="#Scalars%20and%20Composites">Scalars and Composites</a>
17891
<li>Scales, in plots: <a href="#Plot%20Appearance">Plot Appearance</a>
17892
<li>Scrolling: <a href="#Scrolling%20Data">Scrolling Data</a>
17893
<li>Search, using <code>Find >></code>: <a href="#Tool%20Bar">Tool Bar</a>
17894
<li>Searching commands: <a href="#Command%20History">Command History</a>
17895
<li>Selecting frames: <a href="#Selecting%20a%20frame">Selecting a frame</a>
17896
<li>Selecting multiple displays: <a href="#Selecting%20Displays">Selecting Displays</a>
17897
<li>Selecting single displays: <a href="#Selecting%20Displays">Selecting Displays</a>
17898
<li>Session: <a href="#Sessions">Sessions</a>
17899
<li>Session, active: <a href="#Saving%20Sessions">Saving Sessions</a>
17900
<li>Session, default: <a href="#Resuming%20Sessions">Resuming Sessions</a>
17901
<li>Session, deleting: <a href="#Deleting%20Sessions">Deleting Sessions</a>
17902
<li>Session, opening: <a href="#Resuming%20Sessions">Resuming Sessions</a>
17903
<li>Session, resuming: <a href="#Resuming%20Sessions">Resuming Sessions</a>
17904
<li>Session, saving: <a href="#Saving%20Sessions">Saving Sessions</a>
17905
<li>Session, setting when invoking <small>DDD</small>: <a href="#Options">Options</a>
17906
<li>Setting variables: <a href="#Assignment">Assignment</a>
17907
<li>Setting variables with <code>Set</code>: <a href="#Tool%20Bar">Tool Bar</a>
17908
<li>Shared structures, detecting: <a href="#Shared%20Structures">Shared Structures</a>
17909
<li>Showing display details: <a href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>
17910
<li>SIGABRT signal: <a href="#Program%20Menu">Program Menu</a>, <a href="#Quitting">Quitting</a>
17911
<li>SIGALRM signal: <a href="#Signals">Signals</a>
17912
<li>SIGINT signal: <a href="#Signals">Signals</a>, <a href="#Interrupting">Interrupting</a>
17913
<li>Signal settings, editing: <a href="#Signals">Signals</a>
17914
<li>Signal settings, saving: <a href="#Signals">Signals</a>
17915
<li>Signal, fatal: <a href="#Signals">Signals</a>
17916
<li>Signal, sending to <small>DDD</small>: <a href="#Quitting">Quitting</a>
17917
<li>Signals: <a href="#Signals">Signals</a>
17918
<li>SIGSEGV signal: <a href="#Signals">Signals</a>
17919
<li>SIGTRAP signal: <a href="#Signals">Signals</a>
17920
<li>SIGUSR1 signal: <a href="#Debugging%20%3csmall%3eDDD%3c%2fsmall%3e">Debugging <small>DDD</small></a>, <a href="#Maintenance%20Menu">Maintenance Menu</a>
17921
<li>Source code, editing: <a href="#Editing%20Source%20Code">Editing Source Code</a>
17922
<li>Source code, recompiling: <a href="#Recompiling">Recompiling</a>
17923
<li>Source code, reloading: <a href="#Editing%20Source%20Code">Editing Source Code</a>
17924
<li>Source directory: <a href="#Source%20Path">Source Path</a>
17925
<li>Source file, opening: <a href="#Opening%20Source%20Files">Opening Source Files</a>
17926
<li>Source file, typing into: <a href="#Typing%20in%20the%20Source%20Window">Typing in the Source Window</a>
17927
<li>Source path: <a href="#Source%20Path">Source Path</a>
17928
<li>Source path, specifying: <a href="#Source%20Path">Source Path</a>
17929
<li>Source window: <a href="#Windows">Windows</a>
17930
<li>Source, accessing: <a href="#Source%20Path">Source Path</a>
17931
<li>Stack Frame: <a href="#Frames">Frames</a>
17932
<li>Stack frame: <a href="#Stack">Stack</a>
17933
<li>Stack, moving within: <a href="#Selecting%20a%20frame">Selecting a frame</a>
17934
<li>Status display: <a href="#Displaying%20Program%20Status">Displaying Program Status</a>
17935
<li>Status line: <a href="#Getting%20Help">Getting Help</a>
17936
<li>Status line, location: <a href="#Window%20Layout">Window Layout</a>
17937
<li>Suppressing values: <a href="#Deleting%20Displays">Deleting Displays</a>
17938
<li>Tab width: <a href="#Customizing%20Source%20Appearance">Customizing Source Appearance</a>
17939
<li>TeX file, printing as: <a href="#Printing%20the%20Graph">Printing the Graph</a>
17940
<li>TeXinfo manual: <a href="#About%20this%20Manual">About this Manual</a>
17941
<li>Theme, Data: <a href="#Using%20Data%20Themes">Using Data Themes</a>
17942
<li>Theme, editing: <a href="#Editing%20Themes">Editing Themes</a>
17943
<li>Theme, for suppressing values: <a href="#Deleting%20Displays">Deleting Displays</a>
17944
<li>Threads: <a href="#Threads">Threads</a>
17945
<li>Tic Tac Toe game: <a href="#Maintenance%20Menu">Maintenance Menu</a>
17946
<li>Tip of the day: <a href="#Getting%20Help">Getting Help</a>
17947
<li>Tip of the day, turning off: <a href="#Tip%20of%20the%20day">Tip of the day</a>
17948
<li>Tip, on buttons: <a href="#Getting%20Help">Getting Help</a>
17949
<li>Tip, value: <a href="#Value%20Tips">Value Tips</a>, <a href="#Examining%20Data">Examining Data</a>
17950
<li>Title, display: <a href="#Selecting%20Displays">Selecting Displays</a>
17951
<li>Tool Bar, location: <a href="#Window%20Layout">Window Layout</a>
17952
<li>Tool tip: <a href="#Getting%20Help">Getting Help</a>
17953
<li>Tornado: <a href="#WindRiver%20GDB">WindRiver GDB</a>
17954
<li><small>TTY</small> interface: <a href="#TTY%20mode">TTY mode</a>
17955
<li><small>TTY</small> mode, setting when invoking <small>DDD</small>: <a href="#Options">Options</a>
17956
<li><small>TTY</small> settings: <a href="#Input%2fOutput">Input/Output</a>
17957
<li>Undo deleting displays: <a href="#Deleting%20Displays">Deleting Displays</a>
17958
<li>Undo disabling displays: <a href="#Showing%20and%20Hiding%20Details">Showing and Hiding Details</a>
17959
<li>Undoing commands: <a href="#Undo%20and%20Redo">Undo and Redo</a>
17960
<li>Undoing frame changes: <a href="#Selecting%20a%20frame">Selecting a frame</a>
17961
<li>Undoing lookups: <a href="#Looking%20up%20Previous%20Locations">Looking up Previous Locations</a>
17962
<li>Undoing program execution: <a href="#Undoing%20Program%20Execution">Undoing Program Execution</a>
17963
<li>Undoing signal handling: <a href="#Signals">Signals</a>
17964
<li>Updating displayed values: <a href="#Refreshing%20the%20Data%20Window">Refreshing the Data Window</a>
17965
<li>User-defined command: <a href="#Defining%20Commands">Defining Commands</a>
17966
<li>Value tip: <a href="#Value%20Tips">Value Tips</a>, <a href="#Examining%20Data">Examining Data</a>
17967
<li>Value, display: <a href="#Selecting%20Displays">Selecting Displays</a>
17968
<li>Value, displaying: <a href="#Displaying%20Values">Displaying Values</a>, <a href="#Examining%20Data">Examining Data</a>
17969
<li>Value, dumping: <a href="#Examining%20Data">Examining Data</a>
17970
<li>Value, plotting: <a href="#Examining%20Data">Examining Data</a>
17971
<li>Value, plotting the history: <a href="#Plotting%20Histories">Plotting Histories</a>
17972
<li>Value, printing: <a href="#Printing%20Values">Printing Values</a>, <a href="#Examining%20Data">Examining Data</a>
17973
<li>Values, displaying with <code>Display</code>: <a href="#Tool%20Bar">Tool Bar</a>
17974
<li>Values, plotting: <a href="#Plotting%20Values">Plotting Values</a>
17975
<li>Values, plotting with <code>Plot</code>: <a href="#Tool%20Bar">Tool Bar</a>
17976
<li>Values, printing with <code>Print</code>: <a href="#Tool%20Bar">Tool Bar</a>
17977
<li>Values, suppressing: <a href="#Deleting%20Displays">Deleting Displays</a>
17978
<li>Variables, setting: <a href="#Assignment">Assignment</a>
17979
<li>Variables, setting with <code>Set</code>: <a href="#Tool%20Bar">Tool Bar</a>
17980
<li>virtual machine: <a href="#JDB%20Options">JDB Options</a>
17981
<li>VM: <a href="#JDB%20Options">JDB Options</a>
17982
<li>VSL: <a href="#History">History</a>
17983
<li>Watchpoint: <a href="#Watchpoints">Watchpoints</a>, <a href="#Stopping">Stopping</a>
17984
<li>Watchpoint properties: <a href="#Editing%20Watchpoint%20Properties">Editing Watchpoint Properties</a>
17985
<li>Watchpoint, deleting: <a href="#Deleting%20Watchpoints">Deleting Watchpoints</a>
17986
<li>Watchpoint, editing: <a href="#Editing%20Watchpoint%20Properties">Editing Watchpoint Properties</a>
17987
<li>Watchpoint, setting: <a href="#Setting%20Watchpoints">Setting Watchpoints</a>
17988
<li>Watchpoint, toggling: <a href="#Tool%20Bar">Tool Bar</a>
17989
<li>Watchpoints, editing: <a href="#Editing%20all%20Watchpoints">Editing all Watchpoints</a>
17990
<li>WDB: <a href="#WDB">WDB</a>
17991
<li><small>WDB</small>, invoking <small>DDD</small> with: <a href="#WDB">WDB</a>, <a href="#Choosing%20an%20Inferior%20Debugger">Choosing an Inferior Debugger</a>
17992
<li>WildeBeest: <a href="#WDB">WDB</a>
17993
<li>WindRiver GDB: <a href="#WindRiver%20GDB">WindRiver GDB</a>
17994
<li>Working directory, of the debugged program: <a href="#Working%20Directory">Working Directory</a>
17995
<li>X programs, stopping: <a href="#Stopping%20X%20Programs">Stopping X Programs</a>
17996
<li>X server, frozen: <a href="#Stopping%20X%20Programs">Stopping X Programs</a>
17997
<li>X server, locked: <a href="#Stopping%20X%20Programs">Stopping X Programs</a>
17998
<li>X session: <a href="#Resuming%20Sessions">Resuming Sessions</a>
17999
<li>X Warnings, suppressing: <a href="#X%20Warnings">X Warnings</a>
18000
<li><small>XDB</small>: <a href="#Summary">Summary</a>
18001
<li><small>XDB</small>, invoking <small>DDD</small> with: <a href="#Choosing%20an%20Inferior%20Debugger">Choosing an Inferior Debugger</a>
18002
<li>XEmacs, integrating <small>DDD</small>: <a href="#Integrating%20%3csmall%3eDDD%3c%2fsmall%3e">Integrating <small>DDD</small></a>
18003
<li><small>XXGDB</small>, integrating <small>DDD</small>: <a href="#Integrating%20%3csmall%3eDDD%3c%2fsmall%3e">Integrating <small>DDD</small></a>
18004
<li>Zeller, Andreas: <a href="#History">History</a>, <a href="#Contributors">Contributors</a>
18008
<div class="footnote">
18012
<li><a name="fn-1"></a>
18013
<p>Within <small>DDD</small> (and
18014
this manual), Ladebug is considered a <small>DBX</small> variant. Hence, everything
18015
said for <small>DBX</small> also applies to Ladebug, unless stated otherwise.</p>
18017
<li><a name="fn-2"></a>
18018
<p><small>XDB</small> will no longer be maintained in future <small>DDD</small>
18019
releases. Use a recent <small>GDB</small> version instead.</p>
18021
<li><a name="fn-3"></a>
18022
<p>Actual numbers and behavior on your system may
18025
<li><a name="fn-4"></a>
18026
<p>Re-invoke <small>DDD</small> with
18027
<code>--gdb</code>, if you do not see a <code>(gdb)</code> prompt here
18028
(see <a href="#Choosing%20an%20Inferior%20Debugger">Choosing an Inferior Debugger</a>)</p>
18030
<li><a name="fn-5"></a>
18032
core file is included.</p>
18034
<li><a name="fn-6"></a>
18035
<p>If a core file is
18036
<em>not</em> to be included in the session, <small>DDD</small> data displays are
18037
saved as <em>deferred</em>; that is, they will be restored as soon as
18038
program execution reaches the scope in which they were created.
18039
See <a href="#Creating%20Single%20Displays">Creating Single Displays</a>, for details.</p>
18041
<li><a name="fn-7"></a>
18042
<p>Requires X11R6 or later.</p>
18044
<li><a name="fn-8"></a>
18046
you use a <code>Ddd</code> application-defaults file, you will not be
18047
able to maintain multiple <small>DDD</small> versions at the same time. This
18048
is why the suiting <code>Ddd</code> is normally compiled into the
18049
<small>DDD</small> executable.</p>
18051
<li><a name="fn-9"></a>
18052
<p>If you use <small>DDD</small> to
18053
debug Perl, Python or Bash scripts, then this section does not apply.</p>
18055
<li><a name="fn-10"></a>
18056
<p>With <small>XDB</small> and some <small>DBX</small> variants, the debugged program
18057
must be specified upon invocation and cannot be changed at run time.</p>
18059
<li><a name="fn-11"></a>
18060
<p><small>JDB</small>,
18061
<small>PYDB</small>, Perl, and Bash do not support core dumps.</p>
18063
<li><a name="fn-12"></a>
18064
<p><small>JDB</small> does not support
18065
breakpoint disabling.</p>
18067
<li><a name="fn-13"></a>
18068
<p><small>JDB</small> does not support temporary breakpoints.</p>
18070
<li><a name="fn-14"></a>
18071
<p><small>GDB</small> has
18072
no way to make a temporary breakpoint non-temporary again.</p>
18074
<li><a name="fn-15"></a>
18075
<p><small>JDB</small>, Perl
18076
and some <small>DBX</small> variants do not support breakpoint ignore counts.</p>
18078
<li><a name="fn-16"></a>
18079
<p><small>JDB</small>, <small>PYDB</small>, and some <small>DBX</small> variants do
18080
not support breakpoint commands.</p>
18082
<li><a name="fn-17"></a>
18084
glyphs are disabled (see <a href="#Customizing%20Source">Customizing Source</a>), breakpoints cannot be
18085
dragged. Delete and set breakpoints instead.</p>
18087
<li><a name="fn-18"></a>
18088
<p>Watchpoints are available in <small>GDB</small> and
18089
some <small>DBX</small> variants only. In <small>XDB</small>, a similar feature is available via <small>XDB</small>
18090
<dfn>assertions</dfn>; see the <small>XDB</small> documentation for details.</p>
18092
<li><a name="fn-19"></a>
18093
<p>If <Ctrl+C> is not bound to
18094
<code>Copy</code> (see <a href="#Customizing%20the%20Edit%20Menu">Customizing the Edit Menu</a>), you can also use
18095
<Ctrl+C> to interrupt the running program.</p>
18097
<li><a name="fn-20"></a>
18098
<p>If the debuggee runs in a separate
18099
execution window, the debuggee's <code>TERM</code> value is set according to
18100
the <code>termType</code> resource; See <a href="#Customizing%20the%20Execution%20Window">Customizing the Execution Window</a>,
18103
<li><a name="fn-21"></a>
18104
<p>The execution window is not available in <small>JDB</small>.</p>
18106
<li><a name="fn-22"></a>
18107
<p><small>JDB</small>, <small>PYDB</small>, Perl, and Bash do not support
18108
attaching the debugger to running processes.</p>
18110
<li><a name="fn-23"></a>
18111
<p><small>JDB</small>, <small>PYDB</small>, Perl, and Bash do not support
18112
altering the execution position.</p>
18114
<li><a name="fn-24"></a>
18116
disabled (see <a href="#Customizing%20Source">Customizing Source</a>), dragging the execution position
18117
is not possible. Set the execution position explicitly instead.</p>
18119
<li><a name="fn-25"></a>
18120
<p>Perl does not allow
18121
changing the current stack frame.</p>
18123
<li><a name="fn-26"></a>
18124
<p>Currently, threads are supported in <small>GDB</small> and <small>JDB</small> only.</p>
18126
<li><a name="fn-27"></a>
18128
requires that the full array size is known to the debugger.</p>
18130
<li><a name="fn-28"></a>
18131
<p><small>JDB</small> 1.1 does not support changing variable values.</p>
18133
<li><a name="fn-29"></a>
18134
<p>The string <code>//</code>; can
18135
be changed via the <code>labelDelimiter</code> resource. See <a href="#Customizing%20Buttons">Customizing Buttons</a>, for details.</p>
18137
<li><a name="fn-30"></a>
18138
<p>The machine code window is available with <small>GDB</small> and
18139
some <small>DBX</small> variants only.</p>
18141
<li><a name="fn-31"></a>
18142
<p>The machine code
18143
window is available with <small>GDB</small> and some <small>DBX</small> variants only.</p>
18145
<li><a name="fn-32"></a>
18146
<p>If you use <small>DDD</small> commands
18147
within command definitions, or if you include debugger commands that
18148
resume execution, these commands will be realized transparently as
18149
<dfn>auto-commands</dfn>--that is, they won't be executed directly by the
18150
inferior debugger, but result in a command string being sent to
18151
<small>DDD</small>. This command string is then interpreted by <small>DDD</small> and
18152
sent back to the inferior debugger, possibly prefixed by some other
18153
commands such that <small>DDD</small> can update its state. See <a href="#Commands%20with%20Other%20Debuggers">Commands with Other Debuggers</a>, for a discussion.</p>
18155
<li><a name="fn-33"></a>
18156
<p>Since the inferior
18157
debugger is invoked through a virtual <small>TTY</small>, standard error is
18158
normally redirected to standard output, so <small>DDD</small> never receives
18159
standard error from the inferior debugger.</p>
18161
<li><a name="fn-34"></a>
18163
was contributed by Gary Cliff from Computing Devices Canada
18164
Ltd., <a href="mailto:gary.cliff@cdott.com">gary.cliff@cdott.com</a>.</p>