home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 1999 mARCH
/
PCWK3A99.iso
/
Linux
/
DDD331
/
DDD-3_1_.000
/
DDD-3_1_
/
ddd-3.1.1
/
ddd
/
ddd.man.txt
< prev
next >
Wrap
Text File
|
1998-12-06
|
328KB
|
7,393 lines
ddd(1) ddd(1)
NNAAMMEE
ddd, xddd - the data display debugger
SSYYNNOOPPSSIISS
dddddd [----ggddbb] [----ddbbxx] [----xxddbb] [----jjddbb] [----ppyyddbb] [----ppeerrll]
[----ddeebbuuggggeerr _n_a_m_e] [----[rr]hhoosstt [_u_s_e_r_n_a_m_e@@]_h_o_s_t_n_a_m_e]]
[----hheellpp] [----ttrraaccee] [----vveerrssiioonn] [----ccoonnffiigguurraattiioonn]
[_o_p_t_i_o_n_s_._._.] [_p_r_o_g_r_a_m [_c_o_r_e | _p_r_o_c_e_s_s_-_i_d]]
but usually just
dddddd _p_r_o_g_r_a_m
DDEESSCCRRIIPPTTIIOONN
The purpose of a debugger such as DDD is to allow you to
see what is going on "inside" another program while it
executes--or what another program was doing at the moment
it crashed.
DDD can do four main kinds of things (plus other things in
support of these) to help you catch bugs in the act:
+o Start your program, specifying anything that might
affect its behavior.
+o Make your program stop on specified conditions.
+o Examine what has happened, when your program has
stopped.
+o Change things in your program, so you can experiment
with correcting the effects of one bug and go on to
learn about another.
"Classical" UNIX debuggers such as the GNU debugger (GDB)
provide a command-line interface and a multitude of com-
mands for these and other debugging purposes. DDD is a
comfortable _g_r_a_p_h_i_c_a_l _u_s_e_r _i_n_t_e_r_f_a_c_e around an inferior
GDB, DBX, XDB, JDB, Python debugger, or Perl debugger.
IINNVVOOKKIINNGG DDDDDD
You can run DDD with no arguments or options. However,
the most usual way to start DDD is with one argument or
two, specifying an executable program as the argument:
dddddd pprrooggrraamm
You can also start with both an executable program and a
core file specified:
dddddd pprrooggrraamm ccoorree
You can, instead, specify a process ID as a second
DDD 3.1.1 1998-12-06 1
ddd(1) ddd(1)
argument, if you want to debug a running process:
dddddd pprrooggrraamm 11223344
would attach DDD to process 11223344 (unless you also have a
file named `11223344'; DDD does check for a core file first).
By default, DDD determines the inferior debugger automati-
cally. Use
dddddd ----ggddbb _p_r_o_g_r_a_m
or
dddddd ----ddbbxx _p_r_o_g_r_a_m
or
dddddd ----xxddbb _p_r_o_g_r_a_m
or
dddddd ----jjddbb _c_l_a_s_s
or
dddddd ----ppyyddbb _m_o_d_u_l_e
or
dddddd ----ppeerrll _p_r_o_g_r_a_m_f_i_l_e
to run GDB, DBX, XDB, JDB, PYDB or Perl as inferior debug-
ger.
To learn more about DDD options, run
dddddd ----hheellpp
to get a list of frequently used options, or see the
`OOPPTTIIOONNSS' section, below.
TTHHEE DDDDDD WWIINNDDOOWWSS
TThhee DDDDDD MMaaiinn WWiinnddoowwss
DDD is composed of three main windows:
+o The _D_a_t_a _W_i_n_d_o_w shows the current data of the debugged
program.
+o The _S_o_u_r_c_e _W_i_n_d_o_w shows the current source code of the
debugged program.
+o The _D_e_b_u_g_g_e_r _C_o_n_s_o_l_e accepts debugger commands and shows
debugger messages.
DDD 3.1.1 1998-12-06 2
ddd(1) ddd(1)
By default, DDD places these main windows stacked into one
single top-level window, but DDD can also be configured to
treat each one separately.
Besides these main windows, there are some other optional
windows:
+o The _C_o_m_m_a_n_d _T_o_o_l offers buttons for frequently used com-
mands. It is usually placed on the source window.
+o The _M_a_c_h_i_n_e _C_o_d_e _W_i_n_d_o_w shows the current machine code.
It is usually placed beneath the current source.
+o The _E_x_e_c_u_t_i_o_n _W_i_n_d_o_w shows the input and output of the
debugged program.
DDD also has several temporary _d_i_a_l_o_g_s for showing and
entering additional information.
UUssiinngg tthhee CCoommmmaanndd TTooooll
The command tool is a small window containing frequently
used DDD commands. It can be moved around on top of the
DDD windows, but it can also be placed besides them.
Whenever you save DDD state, DDD also saves the distance
between command tool and source window, such that you can
select your own individual command tool placement. To
move the command tool to its saved position, use
`VViieeww-->>CCoommmmaanndd TTooooll'.
By default, the command tool _s_t_i_c_k_s to the DDD source win-
dow: Whenever you move the DDD source window, the command
tool follows such that the distance between source window
and command tool remains the same. By default, the com-
mand tool is also _a_u_t_o_-_r_a_i_s_e_d, such that it stays on top
of other DDD windows.
The command tool can be configured to appear as a command
tool bar above the source window; see
`EEddiitt-->>PPrreeffeerreenncceess-->>SSoouurrccee-->>TTooooll BBuuttttoonnss LLooccaattiioonn' for
details.
UUssiinngg tthhee TTooooll BBaarr
Some DDD commands require an _a_r_g_u_m_e_n_t. This argument is
specified in the _a_r_g_u_m_e_n_t _f_i_e_l_d, labeled `(())::'. Basi-
cally, there are four ways to set arguments:
+o You can _k_e_y _i_n the argument manually.
+o You can _p_a_s_t_e the current selection into the argument
field (typically using _m_o_u_s_e _b_u_t_t_o_n _2). To clear old
contents beforehand, click on the `(())::' label.
DDD 3.1.1 1998-12-06 3
ddd(1) ddd(1)
+o You can _s_e_l_e_c_t _a_n _i_t_e_m from the source and data windows.
This will automatically copy the item to the argument
field.
+o You can select a _p_r_e_v_i_o_u_s_l_y _u_s_e_d _a_r_g_u_m_e_n_t from the drop-
down menu at the right of the argument field.
Using GDB and Perl, the argument field provides a comple-
tion mechanism. You can enter the first few characters of
an item an press the TTAABB key to complete it. Pressing TTAABB
again shows alternative completions.
After having entered an argument, you can select one of
the buttons on the right. Most of these buttons also have
menus associated with them; this is indicated by a small
arrow in the upper right corner. Pressing and holding
_m_o_u_s_e _b_u_t_t_o_n _1 on such a button will pop up a menu with
further operations.
GGEETTTTIINNGG HHEELLPP
DDD has an extensive on-line help system. Here's how to
get help while working with DDD.
BBuuttttoonn TTiippss
You can get a short help text on most DDD buttons by sim-
ply moving the mouse pointer on it and leave it there.
After a second, a small window (called _b_u_t_t_o_n _t_i_p) pops
up, giving a hint on the button's meaning. The button tip
disappears as soon as you move the mouse pointer to
another item.
TThhee SSttaattuuss LLiinnee
The status line also displays information about the cur-
rently selected item. By clicking on the status line, you
can redisplay the most recent messages.
CCoonntteexxtt--SSeennssiittiivvee HHeellpp
You can get detailed help on any visible DDD item. Just
point on the item you want help and press the `FF11' key.
This pops up a detailed help text.
The DDD dialogs all contain `HHeellpp' buttons that give
detailed information about the dialog.
HHeellpp oonn DDeebbuuggggeerr CCoommmmaannddss
You can get help on debugger commands by entering `hheellpp'
at the debugger prompt.
See `EEnntteerriinngg CCoommmmaannddss', below, for details on entering
commands.
AArree YYoouu SSttuucckk??
If you are stuck, try `HHeellpp-->>WWhhaatt NNooww??' (the `WWhhaatt NNooww'
DDD 3.1.1 1998-12-06 4
ddd(1) ddd(1)
item in the `HHeellpp' menu) or press CCttrrll++FF11. Depending on
the current state, DDD will give you some hints on what
you can do next.
UUnnddooiinngg CCoommmmaannddss
And if, after all, you made a mistake, don't worry.
Almost every DDD command can be undone, using `EEddiitt-->>UUnnddoo'
or the `UUnnddoo' button on the command tool. Likewise,
`EEddiitt-->>RReeddoo' repeats the command most recently undone.
OOPPEENNIINNGG FFIILLEESS
If you did not invoke DDD specifying a program to be
debugged, you can use the `FFiillee' menu to open programs,
core dumps and sources.
To open a program to be debugged, select `FFiillee-->>OOppeenn PPrroo--
ggrraamm'.
In JDB, select `FFiillee-->>OOppeenn CCllaassss' instead. This gives you
a list of available classes to choose from.
To re-open a recently debugged program or class, select
`FFiillee-->>OOppeenn RReecceenntt' and choose a program or class from the
list.
Note: With XDB and some DBX versions, the debugged program
must be specified upon invocation and cannot be changed at
run time.
To open a core dump for the program, select `FFiillee-->>OOppeenn
CCoorree DDuummpp'. Before `OOppeenn CCoorree DDuummpp', you should first use
`FFiillee-->>OOppeenn PPrrooggrraamm' to specify the program that generated
the core dump and to load its symbol table.
To open a source file of the debugged program, select
`FFiillee-->>OOppeenn SSoouurrccee'.
+o Using GDB, this gives you a list of the sources used for
compiling your program.
+o Using other inferior debuggers, this gives you a list of
accessible source files, which may or may not be related
to your program.
LLOOOOKKIINNGG UUPP IITTEEMMSS
As soon as the source of the debugged program is avail-
able, the _s_o_u_r_c_e _w_i_n_d_o_w displays its current source text.
(If a source text cannot be found, use `EEddiitt-->>GGDDBB SSeett--
ttiinnggss' to specify source text directories.)
In the source window, you can lookup and examine function
and variable definitions as well as search for arbitrary
occurrences in the source text.
DDD 3.1.1 1998-12-06 5
ddd(1) ddd(1)
LLooookkiinngg uupp DDeeffiinniittiioonnss
If you wish to lookup a specific function or variable def-
inition whose name is visible in the source text, click
with _m_o_u_s_e _b_u_t_t_o_n _1 on the function or variable name. The
name is copied to the argument field. Alter the name if
desired and click on the `LLooookkuupp (())' button to find its
definition.
As a faster alternative, you can simply press _m_o_u_s_e _b_u_t_t_o_n
_3 on the function name and select the `LLooookkuupp' item from
the source popup menu.
As an even faster alternative, you can also double-click
on a function call (an identifier followed by a `((' char-
acter) to lookup the function definition.
TTeexxttuuaall SSeeaarrcchh
If the item you wish to search is visible in the source
text, click with _m_o_u_s_e _b_u_t_t_o_n _1 on it. The identifier is
copied to the argument field. Click on the `FFiinndd>>>> (())'
button to find following occurrences and on the `FFiinndd<<<<
(())' button to find previous occurrences.
As an alternative, you can enter the item in the argument
field and click on one of the `FFiinndd' buttons.
By default, DDD finds only complete words. To search for
arbitrary substrings, change the value of the
`SSoouurrccee-->>FFiinndd WWoorrddss OOnnllyy' option.
LLooookkiinngg uupp PPrreevviioouuss LLooccaattiioonnss
After looking up a location, use `EEddiitt-->>UUnnddoo' (or the
`UUnnddoo' button on the command tool) to go back to the orig-
inal locations. `EEddiitt-->>RReeddoo' brings you back again to the
location you looked for.
BBRREEAAKKPPOOIINNTTSS
You can make the program stop at certain _b_r_e_a_k_p_o_i_n_t_s and
trace its execution.
SSeettttiinngg BBrreeaakkppooiinnttss bbyy LLooccaattiioonn
If the source line is visible, click with _m_o_u_s_e _b_u_t_t_o_n _1
on the left of the source line and then on the `BBrreeaakk aatt
(())' button.
As a faster alternative, you can simply press _m_o_u_s_e _b_u_t_t_o_n
_3 on the left of the source line and select the `SSeett
BBrreeaakkppooiinntt' item from the line popup menu.
As an even faster alternative, you can simply double-click
on the left of the source line to set a breakpoint.
DDD 3.1.1 1998-12-06 6
ddd(1) ddd(1)
As yet another alternative, you can select `SSoouurrccee-->>EEddiitt
BBrreeaakkppooiinnttss'. Click on the `BBrreeaakk' button and enter the
location.
(If you find this number of alternatives confusing, be
aware that DDD users fall into three categories, which
must all be supported. _N_o_v_i_c_e _u_s_e_r_s explore DDD and may
prefer to use one single mouse button. _A_d_v_a_n_c_e_d _u_s_e_r_s
know how to use shortcuts and prefer popup menus. _E_x_p_e_r_i_-
_e_n_c_e_d _u_s_e_r_s prefer the command line interface.)
Breakpoints are indicated by a plain stop sign, or as
`##_n##', where _n is the breakpoint number. A greyed out
stop sign (or `___n__') indicates a disabled breakpoint. A
stop sign with a question mark (or `??_n??') indicates a con-
ditional breakpoint or a breakpoint with an ignore count
set.
If you set a breakpoint by mistake, use `EEddiitt-->>UUnnddoo' to
delete it again.
Note: We have received reports that some Motif versions
fail to display stop signs correctly. If this happens,
try writing in your `$$HHOOMMEE//..dddddd//iinniitt' file:
DDdddd**ccaacchheeGGllyypphhIImmaaggeess:: ooffff
and restart DDD. See also the `ccaacchheeGGllyypphhIImmaaggeess' resource
in the `RREESSOOUURRCCEESS' section, below.
SSeettttiinngg BBrreeaakkppooiinnttss bbyy NNaammee
If the function name is visible, click with _m_o_u_s_e _b_u_t_t_o_n _1
on the function name. The function name is copied to the
argument field. Click on the `BBrreeaakk aatt (())' button to set
a breakpoint there.
As a shorter alternative, you can simply press _m_o_u_s_e _b_u_t_-
_t_o_n _3 on the function name and select the `bbrreeaakk' item
from the popup menu.
As yet another alternative, you can click on `NNeeww' from
the Breakpoint editor (invoked through `SSoouurrccee-->>EEddiitt
BBrreeaakkppooiinnttss') and enter the function name.
SSeettttiinngg RReeggeexxpp BBrreeaakkppooiinnttss
Using GDB, you can also set a breakpoint on all functions
that match a given string. `BBrreeaakk aatt (())-->>SSeett BBrreeaakkppooiinnttss
aatt RReeggeexxpp (())' sets a breakpoint on all functions whose
name matches the _r_e_g_u_l_a_r _e_x_p_r_e_s_s_i_o_n given in `(())'. Here
are some examples:
+o To set a breakpoint on every function that starts with
`XXmm', set `(())' to `^^XXmm'.
DDD 3.1.1 1998-12-06 7
ddd(1) ddd(1)
+o To set a breakpoint on every member of class `DDaattee', set
`(())' to `^^DDaattee::::'.
+o To set a breakpoint on every function whose name con-
tains `__ffuunn', set `(())' to `__ffuunn'.
+o To set a breakpoint on every function that ends in
`__tteesstt', set `(())' to `__tteesstt$$'.
Once these multiple breakpoints are set, they are treated
just like the breakpoints set with the `BBrreeaakk aatt (())' but-
ton. You can delete them, disable them, or make them con-
ditional the same way as any other breakpoint. Use
`SSoouurrccee-->>EEddiitt BBrreeaakkppooiinnttss' to view and edit the list of
breakpoints.
DDiissaabblliinngg BBrreeaakkppooiinnttss
To temporarily disable a breakpoint, press _m_o_u_s_e _b_u_t_t_o_n _3
on the breakpoint symbol and select the `DDiissaabbllee BBrreeaakk--
ppooiinntt' item from the breakpoint popup menu. To enable it
again, select `EEnnaabbllee BBrreeaakkppooiinntt'.
As an alternative, you can select the breakpoint and click
on `DDiissaabbllee' or `EEnnaabbllee' in the Breakpoint editor (invoked
through `SSoouurrccee-->>EEddiitt BBrreeaakkppooiinnttss'.
Disabled breakpoints are indicated by a grey stop sign, or
`___n__', where _n is the breakpoint number.
The `DDiissaabbllee BBrreeaakkppooiinntt' item is also accessible via the
`CClleeaarr aatt (())' button. Just press and hold _m_o_u_s_e _b_u_t_t_o_n _1
on the button to get a popup menu.
Note: JDB does not support breakpoint disabling.
TTeemmppoorraarryy BBrreeaakkppooiinnttss
A _t_e_m_p_o_r_a_r_y _b_r_e_a_k_p_o_i_n_t is immediately deleted as soon as
it is reached. To set a temporary breakpoint, press _m_o_u_s_e
_b_u_t_t_o_n _3 on the left of the source line and select the
`SSeett TTeemmppoorraarryy BBrreeaakkppooiinntt' item from the popup menu.
As a faster alternative, you can simply double-click on
the left of the source line while holding CCttrrll.
Temporary breakpoints are convenient to make the program
continue up to a specific location: just set the temporary
breakpoint at this location and continue execution.
The `CCoonnttiinnuuee UUnnttiill HHeerree' item from the popup menu sets a
temporary breakpoint on the left of the source line and
immediately continues execution. Execution stops when the
temporary breakpoint is reached.
DDD 3.1.1 1998-12-06 8
ddd(1) ddd(1)
The `SSeett TTeemmppoorraarryy BBrreeaakkppooiinntt' and `CCoonnttiinnuuee UUnnttiill HHeerree'
items are also accessible via the `BBrreeaakk aatt (())' button.
Just press and hold _m_o_u_s_e _b_u_t_t_o_n _1 on the button to get a
popup menu.
Note: JDB does not support temporary breakpoints.
DDeelleettiinngg BBrreeaakkppooiinnttss
If the breakpoint is visible, click with _m_o_u_s_e _b_u_t_t_o_n _1 on
the breakpoint. The breakpoint location is copied to the
argument field. Click on the `CClleeaarr aatt (())' button to
delete all breakpoints there.
If the function name is visible, click with _m_o_u_s_e _b_u_t_t_o_n _1
on the function name. The function name is copied to the
argument field. Click on the `CClleeaarr aatt (())' button to set
a breakpoint there.
As a faster alternative, you can simply press _m_o_u_s_e _b_u_t_t_o_n
_3 on the breakpoint and select the `DDeelleettee BBrreeaakkppooiinntt'
item from the popup menu.
As yet another alternative, you can select the breakpoint
and click on `DDeelleettee' in the Breakpoint editor (invoked
through `SSoouurrccee-->>EEddiitt BBrreeaakkppooiinnttss').
As an even faster alternative, you can simply double-click
on the breakpoint while holding CCttrrll.
EEddiittiinngg BBrreeaakkppooiinntt PPrrooppeerrttiieess
You can change all properties of a breakpoint by pressing
_m_o_u_s_e _b_u_t_t_o_n _3 on the breakpoint symbol and select `PPrroopp--
eerrttiieess' from the breakpoint popup menu. This will pop up
a dialog showing the current properties of the selected
breakpoint.
As an even faster alternative, you can simply double-click
on the breakpoint.
+o Click on `LLooookkuupp' to move the cursor to the breakpoint's
location.
+o Click on `EEnnaabbllee' to enable the breakpoint.
+o Click on `DDiissaabbllee' to disable the breakpoint.
+o Click on `TTeemmpp' to make the breakpoint temporary. Note:
GDB has no way to make a temporary breakpoint non-
temporary again.
+o Click on `DDeelleettee' to delete the breakpoint.
DDD 3.1.1 1998-12-06 9
ddd(1) ddd(1)
BBrreeaakkppooiinntt CCoonnddiittiioonnss
In the field `CCoonnddiittiioonn' of the `BBrreeaakkppooiinntt PPrrooppeerrttiieess'
panel, you can specify a _b_r_e_a_k_p_o_i_n_t _c_o_n_d_i_t_i_o_n. If a
breakpoint condition is set, the breakpoint stops the pro-
gram only if the associated condition is met--that is, if
the condition expression evaluates to a non-zero value.
Note: JDB does not support breakpoint conditions.
BBrreeaakkppooiinntt IIggnnoorree CCoouunnttss
In the field `IIggnnoorree CCoouunntt' of the `BBrreeaakkppooiinntt PPrrooppeerrttiieess'
panel, you can specify a _b_r_e_a_k_p_o_i_n_t _i_g_n_o_r_e _c_o_u_n_t. If the
ignore count is set to some value _N, the next _N crossings
of the breakpoint will be ignored: Each crossing of the
breakpoint decrements the ignore count; the program stops
only if the ignore count is zero.
Note: JDB, Perl and some DBX variants do not support
breakpoint ignore counts.
BBrreeaakkppooiinntt CCoommmmaannddss
Note: Breakpoint commands are currently available on GDB
only.
Using the `CCoommmmaannddss' buttons of the `BBrreeaakkppooiinntt PPrrooppeerr--
ttiieess' panel, you can record and edit commands to be exe-
cuted when the breakpoint is hit.
To record a command sequence, follow these steps:
+o Click on `RReeccoorrdd' to begin the recording of the break-
point commands.
+o Now interact with DDD. While recording, DDD does not
execute commands, but simply records them to be executed
when the breakpoint is hit. The recorded debugger com-
mands are shown in the debugger console.
+o To stop the recording, click on `EEnndd' or enter `eenndd' at
the GDB prompt. To _c_a_n_c_e_l the recording, click on
`IInntteerrrruupptt' or press EESSCC.
+o Click on `EEddiitt >>>>' to edit the recorded commands. When
done with editing, click on `EEddiitt <<<<' to close the com-
mands editor.
MMoovviinngg aanndd CCooppyyiinngg BBrreeaakkppooiinnttss
To move a breakpoint to a different location, press _m_o_u_s_e
_b_u_t_t_o_n _1 on the stop sign and drag it to the desired loca-
tion. This is equivalent to deleting the breakpoint at
the old location and setting a breakpoint at the new loca-
tion. The new breakpoint inherits all properties of the
old breakpoint, except the breakpoint number.
DDD 3.1.1 1998-12-06 10
ddd(1) ddd(1)
To copy a breakpoint to a new location, press the SShhiifftt
key while dragging.
Note: Dragging breakpoints is not possible when glyphs are
disabled. Delete and set breakpoints instead.
LLooookkiinngg uupp BBrreeaakkppooiinnttss
If you wish to lookup a specific breakpoint, select
`SSoouurrccee-->>EEddiitt BBrreeaakkppooiinnttss-->>LLooookkuupp'. After selecting a
breakpoint from the list and clicking the `LLooookkuupp' button,
the breakpoint location is displayed.
As an alternative, you can enter `##_n' in the argument
field, where _n is the breakpoint number and click on the
`LLooookkuupp (())' button to find its definition.
EEddiittiinngg aallll BBrreeaakkppooiinnttss
To view and edit all breakpoints at once, select
`SSoouurrccee-->>EEddiitt BBrreeaakkppooiinnttss'. This will popup the _B_r_e_a_k_-
_p_o_i_n_t _E_d_i_t_o_r which displays the state of all breakpoints.
In the breakpoint editor, you can select individual break-
points by clicking on them. Pressing CCttrrll while clicking
toggles the selection. To edit the properties of all
selected breakpoints, click on `PPrrooppss'.
MMoorree BBrreeaakkppooiinntt FFeeaattuurreess
Using GDB, a few more commands related to breakpoints can
be invoked through the debugger console:
hhbbrreeaakk _p_o_s_i_t_i_o_n
Sets a hardware-assisted breakpoint at _p_o_s_i_t_i_o_n.
This command requires hardware support and some
target hardware may not have this support. The
main purpose of this is EPROM/ROM code debug-
ging, so you can set a breakpoint at an instruc-
tion without changing the instruction.
tthhbbrreeaakk _p_o_s
Set a temporary hardware-assisted breakpoint at
_p_o_s.
See the GDB documentation for details on these commands.
WWAATTCCHHPPOOIINNTTSS
You can make the program stop as soon as some variable
value changes, or when some variable is read or written.
This is called `setting a _w_a_t_c_h_p_o_i_n_t on a variable'.
Watchpoints have much in common with breakpoints: in par-
ticular, you can enable and disable them. You can also
set conditions, ignore counts, and commands to be executed
when a watched variable changes its value.
DDD 3.1.1 1998-12-06 11
ddd(1) ddd(1)
Please note: on architectures without special watchpoint
support, watchpoints currently make the program execute
two orders of magnitude more slowly. This is so because
the inferior debugger must interrupt the program after
each machine instruction in order to examine whether the
watched value has changed. However, this delay can be
well worth it to catch errors when you have no clue what
part of your program is the culprit.
Note: Watchpoints are available in GDB and some DBX vari-
ants only. In XDB, a similar feature is available via XDB
_a_s_s_e_r_t_i_o_n_s; see the XDB documentation for details.
SSeettttiinngg WWaattcchhppooiinnttss
If the variable name is visible, click with _m_o_u_s_e _b_u_t_t_o_n _1
on the variable name. The variable name is copied to the
argument field. Otherwise, enter the variable name in the
argument field. Click on the `WWaattcchh (())' button to set a
watchpoint there.
Using GDB, you can set different types of watchpoints.
Click and hold _m_o_u_s_e _b_u_t_t_o_n _1 on the `WWaattcchh (())' button to
get a menu.
EEddiittiinngg WWaattcchhppooiinntt PPrrooppeerrttiieess
To change the properties of a watchpoint, enter the name
of the watched variable in the argument field. Click and
hold _m_o_u_s_e _b_u_t_t_o_n _1 on the `WWaattcchh (())' button and select
`WWaattcchhppooiinntt PPrrooppeerrttiieess'.
The WWaattcchhppooiinntt PPrrooppeerrttiieess panel has the same functionality
as the BBrreeaakkppooiinntt PPrrooppeerrttiieess panel; see `EEddiittiinngg BBrreeaakk--
ppooiinntt PPrrooppeerrttiieess', above, for details. As an additional
feature, you can click on `PPrriinntt (())' to see the current
value of a watched variable.
EEddiittiinngg aallll WWaattcchhppooiinnttss
To view and edit all watchpoints at once, select
`DDaattaa-->>EEddiitt WWaattcchhppooiinnttss'. This will popup the _W_a_t_c_h_p_o_i_n_t
_E_d_i_t_o_r which displays the state of all watchpoints.
The _W_a_t_c_h_p_o_i_n_t _E_d_i_t_o_r has the same functionality as the
_B_r_e_a_k_p_o_i_n_t _E_d_i_t_o_r; see `EEddiittiinngg AAllll BBrreeaakkppooiinnttss', above,
for details. As an additional feature, you can click on
`PPrriinntt (())' to see the current value of a watched variable.
DDeelleettiinngg WWaattcchhppooiinnttss
To delete a watchpoint, enter the name of the watched
variable in the argument field and click the `UUnnwwaattcchh (())'
button.
RRUUNNNNIINNGG TTHHEE PPRROOGGRRAAMM
SSttaarrttiinngg PPrrooggrraamm EExxeeccuuttiioonn
To start execution of the debugged program, select
DDD 3.1.1 1998-12-06 12
ddd(1) ddd(1)
`PPrrooggrraamm-->>RRuunn'. You will then be prompted for the argu-
ments to pass to your program. You can either select from
a list of previously used arguments or enter own arguments
in the text field. Afterwards, press the `RRuunn' button to
start execution with the selected arguments.
To run your program again, with the same arguments, select
`PPrrooggrraamm-->>RRuunn AAggaaiinn' or press the `RRuunn' button on the com-
mand tool. You may also enter `rruunn', followed by argu-
ments at the debugger prompt instead.
UUssiinngg tthhee EExxeeccuuttiioonn WWiinnddooww
By default, input and output of your program go to the
debugger console. As an alternative, DDD can also invoke
an _e_x_e_c_u_t_i_o_n _w_i_n_d_o_w, where the program terminal input and
output is shown. To activate the execution window, select
`PPrrooggrraamm-->>RRuunn iinn EExxeeccuuttiioonn WWiinnddooww'.
While the execution window is active, DDD invokes your
program such that its standard input, output, and error
streams are redirected to the execution window. Note that
the device `//ddeevv//ttttyy' still refers to the debugger con-
sole, _n_o_t the execution window.
You can override the DDD stream redirection by giving
alternate redirection operations as arguments. For
instance, to have your program read from a file, but to
write to the execution window, invoke your program with `<<
_f_i_l_e' as argument. Likewise, to redirect the standard
error output to the debugger console, use `22>> //ddeevv//ttttyy'
(assuming the inferior debugger and/or your UNIX shell
support standard error redirection).
The execution window is not available in JDB and Perl.
AAttttaacchhiinngg ttoo aa RRuunnnniinngg PPrroocceessss
If the debugged program is already running in some pro-
cess, you can _a_t_t_a_c_h to this process (instead of starting
a new one with `RRuunn'). Select `FFiillee-->>AAttttaacchh ttoo PPrroocceessss'
to choose from a list of processes. Afterwards, press the
`AAttttaacchh' button to attach to the specified process.
The first thing DDD does after arranging to debug the
specified process is to stop it. You can examine and mod-
ify an attached process with all the DDD commands that are
ordinarily available when you start processes with `RRuunn'.
You can insert breakpoints; you can step and continue; you
can modify storage. If you would rather the process con-
tinue running, you may use `CCoonnttiinnuuee' after attaching DDD
to the process.
When using `AAttttaacchh ttoo PPrroocceessss', you should first use `OOppeenn
PPrrooggrraamm' to specify the program running in the process and
DDD 3.1.1 1998-12-06 13
ddd(1) ddd(1)
load its symbol table.
When you have finished debugging the attached process, you
can use the `FFiillee-->>DDeettaacchh PPrroocceessss' to release it from DDD
control. Detaching the process continues its execution.
After `DDeettaacchh PPrroocceessss', that process and DDD become com-
pletely independent once more, and you are ready to attach
another process or start one with `RRuunn'.
You can customize the list of processes shown by defining
an alternate command to list processes. See
`EEddiitt-->>PPrreeffeerreenncceess-->>HHeellppeerrss-->>LLiisstt PPrroocceesssseess'.
Note: JDB, PYDB, and Perl do not support attaching the
debugger to running processes.
SSttooppppiinngg tthhee PPrrooggrraamm
The program stops as soon as a breakpoint is reached. The
current execution position is highlighted by an arrow.
You can interrupt a running program any time by clicking
the `IInntteerrrruupptt' button or typing EESSCC in a DDD window.
RReessuummiinngg EExxeeccuuttiioonn
To resume execution, at the address where your program
last stopped, click on the `CCoonnttiinnuuee` button. Any break-
points set at that address are bypassed.
To execute just one source line, click on the `SStteepp' but-
ton. The program is executed until control reaches a dif-
ferent source line, which may be in a different function.
To continue to the next line in the current function,
click on the `NNeexxtt' button. This is similar to `SStteepp',
but any function calls appearing within the line of code
are executed without stopping.
To continue until a greater line in the current function
is reached, click on the `UUnnttiill' button. This is useful
to avoid single stepping through a loop more than once.
To continue running until the current function returns,
use the `FFiinniisshh' button. The returned value (if any) is
printed.
To continue running until a line after the current source
line is reached, use the `CCoonnttiinnuuee UUnnttiill HHeerree' facility
from the line popup menu. See the `TTeemmppoorraarryy BBrreeaakkppooiinnttss'
section, above, for a discussion.
AAlltteerriinngg tthhee EExxeeccuuttiioonn PPoossiittiioonn
To resume execution at a different location, press _m_o_u_s_e
_b_u_t_t_o_n _1 on the arrow and drag it to a different location.
DDD 3.1.1 1998-12-06 14
ddd(1) ddd(1)
The most common occasion to use this feature is to back
up--perhaps with more breakpoints set-over a portion of a
program that has already executed, in order to examine its
execution in more detail.
Moving the execution position does not change the current
stack frame, or the stack pointer, or the contents of any
memory location or any register other than the program
counter.
Some inferior debuggers (notably GDB) allow you to set the
new execution position into a different function from the
one currently executing. This may lead to bizarre results
if the two functions expect different patterns of argu-
ments or of local variables. For this reason, moving the
execution position requests confirmation if the specified
line is not in the function currently executing.
After moving the execution position, click on the `CCoonn--
ttiinnuuee' button to resume execution.
Note: Dragging the execution position is not possible when
glyphs are disabled. Use `SSeett EExxeeccuuttiioonn PPoossiittiioonn' from
the breakpoint popup menu instead to set the execution
position to the current location. This item is also
accessible by pressing and holding the `BBrreeaakk aatt (())/CClleeaarr
aatt (())' button.
Note: JDB does not support altering the execution posi-
tion.
EExxaammiinniinngg tthhee SSttaacckk
When your program has stopped, the first thing you need to
know is where it stopped and how it got there.
DDD provides a _b_a_c_k_t_r_a_c_e _w_i_n_d_o_w showing a summary of how
your program got where it is. To enable the backtrace
window, select `SSttaattuuss-->>BBaacckkttrraaccee'.
The `UUpp' button selects the function that called the cur-
rent one.
The `DDoowwnn' button selects the function that was called by
the current one.
You can also directly type the `uupp' and `ddoowwnn' commands at
the debugger prompt. Typing CCttrrll++UUpp and CCttrrll++DDoowwnn,
respectively, will also move you through the stack.
`UUpp' and `DDoowwnn' actions can be undone via `EEddiitt-->>UUnnddoo'.
DDD 3.1.1 1998-12-06 15
ddd(1) ddd(1)
""UUnnddooiinngg"" PPrrooggrraamm EExxeeccuuttiioonn
If you take a look at the `EEddiitt-->>UUnnddoo' menu item after an
execution command, you'll find that DDD offers you to undo
execution commands just as other commands. Does this mean
that DDD allows you to go backwards in time, undoing pro-
gram execution as well as undoing any side-effects of your
program?
Sorry--we must disappoint you. DDD cannot undo what your
program did. (After a little bit of thought, you'll find
that this would be impossible in general.) However, DDD
can do something different: it can show _p_r_e_v_i_o_u_s_l_y
_r_e_c_o_r_d_e_d _s_t_a_t_e_s of your program.
After "undoing" an execution command (via `EEddiitt-->>UUnnddoo', or
the `UUnnddoo' button), the execution position moves back to
the earlier position and displayed variables take their
earlier values. Your program state is in fact unchanged,
but DDD gives you a _v_i_e_w on the earlier state as recorded
by DDD.
In this so-called _h_i_s_t_o_r_i_c _m_o_d_e, most normal DDD commands
that would query further information from the program are
disabled, since the debugger cannot be queried for the
earlier state. However, you can examine the current exe-
cution position, or the displayed variables. Using `UUnnddoo'
and `RReeddoo', you can move back and forward in time to exam-
ine how your program got into the present state.
To let you know that you are operating in historic mode,
the execution arrow gets a dashed-line appearance (indi-
cating a past position); variable displays also come with
dashed lines. Furthermore, the status line informs you
that you are seeing an earlier program state.
Here's how historic mode works: each time your program
stops, DDD collects the current execution position and the
values of displayed variables. Backtrace, thread, and
register information is also collected if the correspond-
ing dialogs are open. When "undoing" an execution com-
mand, DDD updates its view from this collected state
instead of querying the program.
If you want to collect this information without interrupt-
ing your program--within a loop, for instance--you can
place a breakpoint with an associated `ccoonntt' command; see
`BBrreeaakkppooiinntt CCoommmmaannddss', above, for details. When the
breakpoint is hit, DDD will stop, collect the data, and
execute the `ccoonntt' command, resuming execution. Using a
later `UUnnddoo', you can step back and look at every single
loop iteration.
To leave historic mode, you can use `RReeddoo' until you are
back in the current program state. However, any DDD
DDD 3.1.1 1998-12-06 16
ddd(1) ddd(1)
command that refers to program state will also leave his-
toric mode immediately by applying to the current program
state instead. For instance, `UUpp' leaves historic mode
immediately and selects an alternate frame in the restored
current program state.
If you want to see the history of a specific variable, as
recorded during program stops, you can enter the DDD com-
mand
ggrraapphh hhiissttoorryy _n_a_m_e
This returns a list of all previously recorded values of
the variable _n_a_m_e, using array syntax. Note that _n_a_m_e
must have been displayed at earlier program stops in order
to record values.
EExxaammiinniinngg TThhrreeaaddss
Note: Thread support is available with GDB and JDB only.
In some operating systems, a single program may have more
than one _t_h_r_e_a_d of execution. The precise semantics of
threads differ from one operating system to another, but
in general the threads of a single program are akin to
multiple processes--except that they share one address
space (that is, they can all examine and modify the same
variables). On the other hand, each thread has its own
registers and execution stack, and perhaps private memory.
For debugging purposes, DDD lets you display the list of
threads currently active in your program and lets you
select the _c_u_r_r_e_n_t _t_h_r_e_a_d--the thread which is the focus
of debugging. DDD shows all program information from the
perspective of the current thread.
To view all currently active threads in your program,
select `SSttaattuuss-->>TThhrreeaaddss'. The current thread is high-
lighted. Select any thread to make it the current thread.
Using JDB, additional functionality is available:
+o Select a _t_h_r_e_a_d _g_r_o_u_p to switch between viewing all
threads and the threads of the selected thread group;
+o Click on `SSuussppeenndd' to suspend execution of the selected
threads;
+o Click on `RReessuummee' to resume execution of the selected
threads.
For more information on threads, see the JDB and GDB docu-
mentation.
DDD 3.1.1 1998-12-06 17
ddd(1) ddd(1)
HHaannddlliinngg SSiiggnnaallss
Note: Signal support is available with GDB only.
A signal is an asynchronous event that can happen in a
program. The operating system defines the possible kinds
of signals, and gives each kind a name and a number. For
example, in Unix SSIIGGIINNTT is the signal a program gets when
you type an interrupt; SSIIGGSSEEGGVV is the signal a program
gets from referencing a place in memory far away from all
the areas in use; SSIIGGAALLRRMM occurs when the alarm clock
timer goes off (which happens only if your program has
requested an alarm).
Some signals, including SSIIGGAALLRRMM, are a normal part of the
functioning of your program. Others, such as SSIIGGSSEEGGVV,
indicate errors; these signals are _f_a_t_a_l (kill your pro-
gram immediately) if the program has not specified in
advance some other way to handle the signal. SSIIGGIINNTT does
not indicate an error in your program, but it is normally
fatal so it can carry out the purpose of the interrupt: to
kill the program.
GDB has the ability to detect any occurrence of a signal
in your program. You can tell GDB in advance what to do
for each kind of signal.
Normally, DDD is set up to ignore non-erroneous signals
like SSIIGGAALLRRMM (so as not to interfere with their role in
the functioning of your program) but to stop your program
immediately whenever an error signal happens. In DDD, you
can change these settings via `SSttaattuuss-->>SSiiggnnaallss'.
`SSttaattuuss-->>SSiiggnnaallss' pops up a panel showing all the kinds of
signals and how GDB has been told to handle each one. The
settings available for each signal are:
SSttoopp If set, GDB should stop your program when this
signal happens. This also implies `PPrriinntt' being
set.
If unset, GDB should not stop your program when
this signal happens. It may still print a mes-
sage telling you that the signal has come in.
PPrriinntt If set, GDB should print a message when this
signal happens.
If unset, GDB should not mention the occurrence
of the signal at all. This also implies `SSttoopp'
being unset.
PPaassss If set, GDB should allow your program to see
this signal; your program can handle the signal,
or else it may terminate if the signal is fatal
and not handled.
If unset, GDB should not allow your program to
DDD 3.1.1 1998-12-06 18
ddd(1) ddd(1)
see this signal.
The entry `AAllll SSiiggnnaallss' is special. Changing a setting
here affects _a_l_l _s_i_g_n_a_l_s _a_t _o_n_c_e--except those used by the
debugger, typically SIGTRAP and SIGINT.
To undo any changes, use `EEddiitt-->>UUnnddoo'. The `RReesseett' button
restores the saved settings.
When a signal stops your program, the signal is not visi-
ble until you continue. Your program sees the signal
then, if `PPaassss' is in effect for the signal in question _a_t
_t_h_a_t _t_i_m_e. In other words, after GDB reports a signal,
you can change the `PPaassss' setting in `SSttaattuuss-->>SSiiggnnaallss' to
control whether your program sees that signal when you
continue.
You can also cause your program to see a signal it nor-
mally would not see, or to give it any signal at any time.
The `SSeenndd' button will resume execution where your program
stopped, but immediately give it the signal shown.
On the other hand, you can also prevent your program from
seeing a signal. For example, if your program stopped due
to some sort of memory reference error, you might store
correct values into the erroneous variables and continue,
hoping to see more execution; but your program would prob-
ably terminate immediately as a result of the fatal signal
once it saw the signal. To prevent this, you can resume
execution using `CCoommmmaannddss-->>CCoonnttiinnuuee WWiitthhoouutt SSiiggnnaall'.
`EEddiitt-->>SSaavvee OOppttiioonnss' does not save changed signal set-
tings, since changed signal settings are normally useful
within specific projects only. Instead, signal settings
are saved with the current session, using `FFiillee-->>SSaavvee SSeess--
ssiioonn AAss'.
EEXXAAMMIINNIINNGG DDAATTAA
DDD provides several means to examine data.
VVaalluuee HHiinnttss
The quickest way to examine variables is to move
the pointer on an occurrence in the source text.
The value is displayed in the source line; after
a second, a popup window shows the variable
value. This is useful for quick examination of
several simple variables.
PPrriinnttiinngg VVaalluueess
If you want to reuse variable values at a later
time, you can print the value in the debugger
console. This allows for displaying and examin-
ing larger data structures.
DDD 3.1.1 1998-12-06 19
ddd(1) ddd(1)
DDiissppllaayyiinngg VVaalluueess
If you want to examine complex data structures,
you can display them graphically in the data
display. Displays remain effective until you
delete them; they are updated each time the pro-
gram stops. This is useful for large dynamic
structures.
PPlloottttiinngg VVaalluueess
If you want to examine arrays of numeric values,
you can plot them graphically in a separate plot
window. The plot is updated each time the pro-
gram stops. This is useful for large numeric
arrays.
MMeemmoorryy DDuummppss
This feature, available using GDB only, allows
you to dump memory contents in any of several
formats, independently of your program's data
types. This is described under `MMAACCHHIINNEE--LLEEVVEELL
DDEEBBUUGGGGIINNGG', below.
SShhoowwiinngg SSiimmppllee VVaalluueess uussiinngg VVaalluuee HHiinnttss
To display the value of a simple variable, move the mouse
pointer on its name. After a second, a small window
(called _v_a_l_u_e _t_i_p) pops up showing the value of the vari-
able pointed at. The window disappears as soon as you
move the mouse pointer away from the variable. The value
is also shown in the status line.
PPrriinnttiinngg SSiimmppllee VVaalluueess iinn tthhee DDeebbuuggggeerr CCoonnssoollee
The variable value can also be printed in the debugger
console, making it available for further operations. To
print a variable value, select the desired variable by
clicking _m_o_u_s_e _b_u_t_t_o_n _1 on its name. The variable name is
copied to the argument field. By clicking the `PPrriinntt (())'
button, the value is printed in the debugger console.
Note that the value is also shown in the status line.
As a shorter alternative, you can simply press _m_o_u_s_e _b_u_t_-
_t_o_n _3 on the variable name and select the `PPrriinntt' item
from the popup menu.
DDiissppllaayyiinngg CCoommpplleexx VVaalluueess iinn tthhee DDaattaa WWiinnddooww
To explore complex data structures, you can use the _g_r_a_p_h_-
_i_c_a_l _d_a_t_a _d_i_s_p_l_a_y in the _d_a_t_a _w_i_n_d_o_w. The data window
holds _d_i_s_p_l_a_y_s showing names and the values of variables.
The display is updated each time the program stops.
To create a new display, select the desired variable by
clicking _m_o_u_s_e _b_u_t_t_o_n _1 on its name. The variable name is
DDD 3.1.1 1998-12-06 20
ddd(1) ddd(1)
copied to the argument field. By clicking the `DDiissppllaayy
(())' button, a new display is created in the data window.
The data window opens automatically as soon as you create
a display.
As a shorter alternative, you can simply press _m_o_u_s_e _b_u_t_-
_t_o_n _3 on the variable name and select the `DDiissppllaayy' item
from the popup menu.
As an even faster alternative, you can also double-click
on the variable name.
As another alternative, you may also enter the expression
to be displayed in the argument field and press the `DDiiss--
ppllaayy (())' button.
Finally, you may also enter
ggrraapphh ddiissppllaayy _e_x_p_r [cclluusstteerreedd] [aatt ((_x_, _y))] [ddeeppeennddeenntt oonn
_d_i_s_p_l_a_y] [[nnooww oorr]wwhheenn iinn _s_c_o_p_e]
at the debugger prompt. The options have the following
meaning:
+o If the suffix `cclluusstteerreedd' is specified, the new data
display is created in a cluster. See `CClluusstteerriinngg DDiiss--
ppllaayyss', below, for a discussion.
+o If the suffix `aatt ((_x_, _y))' is specified, the new data
display is created at the position (_x, _y). Otherwise, a
default position is assigned.
+o If the suffix `ddeeppeennddeenntt oonn _d_i_s_p_l_a_y' is given, an edge
from the display numbered or named _d_i_s_p_l_a_y to the new
display is created. Otherwise, no edge is created.
+o If the suffix `wwhheenn iinn _s_c_o_p_e' is given, display creation
is _d_e_f_e_r_r_e_d until execution reaches the given _s_c_o_p_e (a
function name, as in the backtrace output).
+o If the suffix `nnooww oorr wwhheenn iinn _s_c_o_p_e' is given, DDD
attempts to create the display immediately. If display
creation fails, it is _d_e_f_e_r_r_e_d until execution reaches
the given _s_c_o_p_e (a function name, as in the backtrace
output).
+o If no `wwhheenn iinn' suffix or `nnooww oorr wwhheenn iinn' suffix is
given, the display is created immediately.
If you created a display by mistake, use `EEddiitt-->>UUnnddoo' to
undisplay it.
DDD 3.1.1 1998-12-06 21
ddd(1) ddd(1)
SSeelleeccttiinngg DDiissppllaayyss
Each display in the data window has a _t_i_t_l_e _b_a_r containing
the _d_i_s_p_l_a_y _n_u_m_b_e_r and the displayed expression (the _d_i_s_-
_p_l_a_y _n_a_m_e). Below the title, the _d_i_s_p_l_a_y _v_a_l_u_e is shown.
You can select individual displays by clicking on them
with _m_o_u_s_e _b_u_t_t_o_n _1. The resulting expression is shown in
the _a_r_g_u_m_e_n_t _f_i_e_l_d, below.
You can _e_x_t_e_n_d an existing selection by pressing the SShhiifftt
key while selecting. You can also _t_o_g_g_l_e an existing
selection by pressing the SShhiifftt key while selecting
already selected displays.
Single displays may also be selected by using the arrow
keys.
SSeelleeccttiinngg MMuullttiippllee DDiissppllaayyss
Multiple displays are selected by pressing and holding
_m_o_u_s_e _b_u_t_t_o_n _1 somewhere on the window background. By
moving the pointer while holding the button, a selection
rectangle is shown; all displays fitting in the rectangle
are selected when mouse button 1 is released.
If the SShhiifftt key is pressed while selecting, the existing
selection is _e_x_t_e_n_d_e_d.
By double-clicking on a display title, the display itself
and all connected displays are automatically selected.
SShhoowwiinngg aanndd HHiiddiinngg VVaalluueess
Aggregate values (i.e. records, structs, classes, and
arrays) can be shown _e_x_p_a_n_d_e_d, that is, displaying all
details, or _h_i_d_d_e_n, that is, displayed as `{{......}}'.
To show details about an aggregate, select the aggregate
by clicking _m_o_u_s_e _b_u_t_t_o_n _1 on its name or value and click
on the `SShhooww (())' button. Details are shown for the aggre-
gate itself as well as for all contained sub-aggregates.
To hide details about an aggregate, select the aggregate
by clicking _m_o_u_s_e _b_u_t_t_o_n _1 on its name or value and click
on the `HHiiddee (())' button.
When pressing and holding _m_o_u_s_e _b_u_t_t_o_n _1 on the `SShhooww
(())/HHiiddee (())' button, a menu pops up with even more alterna-
tives:
SShhooww MMoorree (())
Shows details of all aggregates currently hidden,
but not of their sub-aggregates. You can invoke
this item several times in a row to reveal more and
DDD 3.1.1 1998-12-06 22
ddd(1) ddd(1)
more details of the selected aggregate.
SShhooww JJuusstt (())
Shows details of the selected aggregate, but hides
all sub-aggregates.
SShhooww AAllll (())
Shows all details of the selected aggregate and of
its sub-aggregates. This item is equivalent to the
`SShhooww (())' button.
HHiiddee (())
Hide all details of the selected aggregate. This
item is equivalent to the `HHiiddee (())' button.
As a faster alternative, you can also press _m_o_u_s_e _b_u_t_t_o_n _3
on the aggregate and select the appropriate menu item.
As an even faster alternative, you can also double-click
_m_o_u_s_e _b_u_t_t_o_n _1 on a value. If some part of the value is
hidden, more details will be shown; if the entire value is
shown, double-clicking will _h_i_d_e the value instead. This
way, you can double-click on a value until you get the
right amount of details.
If _a_l_l details of a display are hidden, the display is
called _d_i_s_a_b_l_e_d; this is indicated by the string `_(_D_i_s_-
_a_b_l_e_d_)'. Displays can also be disabled or enabled via the
DDD commands
ggrraapphh ddiissaabbllee ddiissppllaayy _d_i_s_p_l_a_y_s_._._.
and
ggrraapphh eennaabbllee ddiissppllaayy _d_i_s_p_l_a_y_s_._._.
at the debugger prompt. _d_i_s_p_l_a_y_s_._._. is either
+o a space-separated list of display numbers to disable or
enable, or
+o a single display name. If you specify a display by
name, all displays with this name will be affected.
Use `EEddiitt-->>UUnnddoo' to undo disabling or enabling displays.
RRoottaattiinngg AArrrraayyss
Arrays can be aligned horizontally or vertically. To
change the alignment of an array, select it and then click
on the `RRoottaattee (())' button.
As a faster alternative, you can also press _m_o_u_s_e _b_u_t_t_o_n _3
on the array and select the `RRoottaattee' menu item.
DDD 3.1.1 1998-12-06 23
ddd(1) ddd(1)
DDiissppllaayyiinngg DDeeppeennddeenntt VVaalluueess
Dependent displays are created from an existing display.
The dependency is indicated by arrows leading from the
originating display to the dependent display.
To create a dependent display, select the originating dis-
play or display part and enter the dependent expression in
the `(())::' argument field. Then click on the `DDiissppllaayy'
button.
Using dependent displays, you can investigate the data
structure of a "tree" for example and lay it out according
to your intuitive image of the "tree" data structure.
By default, DDD does not recognize shared data structures
(i.e. a data object referenced by multiple other data
objects). See `EExxaammiinniinngg SShhaarreedd DDaattaa SSttrruuccttuurreess', below,
for details on how to examine such structures.
DDiissppllaayy SShhoorrttccuuttss
DDD maintains a _s_h_o_r_t_c_u_t _m_e_n_u of frequently used display
expressions. This menu is activated
+o by pressing and holding the `DDiissppllaayy' button, or
+o by pressing _m_o_u_s_e _b_u_t_t_o_n _3 on some display and selecting
`NNeeww DDiissppllaayy', or
+o by pressing SShhiifftt and _m_o_u_s_e _b_u_t_t_o_n _3 on some display.
By default, the shortcut menu contains frequently used
base conversions.
The `OOtthheerr' entry in the shortcut menu lets you create a
new display that _e_x_t_e_n_d_s the shortcut menu. As an exam-
ple, assume you have selected a display named `ddaattee__ppttrr'.
Selecting `DDiissppllaayy-->>OOtthheerr' pops up a dialog that allows
you to enter a new expression to be displayed -- for
instance, you can cast the display `ddaattee__ppttrr' to a new
display `((cchhaarr **))ddaattee__ppttrr'. If the `IInncclluuddee iinn ``NNeeww DDiiss--
ppllaayy' Menu' toggle was activated, the shortcut menu will
then contain a new entry `DDiissppllaayy ((cchhaarr **))(())' that will
cast _a_n_y selected display _d_i_s_p_l_a_y to `((cchhaarr **))_d_i_s_p_l_a_y'.
Such shortcuts can save you a lot of time when examining
complex data structures.
You can edit the contents of the `NNeeww DDiissppllaayy' menu by
selecting its `EEddiitt MMeennuu' item. This pops up the _S_h_o_r_t_c_u_t
_E_d_i_t_o_r containing all shortcut expressions, which you can
edit at leisure. Each line contains the expression for
exactly one menu item. Clicking on `AAppppllyy' re-creates the
`NNeeww DDiissppllaayy' menu from the text. If the text is empty,
the `NNeeww DDiissppllaayy' menu will be empty, too.
DDD 3.1.1 1998-12-06 24
ddd(1) ddd(1)
DDD also allows you to specify individual labels for user-
defined buttons. You can write such a label after the
expression, separated by `////'. This feature is used in
the default contents of the GDB `NNeeww DDiissppllaayy' menu, where
each of the base conversions has a label:
//tt (()) //// CCoonnvveerrtt ttoo BBiinn
//dd (()) //// CCoonnvveerrtt ttoo DDeecc
//xx (()) //// CCoonnvveerrtt ttoo HHeexx
//oo (()) //// CCoonnvveerrtt ttoo OOcctt
Feel free to add other conversions here. DDD supports up
to 20 `NNeeww DDiissppllaayy' menu items.
DDeerreeffeerreenncciinngg PPooiinntteerrss
There are special shortcuts for creating dependent dis-
plays showing the value of a dereferenced pointer. This
allows for rapid examination of pointer-based data struc-
tures.
To dereference a pointer, select the originating pointer
value or name and click on the `DDiissppllaayy **(())' button. A
new display showing the dereferenced pointer value is cre-
ated.
As a faster alternative, you can also press _m_o_u_s_e _b_u_t_t_o_n _3
on the originating pointer value or name and select the
`DDiissppllaayy **' menu item.
As an even faster alternative, you can also double-click
_m_o_u_s_e _b_u_t_t_o_n _1 on the originating pointer value or name.
If you press CCttrrll while double-clicking, the display will
be dereferenced _i_n _p_l_a_c_e--that is, it will be replaced by
the dereferenced display.
The `DDiissppllaayy **(())' function is also accessible by pressing
and holding the `DDiissppllaayy (())' button.
DDiissppllaayyiinngg LLooccaall VVaarriiaabblleess
You can display all local variables at once by choosing
`DDaattaa-->>DDiissppllaayy LLooccaall VVaarriiaabblleess'. When using DBX, XDB,
JDB, or Perl, this displays all local variables, including
the arguments of the current function. When using GDB or
PYDB, function arguments are contained in a separate dis-
play, activated by `DDiissppllaayy AArrgguummeennttss'.
The display showing the local variables can be manipulated
just like any other data display. Individual variables
can be selected and dereferenced.
DDiissppllaayyiinngg PPrrooggrraamm SSttaattuuss
You can create a display from the output of an arbitrary
DDD 3.1.1 1998-12-06 25
ddd(1) ddd(1)
debugger command. By entering
ggrraapphh ddiissppllaayy ``_c_o_m_m_a_n_d``
the output of _c_o_m_m_a_n_d is turned into a _s_t_a_t_u_s _d_i_s_p_l_a_y
updated each time the program stops. For instance,
ggrraapphh ddiissppllaayy ``wwhheerree``
creates a status display named `WWhheerree' that shows the cur-
rent backtrace.
If you are using GDB, DDD provides a panel from which you
can choose useful status displays. Select `DDaattaa-->>MMoorree
SSttaattuuss DDiissppllaayyss' and pick your choice from the list.
Status displays consume time; you should delete them as
soon as you don't need them any more.
DDiissppllaayyiinngg MMuullttiippllee AArrrraayy VVaalluueess
When debugging C or C++ programs, one often has to deal
with pointers to arrays of dynamically determined size.
Both DDD and GDB provide special support for such dynamic
arrays.
To display several successive objects of the same type (a
section of an array, or an array of dynamically determined
size), use the notation [[_F_R_O_M...._T_O]] in display expressions.
_F_R_O_M and _T_O denote the first and last array position to
display. Thus,
ggrraapphh ddiissppllaayy aarrggvv[[00....99]]
creates ten new display nodes for `aarrggvv[[00]]', `aarrggvv[[11]]',
..., `aarrggvv[[99]]'.
Using GDB as inferior debugger, you can use _a_r_t_i_f_i_c_i_a_l
_a_r_r_a_y_s. Typing
ggrraapphh ddiissppllaayy aarrggvv[[00]] @@ 1100
creates a single array display node containing `aarrggvv[[00]]'
up to `aarrggvv[[99]]'. Generally, by using the `@@' operator,
you can specify the number of array elements to be dis-
played.
For more details on artificial arrays, see the GDB docu-
mentation.
RReeppeeaatteedd AArrrraayy VVaalluueess
Using GDB, an array value that is repeated 10 or more
times is displayed only once. The value is shown with a
`<<_Nxx>>' postfix added, where _N is the number of times the
DDD 3.1.1 1998-12-06 26
ddd(1) ddd(1)
value is repeated. Thus, the display `00xx00 <<3300xx>>' stands
for 30 array elements, each with the value 00xx00. This
saves a lot of display space, especially with homogeneous
arrays.
The default GDB threshold for repeated array values is 10.
You can change it via `EEddiitt-->>GGDDBB SSeettttiinnggss-->>TThhrreesshhoolldd ffoorr
rreeppeeaatteedd pprriinntt eelleemmeennttss'. Setting the threshold to 00 will
cause GDB (and DDD) to display each array element individ-
ually. Be sure to refresh the data window via
`DDaattaa-->>RReeffrreesshh DDiissppllaayyss' after a change in GDB settings.
You can also configure DDD to display each array element
individually, regardless of GDB settings; see the
`eexxppaannddRReeppeeaatteeddVVaalluueess' resource for details.
AAlltteerriinngg VVaarriiaabbllee VVaalluueess
Using the `SSeett (())' button or the `SSeett VVaalluuee' menu item in
the data popup menu, you can alter the value of the
selected variable, to resume execution with the changed
value. In a dialog, you can modify the variable value at
will; clicking the `OOKK' or `AAppppllyy' button commits your
change.
If you made a mistake, you can use `EEddiitt-->>UUnnddoo' to re-set
the variable to its previous value.
Note: Altering variable values is not supported in JDB.
RReeffrreesshhiinngg tthhee DDaattaa WWiinnddooww
The data window refreshes itself automatically each time
the program stops. Values that have changed are high-
lighted.
However, there may be situations where you should refresh
the data window explicitly. This is especially the case
whenever you changed debugger settings that could affect
the data format, and want the data window to reflect these
settings.
You can refresh the data window by selecting
`DDaattaa-->>RReeffrreesshh DDiissppllaayyss'.
As an alternative, you can press _m_o_u_s_e _b_u_t_t_o_n _3 on the
background of the data window and select the `RReeffrreesshh DDiiss--
ppllaayy' item.
Typing
ggrraapphh rreeffrreesshh
at the debugger prompt has the same effect.
DDD 3.1.1 1998-12-06 27
ddd(1) ddd(1)
DDeelleettiinngg DDiissppllaayyss
To delete a single display, select it and click on the
`DDeelleettee (())' button. As an alternative, you can also press
_m_o_u_s_e _b_u_t_t_o_n _3 on the display and select the `DDeelleettee DDiiss--
ppllaayy' item.
When a display is deleted, its immediate ancestors and
descendants are automatically selected, so that you can
easily delete entire graphs.
To delete several displays at once, select the `DDeelleettee'
item in the Display Editor (invoked via `DDaattaa-->>EEddiitt DDiiss--
ppllaayyss'). Select any number of display items in the usual
way and delete them by pressing `DDeelleettee'.
As an alternative, you can also type
ggrraapphh uunnddiissppllaayy _d_i_s_p_l_a_y_s_._._.
at the debugger prompt. _d_i_s_p_l_a_y_s_._._. is either
+o a space-separated list of display numbers to delete, or
+o a single display name. If you specify a display by
name, all displays with this name will be deleted.
If you are using stacked windows, deleting the last dis-
play from the data window also automatically closes the
data window. (You can change this via
`EEddiitt-->>PPrreeffeerreenncceess-->>DDaattaa-->>CClloossee ddaattaa wwiinnddooww wwhheenn ddeelleettiinngg
llaasstt ddiissppllaayy'.)
If you deleted a display by mistake, use `EEddiitt-->>UUnnddoo' to
re-create it.
EExxaammiinniinngg SShhaarreedd DDaattaa SSttrruuccttuurreess
By default, DDD does not recognize shared data struc-
tures--that is, a data object referenced by multiple other
data objects. For instance, if two pointers pp11 and pp22
point at the same data object dd, the data displays dd, **pp11,
and **pp22 will be separate, although they denote the same
object.
DDD provides a special mode which makes it detect these
situations. DDD recognizes if two or more data displays
are stored at the same physical address, and if this is
so, merges all these _a_l_i_a_s_e_s into one single data display,
the _o_r_i_g_i_n_a_l _d_a_t_a _d_i_s_p_l_a_y. This mode is called _A_l_i_a_s
_D_e_t_e_c_t_i_o_n; it is enabled via the `DDaattaa-->>DDeetteecctt AAlliiaasseess'.
When alias detection is enabled, DDD inquires the memory
location (the _a_d_d_r_e_s_s) of each data display after each
program step. If two displays have the same address, they
are merged into one. More specifically, only the one
DDD 3.1.1 1998-12-06 28
ddd(1) ddd(1)
which has least recently changed remains (the _o_r_i_g_i_n_a_l
_d_a_t_a _d_i_s_p_l_a_y); all other aliases are _s_u_p_p_r_e_s_s_e_d, i.e. com-
pletely hidden. The edges leading to the aliases are
replaced by edges leading to the original data display.
An edge created by alias detection is somewhat special:
rather than connecting two displays directly, it goes
through an _e_d_g_e _h_i_n_t, describing an arc connecting the two
displays and the edge hint.
Each edge hint is a placeholder for a suppressed alias;
selecting an edge hint is equivalent to selecting the
alias. This way, you can easily delete display aliases by
simply selecting the edge hint and clicking on `UUnnddiissppllaayy
(())'.
To access suppressed display aliases, you can also use the
Display Editor. Suppressed displays are listed in the
Display Editor as _a_l_i_a_s_e_s of the original data display.
Via the Display Editor, you can select, change, and delete
suppressed displays.
Suppressed displays become visible again as soon as
+o alias detection is disabled,
+o their address changes such that they are no more
aliases, or
+o the original data display is deleted, such that the
least recently changed alias becomes the new original
data display.
Please note the following _c_a_v_e_a_t_s with alias detection:
+o Alias detection requires that the current programming
language provides a means to determine the address of an
arbitrary data object. Currently, only C and C++ are
supported.
+o Some inferior debuggers (for instance, SunOS DBX) pro-
duce incorrect output for address expressions. Given a
pointer _p, you may verify the correct function of your
inferior debugger by comparing the values of _p and &&_p
(unless _p actually points to itself). You can also
examine the data display addresses, as shown in the Dis-
play Editor.
+o Alias detection slows down DDD slightly, which is why it
is disabled by default. You may consider to enable it
only at need--for instance, while examining some complex
data structure--and disable it while examining control
flow (i.e., stepping through your program). DDD will
DDD 3.1.1 1998-12-06 29
ddd(1) ddd(1)
automatically restore edges and data displays when
switching modes.
CClluusstteerriinngg DDiissppllaayyss
If you examine several variables at once, having a sepa-
rate display for each of them uses a lot of screen space.
This is why DDD supports _c_l_u_s_t_e_r_s. A cluster merges sev-
eral logical data displays into one physical display, sav-
ing screen space.
There are two ways to create clusters:
+o You can create clusters _m_a_n_u_a_l_l_y. This is done by
selecting the displays to be clustered and choosing
`UUnnddiisspp-->>CClluusstteerr (())'. This creates a new cluster from
all selected displays. If an already existing cluster
is selected, too, the selected displays will be clus-
tered into the selected cluster.
+o You can create a cluster _a_u_t_o_m_a_t_i_c_a_l_l_y for all indepen-
dent data displays, such that all new data displays will
automatically be clustered, too. This is achieved by
enabling `EEddiitt-->>PPrreeffeerreenncceess-->>DDaattaa-->>CClluusstteerr DDaattaa DDiiss--
ppllaayyss'.
Displays in a cluster can be selected and manipulated like
parts of an ordinary display; in particular, you can show
and hide details, or dereference pointers. However, edges
leading to clustered displays can not be shown, and you
must either select one or all clustered displays.
Disabling a cluster is called _u_n_c_l_u_s_t_e_r_i_n_g, and again,
there are two ways of doing it:
+o You can uncluster displays _m_a_n_u_a_l_l_y, by selecting the
cluster and choosing `UUnnddiisspp-->>UUnncclluusstteerr (())'.
+o You can uncluster all current and future displays by
disabling `EEddiitt-->>PPrreeffeerreenncceess-->>DDaattaa-->>CClluusstteerr DDaattaa DDiiss--
ppllaayyss'.
MMoovviinngg DDiissppllaayyss AArroouunndd
From time to time, you may wish to move displays at
another place in the data window. You can move a single
display by pressing and holding _m_o_u_s_e _b_u_t_t_o_n _1 on the dis-
play title. Moving the pointer while holding the button
causes all selected displays to move along with the
pointer.
If the data window becomes too small to hold all displays,
scroll bars are created. If your DDD is set up to use
DDD 3.1.1 1998-12-06 30
ddd(1) ddd(1)
_p_a_n_n_e_r_s instead, a panner is created in the lower right
edge. When the panner is moved around, the window view
follows the position of the panner. See `CCUUSSTTOOMMIIZZIINNGG
DDDDDD', below, for details on how to set up scroll bars or
panners.
For fine-grain movements, selected displays may also be
moved using the arrow keys. Pressing SShhiifftt and an arrow
key moves displays by single pixels. Pressing CCttrrll and
arrow keys moves displays by grid positions.
Edge hints can be selected and moved around like other
displays. If an arc goes through the edge hint, you can
change the shape of the arc by moving the edge hint
around.
AAlliiggnniinngg DDiissppllaayyss
You can align all displays on the nearest grid position by
selecting `DDaattaa-->>AAlliiggnn oonn GGrriidd'. This is useful for keep-
ing edges horizontal or vertical.
You can enforce alignment by selecting
`EEddiitt-->>PPrreeffeerreenncceess-->>DDaattaa-->>AAuuttoo--aalliiggnn ddiissppllaayyss oonn nneeaarreesstt
ggrriidd ppooiinntt'. If this feature is enabled, displays can be
moved on grid positions only.
LLaayyoouuttiinngg tthhee DDiissppllaayy GGrraapphh
You can layout the entire graph as a tree by selecting
`DDaattaa-->>LLaayyoouutt GGrraapphh'.
Layouting the graph may introduce _e_d_g_e _h_i_n_t_s; that is,
edges are no more straight lines, but lead to an edge hint
and from there to their destination. Edge hints can be
moved around like arbitrary displays.
To enable a more compact layout, you can set the
`EEddiitt-->>PPrreeffeerreenncceess-->>DDaattaa-->>CCoommppaacctt llaayyoouutt' option. This
realizes an alternate layout algorithm, where successors
are placed next to their parents. This algorithm is suit-
able for homogeneous data structures only.
You can enforce layout by setting
`EEddiitt-->>PPrreeffeerreenncceess-->>DDaattaa-->> AAuuttoommaattiicc LLaayyoouutt'. If auto-
matic layout is enabled, the graph is layouted after each
change.
RRoottaattiinngg tthhee DDiissppllaayy GGrraapphh
You can rotate the entire graph clockwise by 90 degrees by
selecting `DDaattaa-->>RRoottaattee GGrraapphh'.
If the graph was previously layouted, you may need to lay-
out it again. Subsequent layouts will respect the direc-
tion of the last rotation.
DDD 3.1.1 1998-12-06 31
ddd(1) ddd(1)
PPrriinnttiinngg tthhee DDiissppllaayy GGrraapphh
DDD allows for printing the graph picture on PostScript
printers or into files. This is useful for documenting
program states.
To print the graph on a PostScript printer, select
`FFiillee-->>PPrriinntt GGrraapphh'. Enter the printing command in the
`PPrriinntt CCoommmmaanndd' field. Click on the `OOKK' or the `AAppppllyy'
button to start printing.
As an alternative, you may also print the graph in a file.
Click on the `FFiillee' button and enter the file name in the
`FFiillee NNaammee' field. Click on the `PPrriinntt' button to create
the file.
When the graph is printed in a file, two formats are
available:
+o PPoossttSSccrriipptt--suitable for enclosing the graph in another
document;
+o FFIIGG--suitable for post-processing, using the XFIG
graphic editor, or for conversion into other formats
(among others IBMGL, LATEX, PIC), using the TRANSFIG or
FIG2DEV package.
Please note the following _c_a_v_e_a_t_s related to printing
graphs:
+o If any displays were selected when invoking the `PPrriinntt'
dialog, the option `SSeelleecctteedd OOnnllyy' is set. This makes
DDD print only the selected displays.
+o The `CCoolloorr', `OOrriieennttaattiioonn', and `PPaappeerr SSiizzee' options are
meaningful for PostScript only.
PPLLOOTTTTIINNGG DDAATTAA
If you have huge amounts of numerical data to examine, a
picture often says more than a thousand numbers. There-
fore, DDD allows you to draw numerical values in nice 2-D
and 3-D plots.
PPlloottttiinngg AArrrraayyss
Basically, DDD can plot two types of numerical values:
+o One-dimensional arrays. These are drawn in a 2-D _X/_Y
space, where _X denotes the array index, and _Y the ele-
ment value.
+o Two-dimensional arrays. These are drawn in a 3-D _X/_Y/_Z
space, where _X and _Y denote the array indexes, and _Z the
DDD 3.1.1 1998-12-06 32
ddd(1) ddd(1)
element value.
To plot an array, select it by clicking _m_o_u_s_e _b_u_t_t_o_n _1 on
an occurrence. The array name is copied to the argument
field. By clicking the `PPlloott' button, a new display is
created in the data window, followed by a new top-level
window containing the value plot.
Each time the value changes during program execution, the
plot is updated to reflect the current values. The plot
window remains active until you close it (via
`FFiillee-->>CClloossee') or until the associated display is deleted.
CChhaannggiinngg tthhee PPlloott AAppppeeaarraannccee
The actual drawing is not done by DDD itself. Instead,
DDD relies on an external Gnuplot program to create the
drawing. DDD adds a menu bar to the Gnuplot plot window
that lets you influence the appearance of the plot:
+o The `VViieeww' menu toggles optional parts of the plot, such
as border lines or a background grid.
+o The `PPlloott' menu changes the plotting style. The `33--DD
LLiinneess' option is useful for plotting two-dimensional
arrays.
+o The `SSccaallee' menu allows you to enable logarithmic scal-
ing and to enable or disable the scale tics.
+o The `CCoonnttoouurr' menu adds contour lines to 3-D plots.
You can also resize the plot window as desired.
In a 3-D plot, you can use the scroll bars to change your
view position. The horizontal scroll bar rotates the plot
around the _Z axis, that is, to the left and right. The
vertical scroll bar rotates the plot around the _Y axis,
that is, up and down.
PPlloottttiinngg SSccaallaarrss aanndd CCoommppoossiitteess
Besides plotting arrays, DDD also allows you to plot
scalars (simple numerical values). This works just like
plotting arrays--you select the numerical variable, click
on `PPlloott', and here comes the plot. However, plotting a
scalar is not very exciting. A plot that contains nothing
but a scalar simply draws the scalar's value as a _Y con-
stant--that is, a horizontal line.
So why care about scalars at all? DDD allows you to com-
bine multiple values into one plot. The basic idea is: if
you want to plot something that is neither an array nor a
scalar, DDD takes all numerical sub-values it can find and
plots them all together in one window. For instance, you
DDD 3.1.1 1998-12-06 33
ddd(1) ddd(1)
can plot all local variables by selecting `DDaattaa-->>DDiissppllaayy
LLooccaall VVaarriiaabblleess', followed by `PPlloott'. This will create a
plot containing all numerical values as found in the cur-
rent local variables. Likewise, you can plot all numeric
members contained in a structure by selecting it, followed
by `PPlloott'.
If you want more control about what to include in a plot
and what not, you can use display clusters. (See `CClluuss--
tteerriinngg DDiissppllaayyss', above, for details on clusters.) A com-
mon scenario is to plot a one-dimensional array together
with the current index position. This is done in three
steps:
+o Display the array and the index, using `DDiissppllaayy (())'.
+o Cluster both displays: select them and choose
`UUnnddiisspp-->>CClluusstteerr (())'.
+o Plot the cluster by pressing `PPlloott'.
Scalars that are displayed together with arrays can be
displayed either as vertical lines or horizontal lines.
By default, scalars are plotted as horizontal lines. How-
ever, if a scalar is a valid index for an array that was
previously plotted, it is shown as a vertical line. You
can change this initial alignment by selecting the scalar
display, followed by `RRoottaattee (())'.
PPlloottttiinngg DDiissppllaayy HHiissttoorriieess
At each program stop, DDD records the values of all dis-
played variables. These _d_i_s_p_l_a_y _h_i_s_t_o_r_i_e_s can be plotted,
too. The menu item `PPlloott-->>PPlloott hhiissttoorryy ooff (())' creates a
plot that shows all previously recorded values of the
selected display.
PPrriinnttiinngg PPlloottss
If you want to print the plot, select `FFiillee-->>PPrriinntt PPlloott'.
This pops up the DDD printing dialog, set up for printing
plots. Just as when printing graphs, you have the choice
between printing to a printer or a file and setting up
appropriate options.
The actual printing is also performed by Gnuplot, using
the appropriate driver. Please note the following caveats
related to printing:
+o Creating FFIIGG files requires an appropriate driver built
into Gnuplot. Your Gnuplot program may not contain such
a driver. In this case, you will have to recompile Gnu-
plot, including the line `##ddeeffiinnee FFIIGG' in the Gnuplot
`tteerrmm..hh' file.
+o The `PPoorrttrraaiitt' option generates an EEPPSS file useful for
DDD 3.1.1 1998-12-06 34
ddd(1) ddd(1)
inclusion in other documents. The `LLaannddssccaappee' option
makes DDD print the plot in the size specified in the
`PPaappeerr SSiizzee' option; this is useful for printing on a
printer. In `PPoorrttrraaiitt' mode, the `PPaappeerr SSiizzee' option is
ignored.
+o The PostScript and X11 drivers each have their own set
of colors, such that the printed colors may differ from
the displayed colors.
+o The `SSeelleecctteedd OOnnllyy' option is set by default, such that
only the currently selected plot is printed. (If you
select multiple plots to be printed, the respective out-
puts will all be concatenated, which may not be what you
desire.)
EEnntteerriinngg PPlloottttiinngg CCoommmmaannddss
Via `FFiillee-->>CCoommmmaanndd', you can enter Gnuplot commands
directly. Each command entered at the `ggnnuupplloott>>' prompt
is passed to Gnuplot, followed by a Gnuplot `rreepplloott' com-
mand to update the view. This is useful for advanced Gnu-
plot tasks.
Here's a simple example. The Gnuplot command `sseett xxrraannggee
[[_x_m_i_n::_x_m_a_x]]' sets the horizontal range that will be dis-
played to _x_m_i_n..._x_m_a_x. To plot only the elements 10 to
20, enter:
gnuplot>sseett xxrraannggee [[1100::2200]]
After each command entered, DDD adds a `rreepplloott' command,
such that the plot is updated automatically.
Here's a more complex example. The following sequence of
Gnuplot commands saves the plot in LATEX format:
gnuplot>sseett oouuttppuutt ""pplloott..tteexx"" # Set the output filename
gnuplot>sseett tteerrmm llaatteexx # Set the output format
gnuplot>sseett tteerrmm xx1111 # Show original picture
again
Due to the implicit `rreepplloott' command, the output is auto-
matically written to `pplloott..tteexx' after the `sseett tteerrmm llaatteexx'
command.
The dialog keeps track of the commands entered; use the
arrow keys to restore previous commands. Gnuplot error
messages (if any) are also shown in the history area.
The interaction between DDD and Gnuplot is logged in the
file `$$HHOOMMEE//..dddddd//lloogg'. The DDD `----ttrraaccee' option logs this
interaction on standard output.
DDD 3.1.1 1998-12-06 35
ddd(1) ddd(1)
EExxppoorrttiinngg PPlloott DDaattaa
If you want some external program to process the plot data
(a stand-alone Gnuplot program or the xxmmggrr program, for
instance), you can save the plot data in a file, using
`FFiillee-->>SSaavvee DDaattaa AAss'. This pops up a dialog that lets you
choose a data file to save the plotted data in.
The generated file starts with a few comment lines. The
actual data follows in X/Y or X/Y/Z format. It is the
same file as processed by Gnuplot.
AAnniimmaattiinngg PPlloottss
If you want to see how your data evolves in time, you can
set a breakpoint whose command sequence ends in a `ccoonntt'
command. Each time this "continue" breakpoint is reached,
the program stops and DDD updates the displayed values,
including the plots. Then, DDD executes the breakpoint
command sequence, resuming execution.
This way, you can set a "continue" breakpoint at some
decisive point within an array-processing algorithm and
have DDD display the progress graphically. When your pro-
gram has topped for good, you can use `UUnnddoo' and `Redo' to
redisplay and examine previous program states.
MMAACCHHIINNEE--LLEEVVEELL DDEEBBUUGGGGIINNGG
Note: Machine-level support is available with GDB only.
Sometimes, it is desirable to examine a program not only
at the source level, but also at the machine level. DDD
provides special machine code and register windows for
this task.
EExxaammiinniinngg MMaacchhiinnee CCooddee
To enable machine-level support, select `SSoouurrccee-->>DDiissppllaayy
MMaacchhiinnee CCooddee'. With machine code enabled, an additional
_m_a_c_h_i_n_e _c_o_d_e _w_i_n_d_o_w shows up, displaying the machine code
of the current function. By moving the sash at the right
of the separating line between source and machine code,
you can resize the source and machine code windows.
The machine code window works very much like the source
window. You can set, clear, and change breakpoints by
selecting the address and pressing a `BBrreeaakk aatt (())' or
`CClleeaarr aatt (())' button; the usual popup menus are also
available. Breakpoints and the current execution position
are displayed simultaneously in both source and machine
code.
The `LLooookkuupp (())' button can be used to look up the machine
code for a specific function--or the function for a spe-
cific address. Just click on the location in one window
and press `LLooookkuupp (())' to see the corresponding code in the
DDD 3.1.1 1998-12-06 36
ddd(1) ddd(1)
other window.
The `mmaaxxDDiissaasssseemmbbllee' resource controls how much is to be
disassembled. If `mmaaxxDDiissaasssseemmbbllee' is set to 256 (default)
and the current function is larger than 256 bytes, DDD
only disassembles the first 256 bytes below the current
location. You can set the `mmaaxxDDiissaasssseemmbbllee' resource to a
larger value if you prefer to have a larger machine code
view.
If source code is not available, only the machine code
window is updated.
EExxeeccuuttiioonn
All execution facilities available in the source code win-
dow are available in the machine code window as well. Two
special facilities are convenient for machine-level debug-
ging:
To execute just one machine instruction, click on the
`SStteeppii' button.
To continue to the next instruction in the current func-
tion, click on the `NNeexxttii' button. This is similar to
`SStteeppii', but any subroutine calls are executed without
stopping.
RReeggiisstteerrss
DDD provides a _r_e_g_i_s_t_e_r _w_i_n_d_o_w showing the machine regis-
ter values after each program stop. To enable the regis-
ter window, select `SSttaattuuss-->>RReeggiisstteerrss'.
By selecting one of the registers, its name is copied to
the argument field. You can use it as value for `DDiissppllaayy
(())', for instance, to have its value displayed in the data
window.
EExxaammiinniinngg MMeemmoorryy
Using GDB or DBX, you can examine memory in any of several
formats, independently of your program's data types. The
item `DDaattaa-->>EExxaammiinnee MMeemmoorryy' pops up a panel where you can
choose the format to be shown.
You can enter
+o a _r_e_p_e_a_t _c_o_u_n_t, a decimal integer that specifies how
much memory (counting by units) to display
+o a _d_i_s_p_l_a_y _f_o_r_m_a_t--one of
ooccttaall Print as integer in octal
hheexx Regard the bits of the value as an integer,
DDD 3.1.1 1998-12-06 37
ddd(1) ddd(1)
and print the integer in hexadecimal.
ddeecciimmaall Print as integer in signed decimal.
uunnssiiggnneedd Print as integer in unsigned decimal.
bbiinnaarryy Print as integer in binary.
ffllooaatt Regard the bits of the value as a floating
point number and print using typical floating
point syntax.
aaddddrreessss Print as an address, both absolute in hexadec-
imal and as an offset from the nearest preced-
ing symbol.
iinnssttrruuccttiioonn
Print as machine instructions. The _u_n_i_t _s_i_z_e
is ignored for this display format.
cchhaarr Regard as an integer and print it as a charac-
ter constant.
ssttrriinngg Print as null-terminated string. The _u_n_i_t
_s_i_z_e is ignored for this display format.
+o a _u_n_i_t _s_i_z_e--one of
bbyytteess Bytes.
hhaallffwwoorrddss Halfwords (two bytes).
wwoorrddss Words (four bytes).
ggiiaannttss Giant words (eight bytes).
+o an _a_d_d_r_e_s_s--the starting display address. The expres-
sion need not have a pointer value (though it may); it
is always interpreted as an integer address of a byte of
memory.
There are two ways to examine the values:
+o You can dump the memory in the debugger console (using
`PPrriinntt'). If you repeat the resulting `xx' command by
pressing RREETTUURRNN, the following area of memory is shown.
+o You can also display the memory dump in the data window
(using `DDiissppllaayy'). If you choose to display the values,
the values will be updated automatically each time the
program stop.
DDD 3.1.1 1998-12-06 38
ddd(1) ddd(1)
EEDDIITTIINNGG SSOOUURRCCEE CCOODDEE
In DDD itself, you cannot change the source file currently
displayed. Instead, DDD allows you to invoke a _t_e_x_t _e_d_i_-
_t_o_r. To invoke a text editor for the current source file,
select the `EEddiitt' button or `SSoouurrccee-->>EEddiitt SSoouurrccee'.
By default, DDD tries a number of common editors. You can
customize DDD to use your favourite editor via
`EEddiitt-->>PPrreeffeerreenncceess-->>HHeellppeerrss-->>EEddiitt SSoouurrcceess'.
After the editor has exited, the source code shown is
automatically updated.
If you have DDD and an editor running in parallel, you can
also update the source code manually via `SSoouurrccee-->>RReellooaadd
SSoouurrccee'. This reloads the source code shown from the
source file. Since DDD automatically reloads the source
code if the debugged program has been recompiled, this
should seldom be necessary.
EENNTTEERRIINNGG CCOOMMMMAANNDDSS
In the _d_e_b_u_g_g_e_r _c_o_n_s_o_l_e, you can interact with the command
interface of the inferior debugger. Enter commands at the
_d_e_b_u_g_g_e_r _p_r_o_m_p_t--that is, `((ggddbb))' for GDB, `((ddbbxx))' for
DBX, `>>' for XDB, `>>' and `_t_h_r_e_a_d[[_d_e_p_t_h]]' for JDB, or
`((PPyyddbb))' for PYDB, or `DDBB<<>>' for Perl. You can use arbi-
trary debugger commands; use the RREETTUURRNN key to enter them.
You can _r_e_p_e_a_t previous and next commands by pressing the
`UUpp' and `DDoowwnn' arrow keys, respectively. If you enter an
empty line, the last command is repeated as well. `CCoomm--
mmaannddss-->>CCoommmmaanndd HHiissttoorryy' shows the command history.
You can _s_e_a_r_c_h for previous commands by pressing CCttrrll++BB.
This invokes _i_n_c_r_e_m_e_n_t_a_l _s_e_a_r_c_h _m_o_d_e_, where you can enter
a string to be searched in previous commands. Press
CCttrrll++BB again to repeat the search, or CCttrrll++FF to search in
the reverse direction. To return to normal mode, press
EESSCC, or use any cursor command.
Using GDB and Perl, you can also _c_o_m_p_l_e_t_e commands and
arguments by pressing the TTAABB key; pressing the TTAABB key
multiple times shows one possible expansion after the
other.
CCUUSSTTOOMMIIZZIINNGG DDDDDD
You can set up your personal DDD preferences by using the
`EEddiitt-->>PPrreeffeerreenncceess' menu from the menu bar. These prefer-
ences affect your running DDD process only, unless you
save these preferences for a later DDD invocation. Fre-
quently used preferences can also be found in the individ-
ual menus.
DDD 3.1.1 1998-12-06 39
ddd(1) ddd(1)
FFrreeqquueennttllyy UUsseedd PPrreeffeerreenncceess
If you want to run your debugged process in a separate
terminal emulator window, set `PPrrooggrraamm-->>RRuunn iinn EExxeeccuuttiioonn
WWiinnddooww'. This is useful for programs that have special
terminal requirements not provided by the debugger window,
as raw keyboard processing or terminal control sequences.
By default, DDD finds only complete words. This is conve-
nient for clicking on an identifier in the source text and
search for exactly this identifier. If you want to find
all occurrences, including word parts, unset `SSoouurrccee-->>FFiinndd
WWoorrddss OOnnllyy'.
By default, DDD find is case-sensitive. This is conve-
nient for case-sensitive programming languages. If you
want to find all occurrences, regardless of case, unset
`SSoouurrccee-->>FFiinndd CCaassee SSeennssiittiivvee'.
If you wish to display machine code of selected functions,
set `SSoouurrccee-->>DDiissppllaayy MMaacchhiinnee CCooddee'. This makes DDD run a
little slower, so it is disabled by default.
Through `EEddiitt-->>PPrreeffeerreenncceess', you can set up more DDD pref-
erences, which are discussed here.
GGeenneerraall PPrreeffeerreenncceess
By default, when you move the pointer over a button, DDD
gives a hint on the button's meaning in a small window.
This feature is known as _b_u_t_t_o_n _t_i_p_s (also known as _t_o_o_l
_t_i_p_s or _b_a_l_l_o_o_n _h_e_l_p). Experienced users may find these
hints disturbing; this is why you can disable them by
unsetting the `AAuuttoommaattiicc ddiissppllaayy ooff bbuuttttoonn hhiinnttss aass ppooppuupp
ttiippss' option.
The button hints are also displayed in the status line.
Disabling hints in status line (by unsetting the `AAuuttoo--
mmaattiicc ddiissppllaayy ooff bbuuttttoonn hhiinnttss iinn tthhee ssttaattuuss lliinnee' option)
and disabling button tips as well makes DDD run slightly
faster.
By default, when you move the pointer over a variable in
the source code, DDD displays the variable value in a
small window. Users may find these _v_a_l_u_e _t_i_p_s disturbing;
this is why you can disable them by unsetting the `AAuuttoo--
mmaattiicc ddiissppllaayy ooff vvaarriiaabbllee vvaalluueess aass ppooppuupp ttiippss' option.
The variable values are also displayed in the status line.
Disabling variable values in status line (by unsetting the
`AAuuttoommaattiicc ddiissppllaayy ooff vvaarriiaabbllee vvaalluueess iinn tthhee ssttaattuuss lliinnee'
option) and disabling value tips as well will make DDD run
slightly faster.
If you want to use TTAABB key completion in all text windows,
DDD 3.1.1 1998-12-06 40
ddd(1) ddd(1)
set the `TTAABB kkeeyy ccoommpplleetteess iinn aallll wwiinnddoowwss' option. This
is useful if you have pointer-driven keyboard focus (see
below) and no special usage for the TTAABB key. Otherwise,
the TTAABB key completes in the debugger console only.
If you frequently switch between DDD and other multi-
window applications, you may like to set the `IIccoonniiffyy aallll
wwiinnddoowwss aatt oonnccee' option. This way, all DDD windows are
iconified and deiconified as a group.
If you want to keep DDD off your desktop during a longer
computation, you may like to set the `UUnniiccoonniiffyy wwhheenn
rreeaaddyy' option. This way, you can iconify DDD while it is
busy on a command (e.g. running a program); DDD will auto-
matically pop up again after becoming ready (e.g. after
the debugged program has stopped at a breakpoint).
If you are bothered by X warnings, you can suppress them
by setting the `SSuupppprreessss XX wwaarrnniinnggss' option.
If you want to be warned about multiple DDD invocations
sharing the same preferences and history files, enable
`WWaarrnn iiff MMuullttiippllee DDDDDD IInnssttaanncceess aarree RRuunnnniinngg'.
When debugging a modal X application, DDD may interrupt it
while it has grabbed the pointer, making further interac-
tion impossible. If the `CCoonnttiinnuuee aauuttoommaattiiccaallllyy wwhheenn
mmoouussee ppooiinntteerr iiss ffrroozzeenn' option is set, DDD will check
after each interaction whether the pointer is grabbed. If
this is so, DDD will continue the debugged program such
that you can continue to use your display.
The _U_n_d_o _B_u_f_f_e_r is the area where DDD stores old program
states and commands in order to undo operations. When you
are displaying lots of data, the undo buffer can quickly
grow. In `UUnnddoo BBuuffffeerr SSiizzee', you can limit the size of
the undo buffer. Setting this limit to 00 disables undo
altogether. A negative value means to place no limit.
The `RReesseett' button restores the most recently saved pref-
erences.
SSoouurrccee PPrreeffeerreenncceess
In the source text, the current execution position and
breakpoints are indicated by symbols ("glyphs"). As an
alternative, DDD can also indicate these positions using
text characters. If you wish to disable glyphs, set the
`AAss TTeexxtt CChhaarraacctteerrss' option. This also makes DDD run
slightly faster, especially when scrolling.
DDD can locate the tool buttons in the command tool (`CCoomm--
mmaanndd TTooooll') or in a _c_o_m_m_a_n_d _t_o_o_l _b_a_r above the program
source (`SSoouurrccee WWiinnddooww'). Pick your choice.
DDD 3.1.1 1998-12-06 41
ddd(1) ddd(1)
Some DBX and XDB variants do not properly handle paths in
source file specifications. If you want the inferior
debugger to refer to source locations by source base names
only, unset the `RReeffeerr ttoo ssoouurrcceess bbyy ffuullll ppaatthh nnaammee'
option.
By default, DDD finds only complete words. This is conve-
nient for clicking on an identifier in the source text and
search for exactly this identifier. If you want to find
all occurrences, including word parts, unset `FFiinndd wwoorrddss
oonnllyy'.
By default, DDD find is case-sensitive. This is conve-
nient for case-sensitive programming languages. If you
want to find all occurrences, regardless of case, unset
`FFiinndd ccaassee sseennssiittiivvee'.
By default, DDD caches source files in memory. This is
convenient for remote debugging, since remote file access
may be slow. If you want to reduce memory usage, unset
the `CCaacchhee ssoouurrccee ffiilleess' option.
By default, DDD caches machine code in memory. This is
bad for memory usage, but convenient for speed, since dis-
assembling a function each time it is reached may take
time. If you want to reduce memory usage, unset the
`CCaacchhee mmaacchhiinnee ccooddee' option.
If your source code uses a tab width different from 88 (the
default), you can set an alternate width using the `TTaabb
wwiiddtthh' slider.
You can instruct DDD to indent the source code, leaving
more room for breakpoints and execution glyphs. This is
done using the `SSoouurrccee iinnddeennttaattiioonn' slider. The default
value is 00 for no indentation at all. If the source
indentation is 55 or higher, DDD will also show line num-
bers.
Finally, you can instruct DDD to indent the machine code,
leaving room for breakpoints and execution glyphs. This
is done using the `MMaacchhiinnee ccooddee iinnddeennttaattiioonn' slider. The
default value is 44.
The `RReesseett' button restores the most recently saved pref-
erences.
DDaattaa PPrreeffeerreenncceess
You can control whether edge hints and edge annotations
are displayed. Set or unset the `SShhooww EEddggee HHiinnttss' and
`SShhooww EEddggee AAnnnnoottaattiioonnss' option, respectively.
By default, DDD disables the title of a dependent display
if the name can be deduced from edge annotations. If you
DDD 3.1.1 1998-12-06 42
ddd(1) ddd(1)
want all dependent displays to have a title, set `SShhooww
TTiittlleess ooff DDeeppeennddeenntt DDiissppllaayyss'.
To enable a more compact layout, you can set the `CCoommppaacctt
LLaayyoouutt' option. This realizes an alternate layout algo-
rithm, where successors are placed next to their parents.
This algorithm is suitable for homogeneous data structures
only.
To enforce layout, you can set the `RRee--llaayyoouutt ggrraapphh aauuttoo--
mmaattiiccaallllyy' option. If automatic layout is enabled, the
graph is layouted after each change.
If you want DDD to detect aliases, set the `DDeetteecctt
AAlliiaasseess' option. Note that alias detection makes DDD run
slower. See `EExxaammiinniinngg SShhaarreedd DDaattaa SSttrruuccttuurreess', above,
for details on alias detection.
By default, DDD displays two-dimensional arrays as tables,
aligning the array elements in rows and columns. If you
prefer viewing two-dimensional arrays as nested one-
dimensional arrays, you can disable the `DDiissppllaayy ttwwoo--
ddiimmeennssiioonnaall aarrrraayyss aass ttaabblleess' option.
To facilitate alignment of data displays, you can set the
`AAuuttoo--aalliiggnn ddiissppllaayyss' option. If auto-alignment is
enabled, displays can be moved on grid positions only.
By default, the stacked data window is automatically
closed when you delete the last data display. You can
keep the data window open by unsetting `CClloossee ddaattaa wwiinnddooww
wwhheenn ddeelleettiinngg llaasstt ddiissppllaayy'.
In the `GGrriidd SSiizzee' scale, you can change the spacing of
grid points. A spacing of 0 disables the grid. Default
is 16.
The `RReesseett' button restores the most recently saved pref-
erences.
SSttaarrttuupp PPrreeffeerreenncceess
If you change one of the resources in this panel, the
change will not take effect immediately. Instead, you can
+o save options (using `EEddiitt-->>SSaavvee OOppttiioonnss') to make the
change effective for future DDD sessions,
+o or restart DDD (using `FFiillee-->>RReessttaarrtt DDDDDD') to make it
effective for the restarted DDD session.
After having made changes in the panel, DDD will automati-
cally offer you to restart itself, such that you can see
the changes taking effect. Note that even after
DDD 3.1.1 1998-12-06 43
ddd(1) ddd(1)
restarting, you still must save options to make the
changes permanent.
By default, DDD stacks commands, source, and data in one
single top-level window. To have separate top-level win-
dows for source, data, and debugger console, set the `WWiinn--
ddooww LLaayyoouutt' option to `SSeeppaarraattee WWiinnddoowwss'. See also the
`----aattttaacchh--wwiinnddoowwss' and `----sseeppaarraattee--wwiinnddoowwss' options,
below.
The CCttrrll++CC key can be bound to different actions, each in
accordance with a specific style guide.
CCooppyy This setting binds CCttrrll++CC to the Copy operation, as
specified by the KDE style guide. In this setting,
use EESSCC to interrupt the debuggee.
IInntteerrrruupptt
This (default) setting binds CCttrrll++CC to the Inter-
rupt operation, as used in several UNIX command-
line programs. In this setting, use CCttrrll++IInnss to
copy text to the clipboard.
The CCttrrll++AA key can be bound to different actions, too.
SSeelleecctt AAllll
This (default) setting binds CCttrrll++AA to the Select
All operation, as specified by the KDE style guide.
In this setting, use HHOOMMEE tp move the cursor to the
beginning of a line.
BBeeggiinnnniinngg ooff LLiinnee
This setting binds CCttrrll++AA to the Beginning of Line
operation, as used in several UNIX text-editing
programs. In this setting, use CCttrrll++SShhiifftt++AA to
select all text.
The DDD tool bar buttons can appear in a variety of
styles:
IImmaaggeess This lets each tool bar button show an image illus-
trating the action.
CCaappttiioonnss
This shows the action name below the image.
The default is to have images as well as captions, but you
can choose to have only images (saving space) or only cap-
tions.
If you choose to have neither images nor captions, tool
bar buttons are labeled like other buttons, as in DDD 2.x.
DDD 3.1.1 1998-12-06 44
ddd(1) ddd(1)
Note that this implies that in the stacked window configu-
ration, the common tool bar cannot be displayed; it is
replaced by two separate tool bars, as in DDD 2.x.
If you enable `FFllaatt' buttons (default), the border of tool
bar buttons will appear only if the mouse pointer is over
them. This latest-and-greatest GUI invention can be dis-
abled, such that the button border is always shown.
If you enable `CCoolloorr' buttons, tool bar images will be
colored when entered. If DDD was built using Motif 2.0
and later, you can also choose a third setting, where but-
tons appear in color all the time.
By default, the DDD tool bars are located on top of the
window. If you prefer the tool bar being located at the
bottom, as in DDD 2.x and earlier, enable the `BBoottttoomm'
toggle. The bottom setting is only supported for separate
tool bars--that is, you must either choose separate win-
dows or configure the tool bar to have neither images nor
captions.
By default, DDD directs keyboard input to the item your
mouse pointer points at. If you prefer a click-to-type
keyboard focus (that is, click on an item to make it
accept keyboard input), set the `KKeeyybbooaarrdd FFooccuuss' option on
`CClliicckk ttoo TTyyppee'.
By default, DDD uses Motif scroll bars to scroll the data
window. Many people find this inconvenient, since you can
scroll in the horizontal or vertical direction only. As
an alternative, DDD provides a panner (a kind of two-
dimensional scroll bar). This is much more comfortable,
but may be incompatible with your Motif toolkit. To set
up DDD such that it uses panners by default, set the `DDaattaa
SSccrroolllliinngg' option to `PPaannnneerr'. See also the `----ppaannnneedd--
ggrraapphh--eeddiittoorr' and `----ssccrroolllleedd--ggrraapphh--eeddiittoorr' options,
below.
By default, DDD determines the inferior debugger automati-
cally. To change this default, unset `DDeetteerrmmiinnee AAuuttoommaattii--
ccaallllyy' and set the `DDeebbuuggggeerr TTyyppee' option to a specific
debugger. See also the `----ggddbb', `----ddbbxx', `----xxddbb',
`----jjddbb', `----ppyyddbb', and `----ppeerrll' options, below.
If you want the DDD splash screen shown upon startup,
enable `DDDDDD SSppllaasshh SSccrreeeenn'.
If you want the DDD tips of the day displayed upon
startup, enable `TTiipp ooff tthhee DDaayy'.
The `RReesseett' button restores the most recently saved pref-
erences.
DDD 3.1.1 1998-12-06 45
ddd(1) ddd(1)
FFoonnttss
You can configure the basic DDD fonts at run-time. Each
font is specified using two members:
+o The _f_o_n_t _f_a_m_i_l_y is an X font specifications, where the
initial specification after `_F_a_m_i_l_y'. Thus, a pair
`_f_a_m_i_l_y--_w_e_i_g_h_t' usually suffices.
+o The _f_o_n_t _s_i_z_e is given as (resolution-independent) 1/10
points.
The `BBrroowwssee' button opens a font selection program, where
you can select fonts and attributes interactively. Click-
ing `qquuiitt' or `sseelleecctt' in the font selector causes all
non-default values to be transferred to the DDD font pref-
erences panel.
The following fonts can be set using the preferences
panel:
DDeeffaauulltt FFoonntt
The default DDD font to use for labels, menus, and
buttons. Default is `hheellvveettiiccaa--bboolldd'.
VVaarriiaabbllee WWiiddtthh
The variable width DDD font to use for help texts
and messages. Default is `hheellvveettiiccaa--mmeeddiiuumm'.
FFiixxeedd WWiiddtthh
The fixed width DDD font to use for source code,
the debugger console, text fields, data displays,
and the execution window. Default is `lluucciiddaattyyppee--
wwrriitteerr--mmeeddiiuumm'.
Just like startup preferences, changes in this panel will
not take effect immediately. Instead, you can
+o save options (using `EEddiitt-->>SSaavvee OOppttiioonnss') to make the
change effective for future DDD sessions,
+o or restart DDD (using `FFiillee-->>RReessttaarrtt DDDDDD') to make it
effective for the restarted DDD session.
After having made changes in the panel, DDD will automati-
cally offer you to restart itself, such that you can see
the changes taking effect. Note that even after restart-
ing, you still must save options to make the changes per-
manent.
The `RReesseett' button restores the most recently saved pref-
erences.
DDD 3.1.1 1998-12-06 46
ddd(1) ddd(1)
HHeellppeerrss
DDD relies on some external applications (called _h_e_l_p_e_r_s)
for specific tasks. Through the `HHeellppeerrss' panel, you can
choose and customize these applications.
In `EEddiitt SSoouurrcceess', you can select an X editor to be
invoked via the DDD `EEddiitt' button. `@@FFIILLEE@@' is replaced
by the current file name; `@@LLIINNEE@@' is replaced by the cur-
rent line. Typical values include `xxeeddiitt @@FFIILLEE@@' or `ggnnuu--
cclliieenntt ++@@LLIINNEE@@ @@FFIILLEE@@'. See also the `eeddiittCCoommmmaanndd'
resource, below.
In `GGeett CCoorree FFiillee', you can enter a command to get a core
file from a running process. `@@FFIILLEE@@' is replaced by the
name of the target core file; `@@PPIIDD@@' is replaced by the
process ID. A typical value is `ggccoorree --oo @@FFIILLEE@@ @@PPIIDD@@'.
If you don't have an appropriate command, leave this value
empty: DDD will then kill the debuggee in order to get a
core file. See also the `ggeettCCoorreeCCoommmmaanndd' resource, below.
`LLiisstt PPrroocceesssseess' is a command to get a list of processes,
like `ppss'. The output of this command is shown in the
`FFiillee-->>AAttttaacchh ttoo PPrroocceessss' dialog. See also the `ppssCCoomm--
mmaanndd' resource, below.
In `EExxeeccuuttiioonn WWiinnddooww', you can enter a command to start a
terminal emulator. To this command, DDD appends Bourne
shell commands to be executed within the execution window.
A simple value is `xxtteerrmm --ee //bbiinn//sshh --cc'. See also the
`tteerrmmCCoommmmaanndd' resource, below.
`UUnnccoommpprreessss' is the uncompression command used by DDD to
uncompress the DDD license and manual pages. The uncom-
pression command should be invoked such that it reads from
standard input and writes to standard output. A typical
value is `gguunnzziipp --cc'. See also the `uunnccoommpprreessssCCoommmmaanndd'
resource, below.
`WWeebb BBrroowwsseerr' is the command to invoke a WWW browser for
the DDD WWW page. `@@UURRLL@@' is replaced by the URL (web
page) to be shown. A simple value is `nneettssccaappee @@UURRLL@@'.
See also the `wwwwwwCCoommmmaanndd' resource, below.
`PPlloott' is the name of a Gnuplot program to invoke. DDD
can run Gnuplot in two ways:
+o DDD can use an EExxtteerrnnaall PPlloott WWiinnddooww, i.e. the plot win-
dow as supplied by Gnuplot. DDD "swallows" the Gnuplot
output window into its own user interface. Unfortu-
nately, some window managers, notably MWM, have trouble
with swallowing techniques.
+o DDD can supply a BBuuiillttiinn PPlloott WWiinnddooww instead. This
DDD 3.1.1 1998-12-06 47
ddd(1) ddd(1)
works with all window managers, but plots are less cus-
tomizable (Gnuplot resources are not understood).
Pick your choice from the menu. See also the `pplloottCCoomm--
mmaanndd' and `pplloottTTeerrmmTTyyppee' resources, below.
SSaavviinngg OOppttiioonnss
You can save the current option settings by selecting
`EEddiitt-->>SSaavvee OOppttiioonnss'. Options are saved in a file named
`..dddddd//iinniitt' in your home directory. If a session _s_e_s_s_i_o_n
is active, options will be saved in
`$$HHOOMMEE//..dddddd//sseessssiioonnss//_s_e_s_s_i_o_n//iinniitt' instead.
OOtthheerr CCuussttoommiizzaattiioonnss
Other personal DDD resources can also be set in your
`..dddddd//iinniitt' file. See the `RREESSOOUURRCCEESS' section, below.
The inferior debugger can be customized via
`EEddiitt-->>SSeettttiinnggss'. See the `DDEEBBUUGGGGEERR SSEETTTTIINNGGSS' section,
below.
DDEEBBUUGGGGEERR SSEETTTTIINNGGSS
For most inferior debuggers, you can change its settings
using `EEddiitt-->>SSeettttiinnggss'. Using the settings editor, you
can determine whether C++ names are to be demangled, how
many array elements are to print, and so on.
The capabilities of the settings editor depend on the
capabilities of your inferior debugger. Clicking on `??'
gives an an explanation on the specific item; the GDB doc-
umentation gives more details.
Use `EEddiitt-->>UUnnddoo' to undo changes. Clicking on `RReesseett'
restores the most recently saved settings.
Some debugger settings are insensitive and cannot be
changed, because doing so would endanger DDD operation.
See the `ggddbbIInniittCCoommmmaannddss' and `ddbbxxIInniittCCoommmmaannddss' resources
for details.
All debugger settings (except source and object paths) are
saved with DDD options.
UUSSEERR--DDEEFFIINNEEDD AACCTTIIOONNSS
DDeeffiinniinngg BBuuttttoonnss
To facilitate interaction, you can add own command buttons
to DDD. These buttons can be added below the debugger
console (`CCoonnssoollee BBuuttttoonnss'), the source window (`SSoouurrccee
BBuuttttoonnss'), or the data window (`DDaattaa BBuuttttoonnss').
To define individual buttons, use the _B_u_t_t_o_n _E_d_i_t_o_r,
invoked via `CCoommmmaannddss-->>EEddiitt BBuuttttoonnss'. The button editor
displays a text, where each line contains the command for
DDD 3.1.1 1998-12-06 48
ddd(1) ddd(1)
exactly one button. Clicking on `OOKK' creates the appro-
priate buttons from the text. If the text is empty (the
default), no button is created.
As a simple example, assume you want to create a `pprriinntt ii'
button. Invoke `CCoommmmaannddss-->>EEddiitt BBuuttttoonnss' and enter a line
saying `pprriinntt ii' in the button editor. Then click on
`OOKK'. A button named `PPrriinntt ii' will now appear below the
debugger console--try it! To remove the button, reopen
the button editor, clear the `pprriinntt ii' line and press `OOKK'
again.
If a button command contains `(())', the string `(())' will
automatically be replaced by the contents of the argument
field. For instance, a button named `rreettuurrnn (())' will exe-
cute the GDB `rreettuurrnn' command with the current content of
the argument field as argument.
By default, DDD disables buttons whose commands are not
supported by the inferior debugger. To enable such but-
tons, unset the `EEnnaabbllee ssuuppppoorrtteedd bbuuttttoonnss oonnllyy' toggle in
the button editor.
DDD also allows you to specify control sequences and spe-
cial labels for user-defined buttons. See the examples in
`UUsseerr--ddeeffiinneedd BBuuttttoonnss' in the `RREESSOOUURRCCEESS' section, below.
DDeeffiinniinngg SSiimmppllee CCoommmmaannddss uussiinngg GGDDBB
Aside from breakpoint commands (see `BBrreeaakkppooiinntt ccoommmmaannddss',
above), DDD also allows you to store sequences of commands
as a user-defined GDB command. A _u_s_e_r_-_d_e_f_i_n_e_d _c_o_m_m_a_n_d is
a sequence of GDB commands to which you assign a new name
as a command. Using DDD, this is done via the _C_o_m_m_a_n_d
_E_d_i_t_o_r, invoked via `CCoommmmaannddss-->>DDeeffiinnee CCoommmmaanndd'.
A GDB command is created in five steps:
+o Enter the name of the command in the `CCoommmmaanndd' field.
Use the drop-down list on the right to select from
already defined commands.
+o Click on `RReeccoorrdd' to begin the recording of the command
sequence.
+o Now interact with DDD. While recording, DDD does not
execute commands, but simply records them to be executed
when the breakpoint is hit. The recorded debugger com-
mands are shown in the debugger console.
+o To stop the recording, click on `EEnndd' or enter `eenndd' at
the GDB prompt. To _c_a_n_c_e_l the recording, click on
`IInntteerrrruupptt' or press EESSCC.
DDD 3.1.1 1998-12-06 49
ddd(1) ddd(1)
+o Click on `EEddiitt >>>>' to edit the recorded commands. When
done with editing, click on `EEddiitt <<<<' to close the com-
mands editor.
After the command is defined, you can enter it at the GDB
prompt. You may also click on `AAppppllyy' to apply the given
user-defined command.
For convenience, you can assign a button to the defined
command. Enabling one of the `BBuuttttoonn' locations will add
a button with the given command to the specified location.
If you want to edit the button, select `CCoommmmaannddss-->>EEddiitt
BBuuttttoonnss'; see also `DDeeffiinniinngg BBuuttttoonnss', above.
When user-defined GDB commands are executed, the commands
of the definition are not printed. An error in any com-
mand stops execution of the user-defined command.
If used interactively, commands that would ask for confir-
mation proceed without asking when used inside a user-
defined command. Many GDB commands that normally print
messages to say what they are doing omit the messages when
used in a user-defined command.
To save all command definitions, use `EEddiitt-->>SSaavvee OOppttiioonnss'.
DDeeffiinniinngg AArrgguummeenntt CCoommmmaannddss uussiinngg GGDDBB
If you want to pass arguments to user-defined commands,
you can enable the `(())' toggle button in the Command Edi-
tor. Enabling `(())' has two effects:
+o While recording commands, all references to the argument
field are taken _s_y_m_b_o_l_i_c_a_l_l_y instead of literally. The
argument field value is frozen to `$$aarrgg00', which is how
GDB denotes the argument of a user-defined command.
When GDB executes the command, it will replace `$$aarrgg00'
by the current command argument.
+o When assigning a button to the command, the command will
be suffixed by the current contents of the argument
field.
While defining a command, you can toggle the `(())' button
as you wish to switch between using the argument field
symbolically and literally.
As an example, let us define a command `ccoonnttuunnttiill' that
will set a breakpoint in the given argument and continue
execution.
+o Enter `ccoonnttuunnttiill' in the `DDeeffiinniittiioonn' field.
+o Enable the `(())' toggle button.
DDD 3.1.1 1998-12-06 50
ddd(1) ddd(1)
+o Now click on `RReeccoorrdd' to start recording. Note that the
contents of the argument field change to `$$aarrgg00'.
+o Click on `BBrreeaakk aatt (())' to create a breakpoint. Note
that the recorded breakpoint command refers to `$$aarrgg00'.
+o Click on `CCoonntt' to continue execution.
+o Click on `EEnndd' to end recording. Note that the argument
field is restored to its original value.
+o Finally, click on one of the `BBuuttttoonn' locations. This
creates a `CCoonnttuunnttiill (())' button where `(())' will be
replaced by the current contents of the argument field--
and thus passed to the `ccoonnttuunnttiill' command.
+o You can now either use the `CCoonnttuunnttiill (())' button or
enter a `ccoonnttuunnttiill' command at the GDB prompt. (If you
plan to use the command frequently, you may wish to
define a `ccuu' command, which again calls `ccoonnttuunnttiill'
with its argument. This is a nice exercise.)
There is a little drawback with argument commands: a user-
defined command in GDB has no means to access the argument
list as a whole; only the first argument (up to whites-
pace) is processed. This may change in future GDB
releases.
DDeeffiinniinngg CCoommmmaannddss uussiinngg OOtthheerr DDeebbuuggggeerrss
If your inferior debugger allows you to define own command
sequences, you can also use these user-defined commands
within DDD; just enter them at the debugger prompt.
However, you may encounter some problems:
+o In contrast to the well-documented commands of the infe-
rior debugger, DDD does not know what a user-defined
command does. This may lead to inconsistencies between
DDD and the inferior debugger. For instance, if your
the user-defined command `bbpp' sets a breakpoint, DDD may
not display it immediately, because DDD does not know
that `bbpp' changes the breakpoint state.
+o You cannot use DDD ggrraapphh commands within user-defined
commands. This is only natural, because user-defined
commands are interpreted by the inferior debugger, which
does not know about DDD commands.
As a solution, DDD provides a simple facility called _a_u_t_o_-
_c_o_m_m_a_n_d_s. If DDD receives any output from the inferior
debugger in the form `_p_r_e_f_i_x _c_o_m_m_a_n_d', it will interpret
_c_o_m_m_a_n_d as if it had been entered at the debugger prompt.
_p_r_e_f_i_x is a user-defined string, for example `dddddd::
DDD 3.1.1 1998-12-06 51
ddd(1) ddd(1)
Suppose you want to define a command `ggdd' that serves as
abbreviation for `ggrraapphh ddiissppllaayy'. All the command ggdd has
to do is to issue a string
dddddd:: ggrraapphh ddiissppllaayy _a_r_g_u_m_e_n_t
where _a_r_g_u_m_e_n_t is the argument given to `ggdd'. Using GDB,
this can be achieved using the eecchhoo command. In your
$$HHOOMMEE//..ggddbbiinniitt file, insert the lines
ddeeffiinnee ggdd
eecchhoo dddddd:: ggrraapphh ddiissppllaayy $$aarrgg00\\nn
eenndd
To complete the setting, you must also set the `aauuttooCCoomm--
mmaannddPPrreeffiixx' resource to the `dddddd:: ' prefix you gave in
your command. In `$$HHOOMMEE//..dddddd//iinniitt', write:
DDdddd**aauuttooCCoommmmaannddPPrreeffiixx:: dddddd::\\
(Be sure to leave a space after the trailing backslash.)
Entering `ggdd ffoooo' will now have the same effect as enter-
ing `ggrraapphh ddiissppllaayy ffoooo' at the debugger prompt.
Please note: In your commands, you should choose some
other prefix than `dddddd:: '. This is because auto-commands
raise a security problem, since arbitrary commands can be
executed. Just imagine some malicious program issuing a
string like `_p_r_e_f_i_x sshheellll rrmm --ffrr $$HHOOMMEE' when being
debugged! As a consequence, be sure to choose your own
_p_r_e_f_i_x; it must be at least three characters long.
QQUUIITTTTIINNGG DDDDDD
To exit DDD, select `FFiillee-->>EExxiitt'. You may also type the
`qquuiitt' command at the debugger prompt or press CCttrrll++QQ.
GDB and XDB also accept the `qq' command or an end-of-file
character (usually CCttrrll++DD). Closing the last DDD window
will also exit DDD.
An interrupt (EESSCC or IInntteerrrruupptt) does not exit from DDD,
but rather terminates the action of any debugger command
that is in progress and returns to the debugger command
level. It is safe to type the interrupt character at any
time because the debugger does not allow it to take effect
until a time when it is safe.
In case an ordinary interrupt does not succeed, you can
also use an abort (CCttrrll++\\ or AAbboorrtt), which sends a QUIT
signal to the inferior debugger. Use this in emergencies
only; the inferior debugger may be left inconsistent or
even exit after a QUIT signal.
As a last resort--if DDD hangs, for example--, you may
DDD 3.1.1 1998-12-06 52
ddd(1) ddd(1)
also interrupt DDD itself using an interrupt signal (SIG-
INT). This can be done by typing the interrupt character
(usually CCttrrll++CC) in the shell DDD was started from, or by
using the UNIX `kkiillll' command. An interrupt signal inter-
rupts any DDD action; the inferior debugger is interrupted
as well. Since this interrupt signal can result in inter-
nal inconsistencies, use this as a last resort in emergen-
cies only; save your work as soon as possible and restart
DDD.
PPEERRSSIISSTTEENNTT SSEESSSSIIOONNSS
Note: Persistent sessions are supported with GDB running
on the local machine only. Support for other DBX, XDB,
and JDB is partially implemented; your mileage may vary.
If you want to interrupt your current DDD session, you can
save its entire DDD state in a file and restore it later.
SSaavviinngg SSeessssiioonnss
To save a session, select `FFiillee-->>SSaavvee SSeessssiioonn AAss'. You
will be asked for
+o a symbolic session name _s_e_s_s_i_o_n and
+o whether to include a core dump of the debugged program.
Including a core dump is necessary for restoring memory
contents and the current execution position.
After clicking on `SSaavvee', the session is saved in
`$$HHOOMMEE//..dddddd//sseessssiioonnss//_s_e_s_s_i_o_n'.
After saving the current state as a session, the session
becomes _a_c_t_i_v_e. This means that DDD state will be saved
as session defaults:
+o User options will be saved in
`$$HHOOMMEE//..dddddd//sseessssiioonnss//_s_e_s_s_i_o_n//iinniitt' instead of
`$$HHOOMMEE//..dddddd//iinniitt'; see `SSaavviinngg OOppttiioonnss', below, for
details.
+o The DDD command history will be saved in
`$$HHOOMMEE//..dddddd//sseessssiioonnss//_s_e_s_s_i_o_n//hhiissttoorryy' instead of
`$$HHOOMMEE//..dddddd//hhiissttoorryy'; see `EEnntteerriinngg CCoommmmaannddss', above,
for details.
To make the current session inactive, open the _d_e_f_a_u_l_t
_s_e_s_s_i_o_n named `[[NNoonnee]]'; see below for details on opening
sessions.
If your program is running, or if you have opened a core
file, DDD can include a core file in the session such that
the debuggee data will be restored when re-opening it. To
get a core file, DDD typically must kill the debuggee.
This means that you cannot resume program execution after
DDD 3.1.1 1998-12-06 53
ddd(1) ddd(1)
saving a session. Depending on your architecture, other
options for getting a core file may also be available.
If a core file is _n_o_t to be included in the session, DDD
data displays are saved as _d_e_f_e_r_r_e_d; that is, they will be
restored as soon as program execution reaches the scope in
which they were created.
OOppeenniinngg SSeessssiioonnss
To resume a previously saved session, select `FFiillee-->>OOppeenn
SSeessssiioonn' and choose a session name from the list. After
clicking on `OOppeenn', the entire DDD state will be restored
from the given session.
The session named `[[NNoonnee]]' is the _d_e_f_a_u_l_t _s_e_s_s_i_o_n which is
active when starting DDD. To save options for default
sessions, open the default session and save options; see
`SSaavviinngg OOppttiioonnss' below for details.
If a the restored session includes a core dump, the pro-
gram being debugged will be in the same state at the time
the session was saved; in particular, you can examine the
program data. However, you will not be able to resume
program execution since the environment (open files,
resources, etc.) will be lost. However, you can restart
the program, re-using the restored breakpoints and data
displays.
Opening sessions also restores command definitions, but-
tons, display shortcuts and the source tab width. This
way, you can maintain a different set of definitions for
each session.
DDeelleettiinngg SSeessssiioonnss
To delete sessions that are no longer needed, select
`FFiillee-->>OOppeenn SSeessssiioonn' or `FFiillee-->>SSaavvee SSeessssiioonn'. Select the
sessions you want to delete and click on `DDeelleettee'.
The default session cannot be deleted.
SSttaarrttiinngg DDDDDD wwiitthh aa SSeessssiioonn
To start-up DDD with a given session named _s_e_s_s_i_o_n instead
of the default session, use
dddddd ----sseessssiioonn _s_e_s_s_i_o_n
There is also a shortcut that opens the session _s_e_s_s_i_o_n
and also invokes the inferior debugger on an executable
named _s_e_s_s_i_o_n (in case _s_e_s_s_i_o_n cannot be opened):
dddddd ==_s_e_s_s_i_o_n
DDD 3.1.1 1998-12-06 54
ddd(1) ddd(1)
There is no need to give further command-line options when
restarting a session, as they will be overridden by the
options saved in the session.
IINNTTEEGGRRAATTIINNGG DDDDDD
You can run DDD as an inferior debugger in other debugger
front-ends, combining their special abilities with those
of DDD.
GGeenneerraall IInnffoorrmmaattiioonn
To have DDD run as an inferior debugger in other front-
ends, set up your debugger front-end such that `dddddd ----ttttyy'
is invoked instead of the inferior debugger. When DDD is
invoked using the `----ttttyy' option, it enables its _T_T_Y
_i_n_t_e_r_f_a_c_e, taking additional debugger commands from stan-
dard input and forwarding debugger output to standard out-
put, just as if the inferior debugger had been invoked
directly. All remaining DDD functionality stays
unchanged.
In case your debugger front-end uses the GDB `--ffuullllnnaammee'
option to have GDB report source code positions, the
`----ttttyy' option is not required. DDD recognizes the
`--ffuullllnnaammee' option, finds that it has been invoked from a
debugger front-end and automatically enables the TTY
interface.
You may also invoke `dddddd ----ttttyy' directly, entering DDD
commands from your TTY, or use DDD as the end of a pipe,
controlled by a remote program. Be aware, however, that
the TTY interface does not support line editing and com-
mand completion and that DDD exits as soon as it detects
an EOF condition on its standard input. Also, do not try
to run DDD with DDD as inferior debugger.
Using DDD in TTY mode automatically disables some DDD win-
dows, because it is assumed that their facilities are pro-
vided by the remote program:
+o If DDD is invoked with the `----ttttyy' option, the debugger
console is initially disabled, as its facilities are
supposed to be provided by the integrating front-end.
+o If DDD is invoked with the `--ffuullllnnaammee' option, the
debugger console and the source window are initially
disabled, as their facilities are supposed to be pro-
vided by the integrating front-end.
In case of need, you can use the `VViieeww' menu to re-enable
these windows.
UUssiinngg DDDDDD wwiitthh GGNNUU EEmmaaccss
Use `MM--xx ggddbb' or `MM--xx ddbbxx' to start a debugging session.
At the prompt, enter `dddddd ----ttttyy', followed by `----ddbbxx' or
DDD 3.1.1 1998-12-06 55
ddd(1) ddd(1)
`----ggddbb', if required, and the name of the program to be
debugged. Proceed as usual.
UUssiinngg DDDDDD wwiitthh XXEEmmaaccss
Set the variable ggddbb--ccoommmmaanndd--nnaammee to ""dddddd"", by inserting
the following line in your $$HHOOMMEE//..eemmaaccss file or evaluating
it by pressing EESSCC :: (EESSCC EESSCC for XEmacs 19.13 and ear-
lier):
((sseettqq ggddbb--ccoommmmaanndd--nnaammee ""dddddd""))
Use `MM--xx ggddbb' or `MM--xx ggddbbssrrcc' to start a debugging ses-
sion. Proceed as usual.
UUssiinngg DDDDDD wwiitthh XXXXGGDDBB
Invoke xxxxggddbb as
xxxxggddbb --ddbb__nnaammee dddddd --ddbb__pprroommpptt ''((ggddbb)) ''
UUSSIINNGG DDDDDD WWIITTHH LLEESSSSTTIIFF
DDD 2.1.1 and later include a number of hacks that make
DDD run with _L_e_s_s_T_i_f_, a free Motif clone, without loss of
functionality. Since a DDD binary may be dynamically
bound and used with either an OSF/Motif or LessTif
library, these _l_e_s_s_t_i_f _h_a_c_k_s can be enabled and disabled
at run time.
Whether the _l_e_s_s_t_i_f _h_a_c_k_s are included at run-time depends
on the setting of the `lleessssTTiiffVVeerrssiioonn' resource. `lleessss--
TTiiffVVeerrssiioonn' indicates the LessTif version against which
DDD is linked. For LessTif version _x_._y, its value is _x
multiplied by 1000 plus _y--for instance, the value 9955
stands for LessTif 0.95 and the value 11000000 stands for
LessTif 1.0. To specify the version number of the LessTif
library at DDD invocation, you can also use the option
`----lleessssttiiff--vveerrssiioonn _v_e_r_s_i_o_n'.
The default value of the `lleessssTTiiffVVeerrssiioonn' resource is
derived from the LessTif library DDD was compiled against
(or 11000000 when compiled against OSF/Motif). Hence, you
normally don't need to worry about the value of this
resource. However, if you use a dynamically linked DDD
binary with a library other than the one DDD was compiled
against, you must specify the version number of the
library using this resource. (Unfortunately, DDD cannot
detect this at run-time.)
Here are a few scenarios to illustrate this scheme:
+o Your DDD binary was compiled against OSF/Motif, but you
use a LessTif 0.85 dynamic library instead. Invoke DDD
with `----lleessssttiiff--vveerrssiioonn 8855'.
DDD 3.1.1 1998-12-06 56
ddd(1) ddd(1)
+o Your DDD binary was compiled against LessTif, but you
use a OSF/Motif dynamic library instead. Invoke DDD
with `----lleessssttiiff--vveerrssiioonn 11000000'.
+o Your DDD binary was compiled against LessTif 0.85, and
you have upgraded to LessTif 0.90. Invoke DDD with
`----lleessssttiiff--vveerrssiioonn 9900'.
To find out the LessTif or OSF/Motif version DDD was com-
piled against, invoke DDD with the `----ccoonnffiigguurraattiioonn'
option.
In the DDD source, LessTif-specific hacks are controlled
by the string `lleessssttiiff__vveerrssiioonn'.
RREEMMOOTTEE DDEEBBUUGGGGIINNGG
It is possible to have the inferior debugger run on a
remote UNIX host. This is useful when the remote host has
a slow network connection or when DDD is available on the
local host only.
Furthermore, the inferior debugger may support debugging a
program on a remote host. This is useful when the infe-
rior debugger is not available on the remote host--for
instance, because the remote system does not have a gen-
eral purpose operating system powerful enough to run a
full-featured debugger.
UUssiinngg DDDDDD wwiitthh aa RReemmoottee DDeebbuuggggeerr
In order to run the inferior debugger on a remote host,
you need `rreemmsshh' (called `rrsshh' on BSD systems) access on
the remote host.
To run the debugger on a remote host _h_o_s_t_n_a_m_e, invoke DDD
as
dddddd ----hhoosstt _h_o_s_t_n_a_m_e _r_e_m_o_t_e_-_p_r_o_g_r_a_m
If your remote _u_s_e_r_n_a_m_e differs from the local username,
use
dddddd ----hhoosstt _h_o_s_t_n_a_m_e ----llooggiinn _u_s_e_r_n_a_m_e _r_e_m_o_t_e_-_p_r_o_g_r_a_m
or
dddddd ----hhoosstt _u_s_e_r_n_a_m_e@@_h_o_s_t_n_a_m_e _r_e_m_o_t_e_-_p_r_o_g_r_a_m
instead.
There are a few _c_a_v_e_a_t_s in remote mode:
+o The remote debugger is started in your remote home
directory. Hence, you must specify an absolute path
name for _r_e_m_o_t_e_-_p_r_o_g_r_a_m (or a path name relative to your
DDD 3.1.1 1998-12-06 57
ddd(1) ddd(1)
remote home directory). Same applies to remote core
files. Also, be sure to specify a remote process id
when debugging a running program.
+o The remote debugger is started non-interactively. Some
DBX versions have trouble with this. If you don't get a
prompt from the remote debugger, use the `----rrhhoosstt'
option instead of `----hhoosstt'. This will invoke the remote
debugger via an interactive shell on the remote host,
which may lead to better results.
Note: using `----rrhhoosstt', DDD invokes the inferior debugger
as soon as a shell prompt appears. The first output on
the remote host ending in a space character or `>>' and
not followed by a newline is assumed to be a shell
prompt. If necessary, adjust your shell prompt on the
remote host.
+o To run the remote program, DDD invokes an `xxtteerrmm' termi-
nal emulator on the remote host, giving your current
`DDIISSPPLLAAYY' environment variable as address. If the
remote host cannot invoke `xxtteerrmm', or does not have
access to your X display, start DDD with the `----nnoo--eexxeecc--
wwiinnddooww' option. The program input/output will then go
through the DDD debugger console.
+o In remote mode, all sources are loaded from the remote
host; file dialogs scan remote directories. This may
result in somewhat slower operation than normal.
+o To help you find problems due to remote execution, run
DDD with the `----ttrraaccee' option. This prints the shell
commands issued by DDD on standard error.
+o See also the `rrsshhCCoommmmaanndd' resource, below.
UUssiinngg DDDDDD wwiitthh aa RReemmoottee PPrrooggrraamm
The GDB debugger allows you to run the _d_e_b_u_g_g_e_d _p_r_o_g_r_a_m on
a remote machine (called _r_e_m_o_t_e _t_a_r_g_e_t), while GDB runs on
the local machine.
The section `RReemmoottee ddeebbuuggggiinngg' in the GDB documentation
contains all the details. Basically, the following steps
are required:
+o Transfer the executable to the remote target.
+o Start `ggddbbsseerrvveerr' on the remote target.
+o Start DDD using GDB on the local machine, and load the
same executable using the 'ffiillee' command.
+o Attach to the remote `ggddbbsseerrvveerr' using the 'ttaarrggeett
rreemmoottee' command.
DDD 3.1.1 1998-12-06 58
ddd(1) ddd(1)
The local `..ggddbbiinniitt' file is useful for setting up direc-
tory search paths, etc.
Of course, you can also combine DDD remote mode and GDB
remote mode, running DDD, GDB, and the debugged program
each on a different machine.
RROOOOTT DDEEBBUUGGGGIINNGG
Sometimes, you may require to debug programs with root
privileges, but without actually logging in as root. This
is usually done by installing the debugger _s_e_t_u_i_d _r_o_o_t,
that is, having the debugger run with root privileges.
For security reasons, you cannot install DDD as a setuid
program; DDD invokes shell commands and even shell
scripts, such that all known problems of setuid shell
scripts apply. Instead, you should invoke DDD such that a
_s_e_t_u_i_d copy of the inferior debugger is used.
Here is an example. Have a _s_e_t_u_i_d _r_o_o_t copy of GDB
installed as `rroooottggddbb'. Then invoke
dddddd ----ddeebbuuggggeerr rroooottggddbb
to debug programs with root privileges.
Since a program like `rroooottggddbb' grants root privileges to
any invoking user, you should give it very limited access.
RREESSOOUURRCCEESS
DDD understands all of the core X Toolkit resource names
and classes. The following resources are specific to DDD.
SSeettttiinngg DDDDDD FFoonnttss
DDD uses the following resources to set up its fonts:
ddeeffaauullttFFoonntt ((class Font)
The default DDD font to use for labels, menus, but-
tons, etc. The font is specified as an X font
spec, where the initial specification after `_F_a_m_-
_i_l_y'. Default value is `hheellvveettiiccaa--bboolldd'.
To set the default DDD font to, say, hheellvveettiiccaa
mmeeddiiuumm, insert a line
DDdddd**ddeeffaauullttFFoonntt:: hheellvveettiiccaa--mmeeddiiuumm
in your `$$HHOOMMEE//..dddddd//iinniitt' file.
ddeeffaauullttFFoonnttSSiizzee ((class FontSize)
The size of the default DDD font, in 1/10 points.
This resource overrides any font size specification
in the `ddeeffaauullttFFoonntt' resource (see above). The
default value is 112200 for a 12.0 point font.
DDD 3.1.1 1998-12-06 59
ddd(1) ddd(1)
vvaarriiaabblleeWWiiddtthhFFoonntt ((class Font)
The variable width DDD font to use for help texts
and messages. The font is specified as an X font
spec, where the initial specification after `_F_a_m_-
_i_l_y'. Defaults to `hheellvveettiiccaa--mmeeddiiuumm--rr'.
To set the variable width DDD font family to, say,
ttiimmeess, insert a line
DDdddd**ffiixxeeddWWiiddtthhFFoonntt:: ttiimmeess--mmeeddiiuumm
in your `$$HHOOMMEE//..dddddd//iinniitt' file.
vvaarriiaabblleeWWiiddtthhFFoonnttSSiizzee ((class FontSize)
The size of the variable width DDD font, in 1/10
points. This resource overrides any font size
specification in the `vvaarriiaabblleeWWiiddtthhFFoonntt' resource
(see above). The default value is 112200 for a 12.0
point font.
ffiixxeeddWWiiddtthhFFoonntt ((class Font)
The fixed width DDD font to use for source code,
the debugger console, text fields, data displays,
and the execution window. The font is specified as
an X font spec, where the initial specification
after `_F_a_m_i_l_y'. Defaults to `lluucciiddaattyyppeewwrriitteerr--
mmeeddiiuumm'.
To set the fixed width DDD font family to, say,
ccoouurriieerr, insert a line
DDdddd**ffiixxeeddWWiiddtthhFFoonntt:: ccoouurriieerr--mmeeddiiuumm
in your `$$HHOOMMEE//..dddddd//iinniitt' file.
ffiixxeeddWWiiddtthhFFoonnttSSiizzee ((class FontSize)
The size of the fixed width DDD font, in 1/10
points. This resource overrides any font size
specification in the `ffiixxeeddWWiiddtthhFFoonntt' resource (see
above). The default value is 112200 for a 12.0 point
font.
As all font size resources have the same class (and by
default the same value), you can easily change the default
DDD font size to, say, 9.0 points by inserting a line
DDdddd**FFoonnttSSiizzee:: 9900
in your `$$HHOOMMEE//..dddddd//iinniitt' file.
To find out your favorite font size, try `----ffoonnttssiizzee
_S_I_Z_E'. This also sets all font sizes to _S_I_Z_E.
If you want to set the fonts of specific items, see the
DDD 3.1.1 1998-12-06 60
ddd(1) ddd(1)
`DDdddd' application defaults file for instructions.
SSeettttiinngg DDDDDD CCoolloorrss
These are the most important color resources used in DDD:
DDdddd**ffoorreeggrroouunndd:: bbllaacckk
DDdddd**bbaacckkggrroouunndd:: ggrreeyy
DDdddd**XXmmTTeexxtt..bbaacckkggrroouunndd:: ggrreeyy9966
DDdddd**XXmmTTeexxttFFiieelldd..bbaacckkggrroouunndd:: ggrreeyy9966
DDdddd**GGrraapphhEEddiitt..bbaacckkggrroouunndd:: ggrreeyy9966
DDdddd**XXmmLLiisstt..bbaacckkggrroouunndd:: ggrreeyy9966
DDdddd**ggrraapphh__eeddiitt..nnooddeeCCoolloorr:: bbllaacckk
DDdddd**ggrraapphh__eeddiitt..eeddggeeCCoolloorr:: bblluuee44
DDdddd**ggrraapphh__eeddiitt..sseelleeccttCCoolloorr:: bbllaacckk
DDdddd**ggrraapphh__eeddiitt..ggrriiddCCoolloorr:: bbllaacckk
DDdddd**ggrraapphh__eeddiitt..ffrraammeeCCoolloorr:: ggrreeyy5500
DDdddd**ggrraapphh__eeddiitt..oouuttlliinneeCCoolloorr:: ggrreeyy5500
You can copy and modify the appropriate resources to your
`$$HHOOMMEE//..dddddd//iinniitt' file. For colors within the data dis-
play, things are slightly more complicated--see the
`vvssllDDeeffss' resource, below.
GGeenneerraall PPrreeffeerreenncceess
The following resources determine DDD general behavior.
bbuuttttoonnTTiippss ((class TTiippss))
Whether button tips are enabled (`oonn', default) or
not (`ooffff'). Button tips are helpful for novices,
but may be distracting for experienced users.
bbuuttttoonnDDooccss ((class DDooccss))
Whether the display of button hints in the status
line is enabled (`oonn', default) or not (`ooffff').
cchheecckkGGrraabbss ((class CChheecckkGGrraabbss))
When debugging a modal X application, DDD may
interrupt it while it has grabbed the pointer, mak-
ing further interaction impossible. If this is
`oonn' (default), DDD will check after each interac-
tion whether the pointer is grabbed. If this is
so, DDD will automatically continue execution of
debugged program.
DDD 3.1.1 1998-12-06 61
ddd(1) ddd(1)
cchheecckkGGrraabbDDeellaayy ((class CChheecckkGGrraabbDDeellaayy))
The time to wait (in ms) after a debugger command
before checking for a grabbed pointer. If DDD sees
some pointer event within this delay, the pointer
cannot be grabbed and an explicit check for a
grabbed pointer is unnecessary. Default is 55000000,
or 5 seconds.
cchheecckkOOppttiioonnss ((class CChheecckkOOppttiioonnss))
Every _N seconds, where _N is the value of this
resource, DDD checks whether the options file has
changed. Default is 3300, which means that every 30
seconds, DDD checks for the options file. Setting
this resource to 00 disables checking for changed
option files.
ccuuttCCooppyyPPaasstteeBBiinnddiinnggss ((class BBiinnddiinnggSSttyyllee))
Controls the key bindings for cut, copy, and paste
operations.
+o If this is `MMoottiiff' (default), Cut/Copy/Paste is
on SShhiifftt++DDeell/CCttrrll++IInnss/SShhiifftt++IInnss. This is confor-
mant to the Motif style guide.
+o If this is `KKDDEE', Cut/Copy/Paste is on
CCttrrll++XX/CCttrrll++CC/CCttrrll++VV. This is conformant to the
KDE style guide. Note that this means that
CCttrrll++CC no longer interrupts the debuggee; use EESSCC
instead.
ffiilltteerrFFiilleess ((class FFiilltteerrFFiilleess))
If this is `oonn' (default), DDD filters files when
opening execution files, core dumps, or source
files, such that the selection shows only suitable
files. This requires that DDD opens each file,
which may take time. If this is `ooffff', DDD always
presents all available files.
gglloobbaallTTaabbCCoommpplleettiioonn ((class GGlloobbaallTTaabbCCoommpplleettiioonn))
If this is `oonn' (default), the TTAABB key completes
arguments in all windows. If this is `ooffff', the
TTAABB key completes arguments in the debugger console
only.
ggrraabbAAccttiioonn ((class ggrraabbAAccttiioonn))
The action to take after having detected a grabbed
mouse pointer. This is a list of newline-separated
commands. Default is `ccoonntt', meaning to continue
the debuggee. Other possible choices include
`kkiillll' (killing the debuggee) or `qquuiitt' (exiting
DDD).
ggrraabbAAccttiioonnDDeellaayy ((class ggrraabbAAccttiioonnDDeellaayy))
The time to wait (in ms) before taking an action
DDD 3.1.1 1998-12-06 62
ddd(1) ddd(1)
due to having detected a grabbed pointer. During
this delay, a working dialog pops up telling the
user about imminent execution of the grab action
(see the `ggrraabbAAccttiioonn' resource, above). If the
pointer grab is released within this delay, the
working dialog pops down and no action is taken.
This is done to exclude pointer grabs from sources
other than the debugged program (including DDD).
Default is 1100000000, or 10 seconds.
ggrroouuppIIccoonniiffyy ((class GGrroouuppIIccoonniiffyy))
If this is `oonn', (un)iconifying any DDD window
causes all other DDD windows to (un)iconify as
well. Default is `ooffff', meaning that each DDD win-
dow can be iconified on its own.
ssaavveeHHiissttoorryyOOnnEExxiitt ((class SSaavveeHHiissttoorryyOOnnEExxiitt))
If `oonn' (default), the command history is automati-
cally saved when DDD exits.
sseelleeccttAAllllBBiinnddiinnggss ((class BBiinnddiinnggSSttyyllee))
Controls the key bindings for the select all opera-
tion.
+o If this is `MMoottiiff', Select All on SShhiifftt++CCttrrll++AA.
+o If this is `KKDDEE' (default), Select All is on
CCttrrll++AA. This is conformant to the KDE style
guide. Note that this means that CCttrrll++AA no
longer moves the cursor to the beginning of a
line; use the HHOOMMEE key instead.
ssppllaasshhSSccrreeeenn ((class SSppllaasshhSSccrreeeenn))
If `oonn' (default), show a DDD splash screen upon
start-up.
ssppllaasshhSSccrreeeennCCoolloorrKKeeyy ((class CCoolloorrKKeeyy))
The color key to use for the DDD splash screen.
Possible values include:
+o `cc' (default) for a color visual,
+o `gg' for a multi-level greyscale visual,
+o `gg44' for a 4-level greyscale visual, and
+o `mm' for a dithered monochrome visual.
+o `bbeesstt' chooses the best visual available for your
display.
Note: if DDD runs on a monochrome display, or if
DDD was compiled without the XPM library, only the
monochrome version (`mm') can be shown.
DDD 3.1.1 1998-12-06 63
ddd(1) ddd(1)
ssttaarrttuuppTTiippss ((class SSttaarrttuuppTTiippss))
Whether a tip of the day is to be shown at startup
(`oonn', default) or not (`ooffff').
ssttaarrttuuppTTiippCCoouunntt ((class SSttaarrttuuppTTiippCCoouunntt))
The number _n of the tip of the day to be shown at
startup. See also the `ttiipp_n' resources.
ssuupppprreessssWWaarrnniinnggss ((class SSuupppprreessssWWaarrnniinnggss))
If `oonn', X warnings are suppressed. This is some-
times useful for executables that were built on a
machine with a different X or Motif configuration.
By default, this is `ooffff'.
ttiipp_n (_c_l_a_s_s TTiipp))
The tip of the day numbered _n (a string).
mmaaxxUUnnddooDDeepptthh ((class MMaaxxUUnnddooDDeepptthh))
The maximum number of entries in the undo buffer.
This limits the number of actions that can be
undone, and the number of states that can be shown
in historic mode. Useful for limiting DDD memory
usage. A negative value (default) means to place
no limit.
mmaaxxUUnnddooSSiizzee ((class MMaaxxUUnnddooSSiizzee))
The maximum memory usage (in bytes) of the undo
buffer. Useful for limiting DDD memory usage. A
negative value means to place no limit. Default is
22000000000000.
uunniiccoonniiffyyWWhheennRReeaaddyy ((class UUnniiccoonniiffyyWWhheennRReeaaddyy))
If this is `oonn' (default), the DDD windows are uni-
conified automatically whenever GDB becomes ready.
This way, you can iconify DDD during some longer
operation and have it uniconify itself as soon as
the program stops. Setting this to `ooffff' leaves
the DDD windows iconified.
vvaalluueeTTiippss ((class TTiippss))
Whether value tips are enabled (`oonn', default) or
not (`ooffff'). Value tips affect DDD performance and
may be distracting for some experienced users.
vvaalluueeDDooccss ((class DDooccss))
Whether the display of variable values in the sta-
tus line is enabled (`oonn', default) or not (`ooffff').
wwaarrnnIIffLLoocckkeedd ((class WWaarrnnIIffLLoocckkeedd))
Whether to warn if multiple DDD instances are run-
ning (`oonn') or not (`ooffff', default).
SSoouurrccee WWiinnddooww
The following resources determine the DDD source window.
DDD 3.1.1 1998-12-06 64
ddd(1) ddd(1)
ccaacchheeGGllyypphhIImmaaggeess ((class CCaacchheeMMaacchhiinneeCCooddee))
Whether to cache (share) glyph images (`oonn') or not
(`ooffff'). Caching glyph images requires less X
resources, but has been reported to fail with Motif
2.1 on XFree86 servers. Default is `ooffff' for Motif
2.1 or later on Linux machines, and `oonn' otherwise.
ccaacchheeMMaacchhiinneeCCooddee ((class CCaacchheeMMaacchhiinneeCCooddee))
Whether to cache disassembled machine code (`oonn',
default) or not (`ooffff'). Caching machine code
requires more memory, but makes DDD run faster.
ccaacchheeSSoouurrcceeFFiilleess ((class CCaacchheeSSoouurrcceeFFiilleess))
Whether to cache source files (`oonn', default) or
not (`ooffff'). Caching source files requires more
memory, but makes DDD run faster.
ddiissaasssseemmbbllee ((class DDiissaasssseemmbbllee))
If this is `oonn', the source code is automatically
disassembled. The default is `ooffff'. See also the
`----ddiissaasssseemmbbllee' and `----nnoo--ddiissaasssseemmbbllee' options,
below.
ddiissppllaayyGGllyypphhss ((class DDiissppllaayyGGllyypphhss))
If this is `oonn', the current execution position and
breakpoints are displayed as glyphs; otherwise,
they are shown through characters in the text. The
default is `oonn'. See also the `----ggllyypphhss' and
`----nnoo--ggllyypphhss' options, below.
ddiissppllaayyLLiinneeNNuummbbeerrss ((class DDiissppllaayyLLiinneeNNuummbbeerrss))
If this is `oonn', lines in the source text are pre-
fixed with their respective line number. The
default is `ooffff'.
ffiinnddCCaasseeSSeennssiittiivvee ((class FFiinnddCCaasseeSSeennssiittiivvee))
If this is `oonn' (default), the `FFiinndd' commands are
case-sensitive. Otherwise, occurrences are found
regardless of case.
ffiinnddWWoorrddssOOnnllyy ((class FFiinnddWWoorrddssOOnnllyy))
If this is `oonn' (default), the `FFiinndd' commands find
complete words only. Otherwise, arbitrary occur-
rences are found.
ggllyypphhUUppddaatteeDDeellaayy ((class GGllyypphhUUppddaatteeDDeellaayy))
A delay (in ms) that says how much time to wait
before updating glyphs while scrolling the source
text. A small value results in glyphs being
scrolled with the text, a large value disables
glyphs while scrolling and makes scrolling faster.
Default: 1100.
DDD 3.1.1 1998-12-06 65
ddd(1) ddd(1)
iinnddeennttCCooddee ((class IInnddeenntt))
The number of columns to indent the machine code,
such that there is enough place to display break-
point locations. Default: 44.
iinnddeennttSSoouurrccee ((class IInnddeenntt))
The number of columns to indent the source code,
such that there is enough place to display break-
point locations. Default: 00.
iinnddeennttSSccrriipptt ((class IInnddeenntt))
The minimum indentation for script languages, such
as Perl and Python. Default: 44.
lliinneeNNuummbbeerrWWiiddtthh ((class LLiinneeNNuummbbeerrWWiiddtthh))
The number of columns to use for line numbers (if
displaying line numbers is enabled). Line numbers
wider than this value extend into the breakpoint
space. Default: 44.
lliinneessAAbboovveeCCuurrssoorr ((class LLiinneessAAbboovveeCCuurrssoorr))
The minimum number of lines to show before the cur-
rent location. Default is 22.
lliinneessBBeelloowwCCuurrssoorr ((class LLiinneessBBeelloowwCCuurrssoorr))
The minimum number of lines to show after the cur-
rent location. Default is 33.
mmaaxxDDiissaasssseemmbbllee ((class MMaaxxDDiissaasssseemmbbllee))
Maximum number of bytes to disassemble (default:
225566). If this is zero, the entire current function
is disassembled.
mmaaxxGGllyypphhss ((class MMaaxxGGllyypphhss))
The maximum number of glyphs to be displayed
(default: 1100). Raising this value causes more
glyphs to be allocated, possibly wasting resources
that are never needed.
ssoouurrcceeEEddiittiinngg ((class SSoouurrcceeEEddiittiinngg))
If this is `oonn', the displayed source code becomes
editable. This is an experimental feature and may
become obsolete in future DDD releases. Default if
`ooffff'.
ttaabbWWiiddtthh ((class TTaabbWWiiddtthh))
The tab width used in the source window (default:
88)
uusseeSSoouurrcceePPaatthh ((class UUsseeSSoouurrcceePPaatthh))
If this is `ooffff' (default), the inferior debugger
refers to source code locations only by their base
names. If this is `oonn' (default), DDD uses the
full source code paths.
DDD 3.1.1 1998-12-06 66
ddd(1) ddd(1)
WWiinnddooww CCrreeaattiioonn aanndd LLaayyoouutt
The following resources determine DDD window creation and
layout as well as the interaction with the X window man-
ager.
aauuttooRRaaiisseeTTooooll ((class AAuuttooRRaaiisseeTTooooll))
If `oonn' (default), DDD will always keep the command
tool on top of other DDD windows. If this setting
interferes with your window manager, or if your
window manager keeps the command tool on top any-
way, set this resource to `ooffff'.
aauuttooRRaaiisseeMMeennuu ((class AAuuttooRRaaiisseeMMeennuu))
If `oonn' (default), DDD will always keep the pull
down menu on top of the DDD main window. If this
setting interferes with your window manager, or if
your window manager does not auto-raise windows,
set this resource to `ooffff':
DDdddd**aauuttooRRaaiisseeMMeennuu:: ooffff
ccoolloorrWWMMIIccoonnss ((class CCoolloorrWWMMIIccoonnss))
If `oonn' (default), DDD uses multi-color icons. If
your window manager has trouble with multi-color
icons, set this resource to `ooffff' and DDD will use
black-and-white icons instead.
ddeeccoorraatteeTTooooll ((class DDeeccoorraattee))
This resource controls the decoration of the com-
mand tool.
+o If this is `ooffff', the command tool is created as
a _t_r_a_n_s_i_e_n_t _w_i_n_d_o_w. Several window managers keep
transient windows automatically on top of their
parents, which is appropriate for the command
tool. However, your window manager may be con-
figured not to decorate transient windows, which
means that you cannot easily move the command
tool around.
+o If this is `oonn', DDD realizes the command tool as
a _t_o_p_-_l_e_v_e_l _w_i_n_d_o_w. Such windows are always dec-
orated by the window manager. However, top-level
windows are not automatically kept on top of
other windows, such that you may wish to set the
`aauuttooRRaaiisseeTTooooll' resource, too.
+o If this is `aauuttoo' (default), DDD checks whether
the window manager decorates transients. If yes,
the command tool is realized as a transient win-
dow (as in the `ooffff' setting); if no, the command
tool is realized as a top-level window (as in the
`oonn' setting). Hence, the command tool is always
DDD 3.1.1 1998-12-06 67
ddd(1) ddd(1)
decorated using the "best" method, but the extra
check takes some time.
ooppeennDDaattaaWWiinnddooww ((class WWiinnddooww))
If `ooffff' (default), the data window is closed upon
start-up.
ooppeennDDeebbuuggggeerrCCoonnssoollee ((class WWiinnddooww))
If `ooffff', the debugger console is closed upon
start-up.
ooppeennSSoouurrcceeWWiinnddooww ((class WWiinnddooww))
If `ooffff', the source window is closed upon start-
up.
sseeppaarraatteeDDaattaaWWiinnddooww ((class SSeeppaarraattee))
If `oonn', the data window and the debugger console
are realized in different top-level windows. If
`ooffff' (default), the data window is attached to the
debugger console. See also the `----aattttaacchh--wwiinnddoowwss'
and `----aattttaacchh--ddaattaa--wwiinnddooww' options, below.
sseeppaarraatteeEExxeeccWWiinnddooww ((class SSeeppaarraattee))
If `oonn', the debugged program is executed in a sep-
arate execution window. If `ooffff' (default), the
debugged program is executed in the console window.
See also the `----eexxeecc--wwiinnddooww' and `----nnoo--eexxeecc--wwiinnddooww'
options, below.
sseeppaarraatteeSSoouurrcceeWWiinnddooww ((class SSeeppaarraattee))
If `oonn', the source window and the debugger console
are realized in different top-level windows. If
`ooffff' (default), the source window is attached to
the debugger console. See also the `----aattttaacchh--
wwiinnddoowwss' and `----aattttaacchh--ssoouurrccee--wwiinnddooww' options,
below.
ssttaattuussAAttBBoottttoomm ((class SSttaattuussAAttBBoottttoomm))
If `oonn' (default), the status line is placed at the
bottom of the DDD source window. If `ooffff', the
status line is placed at the top of the DDD source
window (as in DDD 1.x). See also the `----ssttaattuuss--aatt--
bboottttoomm' and `----ssttaattuuss--aatt--ttoopp' options, below.
ssttiicckkyyTTooooll ((class SSttiicckkyyTTooooll))
If `oonn' (default), the command tool automatically
follows every movement of the source window. When-
ever the source window is moved, the command tool
is moved by the same offset such that its position
relative to the source window remains unchanged.
If `ooffff', the command tool does not follow source
window movements.
DDD 3.1.1 1998-12-06 68
ddd(1) ddd(1)
ttrraannssiieennttDDiiaallooggss ((class TTrraannssiieennttDDiiaallooggss))
If `oonn' (default), all dialogs are created as tran-
sient windows--that is, they always stay on top of
the main DDD windows, and they iconify with it. If
`ooffff', the important selection dialogs, such as the
breakpoint and display editors, are created as top-
level windows on their own, and may be obscured by
the DDD main windows.
DDeebbuuggggeerr SSeettttiinnggss
The following resources determine the inferior debugger.
aauuttooCCoommmmaannddss ((class AAuuttooCCoommmmaannddss))
If this is `oonn' (default), each line output by the
inferior debugger beginning with the value of the
`aauuttooCCoommmmaannddPPrreeffiixx' resource (see below) will be
interpreted as DDD command and executed. Useful
for user-defined commands; see `UUSSEERR--DDEEFFIINNEEDD CCOOMM--
MMAANNDDSS', above.
aauuttooCCoommmmaannddPPrreeffiixx ((class AAuuttooCCoommmmaannddPPrreeffiixx))
The prefix for auto-commands. By default, an empty
string, meaning to generate a new prefix for each
DDD session. If this is set to `dddddd:: ', for exam-
ple, each GDB output in the form `dddddd:: _c_o_m_m_a_n_d'
will cause DDD to execute _c_o_m_m_a_n_d.
aauuttooDDeebbuuggggeerr ((class AAuuttooDDeebbuuggggeerr))
If this is `oonn' (default), DDD will attempt to
determine the debugger type from its arguments,
possibly overriding the `ddeebbuuggggeerr' resource (see
below). If this is `ooffff', DDD will invoke the
debugger specified by the `ddeebbuuggggeerr' resource
regardless of DDD arguments.
bblloocckkTTTTYYIInnppuutt ((class BBlloocckkTTTTYYIInnppuutt))
Whether DDD should block when reading data from the
inferior debugger via the pseudo-tty interface.
Some systems _r_e_q_u_i_r_e this, such as Linux with libc
5.4.33 and earlier; set it to `oonn'. Some other
systems _p_r_o_h_i_b_i_t this, such as Linux with GNU libc
6 and later; set it to `ooffff'. The value `aauuttoo'
(default) will always select the "best" choice
(that is, the best choice known to the DDD develop-
ers).
ddbbxxIInniittCCoommmmaannddss ((class IInniittCCoommmmaannddss))
This string contains a list of newline-separated
commands that are initially sent to DBX. By
default, it is empty.
Do not use this resource to customize DBX; instead,
use a personal `$$HHOOMMEE//..ddbbxxiinniitt' or `$$HHOOMMEE//..ddbbxxrrcc'
file. See your DBX documentation for details.
DDD 3.1.1 1998-12-06 69
ddd(1) ddd(1)
ddbbxxSSeettttiinnggss ((class SSeettttiinnggss))
This string contains a list of newline-separated
commands that are also initially sent to DBX. By
default, it is empty.
ddeebbuuggggeerr ((class DDeebbuuggggeerr))
The type of the inferior debugger to invoke (`ggddbb',
`ddbbxx', `xxddbb', `jjddbb', `ppyyddbb', or `ppeerrll'). This
resource is usually set through the `----ggddbb',
`----ddbbxx', `----xxddbb', `----jjddbb', `----ppyyddbb', and `----ppeerrll',
options; see below for details.
ddeebbuuggggeerrCCoommmmaanndd ((class DDeebbuuggggeerrCCoommmmaanndd))
The name under which the inferior debugger is to be
invoked. If this string is empty, the debugger
type (`ddeebbuuggggeerr' resource) is used. This resource
is usually set through the `----ddeebbuuggggeerr' option; see
below for details.
ddeebbuuggggeerrHHoosstt ((class DDeebbuuggggeerrHHoosstt))
The host where the inferior debugger is to be exe-
cuted; an empty string (default) means the local
host. See the `----hhoosstt' option, below, and `RREEMMOOTTEE
DDEEBBUUGGGGIINNGG', above.
ddeebbuuggggeerrHHoossttLLooggiinn ((class DDeebbuuggggeerrHHoossttLLooggiinn))
The login user name on the remote host; an empty
string (default) means using the local user name.
See the `----llooggiinn' option, below, and `RREEMMOOTTEE DDEEBBUUGG--
GGIINNGG', above.
ddeebbuuggggeerrRRHHoosstt ((class DDeebbuuggggeerrRRHHoosstt))
The host where the inferior debugger is to be exe-
cuted; an empty string (default) means to use the
`ddeebbuuggggeerrHHoosstt' resource. In contrast to `ddeebbuuggggeerr--
HHoosstt', using this resource causes DDD to login
interactively to the remote host and invoke the
inferior debugger from the remote shell. See also
the `----rrhhoosstt' option, below, and `RREEMMOOTTEE DDEEBBUUGG--
GGIINNGG', above.
ddiissppllaayyTTiimmeeoouutt ((class DDiissppllaayyTTiimmeeoouutt))
The time (in ms) to wait for the inferior debugger
to finish a partial display information. Default
is 22000000.
ffuullllNNaammeeMMooddee ((class TTTTYYMMooddee))
If this is `oonn', DDD reports the current source
position on standard output in GDB `--ffuullllnnaammee' for-
mat. As a side effect, the source window is dis-
abled by default. See also the `----ffuullllnnaammee'
option, below.
DDD 3.1.1 1998-12-06 70
ddd(1) ddd(1)
ggddbbIInniittCCoommmmaannddss ((class IInniittCCoommmmaannddss))
This string contains a list of newline-separated
commands that are initially sent to GDB. As a
side-effect, all settings specified in this
resource are considered fixed and cannot be changed
through the GDB settings panel, unless preceded by
white space. By default, the `ggddbbIInniittCCoommmmaannddss'
resource contains some settings vital to DDD:
DDdddd**ggddbbIInniittCCoommmmaannddss:: \\
sseett hheeiigghhtt 00\\nn\\
sseett wwiiddtthh 00\\nn\\
sseett vveerrbboossee ooffff\\nn\\
sseett pprroommpptt ((ggddbb)) \\nn
While the `sseett hheeiigghhtt', `sseett wwiiddtthh', and `sseett
pprroommpptt' settings are fixed, the `sseett vveerrbboossee' set-
tings can be changed through the GDB settings panel
(although being reset upon each new DDD invoca-
tion).
Do not use this resource to customize GDB; instead,
use a personal `$$HHOOMMEE//..ggddbbiinniitt' file. See your GDB
documentation for details.
ggddbbSSeettttiinnggss ((class SSeettttiinnggss))
This string contains a list of newline-separated
commands that are also initially sent to GDB. Its
default value is
DDdddd**ggddbbSSeettttiinnggss:: \\
sseett pprriinntt aassmm--ddeemmaannggllee oonn\\nn
This resource is used to save and restore the
debugger settings.
jjddbbIInniittCCoommmmaannddss ((class IInniittCCoommmmaannddss))
This string contains a list of newline-separated
commands that are initially sent to JDB. This
resource may be used to customize JDB. By default,
it is empty.
jjddbbSSeettttiinnggss ((class SSeettttiinnggss))
This string contains a list of newline-separated
commands that are also initially sent to JDB. By
default, it is empty.
This resource is used by DDD to save and restore
JDB settings.
ooppeennSSeelleeccttiioonn ((class OOppeennSSeelleeccttiioonn))
If this is `oonn', DDD invoked without argument
checks whether the current selection or clipboard
contains the file name or URL of an executable pro-
gram. If this is so, DDD will automatically open
DDD 3.1.1 1998-12-06 71
ddd(1) ddd(1)
this program for debugging. If this resource is
`ooffff' (default), DDD invoked without arguments will
always start without a debugged program.
ppeerrllIInniittCCoommmmaannddss ((class IInniittCCoommmmaannddss))
This string contains a list of newline-separated
commands that are initially sent to the Perl debug-
ger. By default, it is empty.
This resource may be used to customize the Perl
debugger.
ppyyddbbSSeettttiinnggss ((class SSeettttiinnggss))
This string contains a list of newline-separated
commands that are also initially sent to the Perl
debugger. By default, it is empty.
This resource is used by DDD to save and restore
Perl debugger settings.
ppyyddbbIInniittCCoommmmaannddss ((class IInniittCCoommmmaannddss))
This string contains a list of newline-separated
commands that are initially sent to PYDB. By
default, it is empty.
This resource may be used to customize PYDB.
ppyyddbbSSeettttiinnggss ((class SSeettttiinnggss))
This string contains a list of newline-separated
commands that are also initially sent to PYDB. By
default, it is empty.
This resource is used by DDD to save and restore
PYDB settings.
ppoossiittiioonnTTiimmeeoouutt ((class PPoossiittiioonnTTiimmeeoouutt))
The time (in ms) to wait for the inferior debugger
to finish a partial position information. Default
is 550000.
qquueessttiioonnTTiimmeeoouutt ((class QQuueessttiioonnTTiimmeeoouutt))
The time (in seconds) to wait for the inferior
debugger to reply. Default is 1100.
rrHHoossttIInniittCCoommmmaannddss ((class RRHHoossttIInniittCCoommmmaannddss))
These commands are initially executed in a remote
interactive session, using the `----rrhhoosstt' option.
By default, it sets up the remote terminal such
that it suits DDD:
DDdddd**rrHHoossttIInniittCCoommmmaannddss:: ssttttyy --eecchhoo --oonnllccrr
You may add other commands here--for instance, to
set the executable path or to invoke a suitable
shell.
DDD 3.1.1 1998-12-06 72
ddd(1) ddd(1)
ssoouurrcceeIInniittCCoommmmaannddss ((class SSoouurrcceeIInniittCCoommmmaannddss))
If `oonn' (default), DDD writes all GDB initializa-
tion commands into a temporary file and makes GDB
read this file, rather than sending each initial-
ization command separately. This results in faster
startup (especially if you have several user-
defined commands). If `ooffff', DDD makes GDB process
each command separately.
ssyynncchhrroonnoouussDDeebbuuggggeerr ((class SSyynncchhrroonnoouussDDeebbuuggggeerr))
If `oonn', X events are not processed while the
debugger is busy. This may result in slightly bet-
ter performance on single-processor systems. See
also the `----ssyynncc--ddeebbuuggggeerr' option, below.
tteerrmmiinnaatteeOOnnEEOOFF ((class TTeerrmmiinnaatteeOOnnEEOOFF))
If `oonn', DDD terminates the inferior debugger when
DDD detects an EOF condition (that is, as soon as
the inferior debugger closes its output channel).
This was the default behavior in DDD 2.x and ear-
lier. If `ooffff' (default), DDD takes no special
action.
ttttyyMMooddee ((class TTTTYYMMooddee))
If `oonn', enable TTY interface, taking additional
debugger commands from standard input and forward-
ing debugger output on standard output. As a side
effect, the debugger console is disabled by
default. See also the `----ttttyy' and `----ffuullllnnaammee'
options, below.
uusseeTTTTYYCCoommmmaanndd ((class UUsseeTTTTYYCCoommmmaanndd))
If `oonn', use the GDB `ttttyy' command for redirecting
input/output to the separate execution window. If
`ooffff', use explicit redirection through shell redi-
rection operators `<<' and `>>'. The default is
`ooffff' (explicit redirection), since on some sys-
tems, the `ttttyy' command does not work properly on
some GDB versions.
xxddbbIInniittCCoommmmaannddss ((class IInniittCCoommmmaannddss))
This string contains a list of newline-separated
commands that are initially sent to XDB. By
default, it is empty.
Do not use this resource to customize DBX; instead,
use a personal `$$HHOOMMEE//..xxddbbrrcc' file. See your XDB
documentation for details.
xxddbbSSeettttiinnggss ((class SSeettttiinnggss))
This string contains a list of newline-separated
commands that are also initially sent to XDB. By
default, it is empty.
DDD 3.1.1 1998-12-06 73
ddd(1) ddd(1)
UUsseerr--ddeeffiinneedd BBuuttttoonnss
The following resources can be used to create and control
tool bars and user-defined buttons.
aaccttiivveeBBuuttttoonnCCoolloorrKKeeyy ((class CCoolloorrKKeeyy))
The XPM color key to use for the images of active
buttons (entered or armed). `cc' means color, `gg'
(default) means grey, and `mm' means monochrome.
bbuuttttoonnCCaappttiioonnss ((class BBuuttttoonnCCaappttiioonnss))
Whether the tool bar buttons should be shown using
captions (`oonn', default) or not (`ooffff'). If nei-
ther captions nor images are enabled, tool bar but-
tons are shown using ordinary labels. See also
`bbuuttttoonnIImmaaggeess', below.
bbuuttttoonnCCaappttiioonnGGeeoommeettrryy ((class BBuuttttoonnCCaappttiioonnGGeeoommeettrryy))
The geometry of the caption subimage within the
button icons. Default is `2299xx77++00--00'.
bbuuttttoonnIImmaaggeess ((class BBuuttttoonnIImmaaggeess))
Whether the tool bar buttons should be shown using
images (`oonn', default) or not (`ooffff'). If neither
captions nor images are enabled, tool bar buttons
are shown using ordinary labels. See also `bbuuttttoonn--
CCaappttiioonnss', above.
bbuuttttoonnIImmaaggeeGGeeoommeettrryy ((class BBuuttttoonnIImmaaggeeGGeeoommeettrryy))
The geometry of the image within the button icon.
Default is `2255xx2211++22++00'.
bbuuttttoonnCCoolloorrKKeeyy ((class CCoolloorrKKeeyy))
The XPM color key to use for the images of inactive
buttons (non-entered or insensitive). `cc' means
color, `gg' (default) means grey, and `mm' means
monochrome.
ccoommmmaannddTToooollBBaarr ((class TToooollBBaarr))
Whether the tool buttons (see the `ttoooollBBuuttttoonnss'
resource, below) should be shown in a tool bar
above the source window (`oonn') or within the com-
mand tool (`ooffff', default). Enabling the command
tool bar disables the command tool and vice versa.
ccoommmmoonnTToooollBBaarr ((class TToooollBBaarr))
Whether the tool bar buttons should be shown in one
common tool bar at the top of the common DDD window
(`oonn', default), or whether they should be placed
in two separate tool bars, one for data, and one
for source operations, as in DDD 2.x (`ooffff').
ccoonnssoolleeBBuuttttoonnss ((class BBuuttttoonnss))
A newline-separated list of buttons to be added
under the debugger console. Each button issues the
DDD 3.1.1 1998-12-06 74
ddd(1) ddd(1)
command given by its name.
The following characters have special meanings:
+o Commands ending with '......' insert their name,
followed by a space, in the debugger console.
+o Commands ending with a control character (that
is, `^^' followed by a letter or `??') insert the
given control character.
+o The string `(())' is replaced by the current con-
tents of the argument field `(())'.
+o The string specified in the `llaabbeellDDeelliimmiitteerr'
resource (usually `////') separates the command
name from the button label. If no button label
is specified, the capitalized command will be
used as button label.
The following button names are reserved:
AAppppllyy Send the given command to the debugger.
BBaacckk Lookup previously selected source posi-
tion.
CClleeaarr Clear current command
CCoommpplleettee Complete current command.
EEddiitt Edit current source file.
FFoorrwwaarrdd Lookup next selected source position.
MMaakkee Invoke the `mmaakkee' program, using the most
recently given arguments.
NNeexxtt Show next command
NNoo Answer current debugger prompt with `nnoo'.
This button is visible only if the debug-
ger asks a yes/no question.
PPrreevv Show previous command
RReellooaadd Reload source file.
YYeess Answer current debugger prompt with
`yyeess'. This button is visible only if
the debugger asks a yes/no question.
The default resource value is empty--no console
DDD 3.1.1 1998-12-06 75
ddd(1) ddd(1)
buttons are created.
Here are some examples to insert into your
`$$HHOOMMEE//..dddddd//iinniitt' file. These are the settings of
DDD 1.x:
DDdddd**ccoonnssoolleeBBuuttttoonnss:: YYeess\\nnNNoo\\nnbbrreeaakk^^CC
This setting creates some more buttons:
DDdddd**ccoonnssoolleeBBuuttttoonnss:: \\
YYeess\\nnNNoo\\nnrruunn\\nnCClleeaarr\\nnPPrreevv\\nnNNeexxtt\\nnAAppppllyy\\nnbbrreeaakk^^CC
See also the `ddaattaaBBuuttttoonnss', `ssoouurrcceeBBuuttttoonnss' and
`ttoooollBBuuttttoonnss' resources, below.
ddaattaaBBuuttttoonnss ((class BBuuttttoonnss))
A newline-separated list of buttons to be added
under the data display. Each button issues the
command given by its name. See the `ccoonnssoolleeBBuutt--
ttoonnss' resource, above, for details on button syn-
tax.
The default resource value is empty--no source but-
tons are created.
ffllaattTToooollbbaarrBBuuttttoonnss ((class FFllaattBBuuttttoonnss))
If `oonn' (default), all tool bar buttons with images
or captions are given a `flat' appearance--the 3-D
border only shows up when the pointer is over the
icon. If `ooffff', the 3-D border is shown all the
time.
ffllaattDDiiaallooggBBuuttttoonnss ((class FFllaattBBuuttttoonnss))
If `oonn' (default), all dialog buttons with images
or captions are given a `flat' appearance--the 3-D
border only shows up when the pointer is over the
icon. If `ooffff', the 3-D border is shown all the
time.
llaabbeellDDeelliimmiitteerr ((class LLaabbeellDDeelliimmiitteerr))
The string used to separate labels from commands
and shortcuts. Default is `////'.
ssoouurrcceeBBuuttttoonnss ((class BBuuttttoonnss))
A newline-separated list of buttons to be added
under the debugger console. Each button issues the
command given by its name. See the `ccoonnssoolleeBBuutt--
ttoonnss' resource, above, for details on button syn-
tax.
The default resource value is empty--no source but-
tons are created.
DDD 3.1.1 1998-12-06 76
ddd(1) ddd(1)
Here are some example to insert into your
`$$HHOOMMEE//..dddddd//iinniitt' file. These are the settings of
DDD 1.x:
DDdddd**ssoouurrcceeBBuuttttoonnss:: \\
rruunn\\nnsstteepp\\nnnneexxtt\\nnsstteeppii\\nnnneexxttii\\nnccoonntt\\nn\\
ffiinniisshh\\nnkkiillll\\nnuupp\\nnddoowwnn\\nn\\
BBaacckk\\nnFFoorrwwaarrdd\\nnEEddiitt\\nniinntteerrrruupptt^^CC
This setting creates some buttons which are not
found on the command tool:
DDdddd**ssoouurrcceeBBuuttttoonnss:: \\
pprriinntt **(())\\nnggrraapphh ddiissppllaayy **(())\\nnpprriinntt //xx (())\\nn\\
wwhhaattiiss (())\\nnppttyyppee (())\\nnwwaattcchh (())\\nnuunnttiill\\nnsshheellll
An even more professional setting uses customized
button labels.
DDdddd**ssoouurrcceeBBuuttttoonnss:: \\
pprriinntt **(((()))) //// PPrriinntt **(())\\nn\\
ggrraapphh ddiissppllaayy **(((()))) //// DDiissppllaayy **(())\\nn\\
pprriinntt //xx (())\\nn\\
wwhhaattiiss (()) //// WWhhaatt iiss (())\\nn\\
ppttyyppee (())\\nn\\
wwaattcchh (())\\nn\\
uunnttiill\\nn\\
sshheellll
See also the `ccoonnssoolleeBBuuttttoonnss' and `ddaattaaBBuuttttoonnss'
resources, above, and the `ttoooollBBuuttttoonnss' resource,
below.
ttoooollbbaarrssAAttBBoottttoomm ((class TToooollbbaarrssAAttBBoottttoomm))
Whether source and data tool bars should be placed
above source and data, respectively (`ooffff',
default), or below, as in DDD 2.x (`oonn'). See also
the `----ttoooollbbaarrss--aatt--bboottttoomm' and `----ttoooollbbaarrss--aatt--ttoopp'
options, below.
ttoooollBBuuttttoonnss ((class BBuuttttoonnss))
A newline-separated list of buttons to be included
in the command tool or the command tool bar (see
the `ccoommmmaannddTToooollBBaarr' resource, above). Each button
issues the command given by its name. See the
`ccoonnssoolleeBBuuttttoonnss' resource, above, for details on
button syntax.
The default resource value is
DDdddd**ttoooollBBuuttttoonnss:: \\
rruunn\\nnbbrreeaakk^^CC\\nnsstteepp\\nnsstteeppii\\nnnneexxtt\\nnnneexxttii\\nn\\
uunnttiill\\nnffiinniisshh\\nnccoonntt\\nn\\kkiillll\\nn\\
uupp\\nnddoowwnn\\nnBBaacckk\\nnFFoorrwwaarrdd\\nnEEddiitt\\nnMMaakkee
DDD 3.1.1 1998-12-06 77
ddd(1) ddd(1)
For each button, its location in the command tool
must be specified using XXmmFFoorrmm constraint
resources. See the `DDdddd' application defaults file
for instructions.
If the `ttoooollBBuuttttoonnss' resource value is empty, the
command tool is not created.
ttoooollRRiigghhttOOffffsseett ((class OOffffsseett))
The distance between the right border of the com-
mand tool and the right border of the source text
(in pixels). Default is 8 pixels.
ttoooollTTooppOOffffsseett ((class OOffffsseett))
The distance between the upper border of the com-
mand tool and the upper border of the source text
(in pixels). Default is 8 pixels.
vveerriiffyyBBuuttttoonnss ((class VVeerriiffyyBBuuttttoonnss))
If `oonn' (default), verify for each button whether
its command is actually supported by the inferior
debugger. If the command is unknown, the button is
disabled. If this resource is `ooffff', no checking
is done: all commands are accepted "as is".
UUsseerr--DDeeffiinneedd NNeeww DDiissppllaayy MMeennuu
The following resources control the user-defined `NNeeww DDiiss--
ppllaayy' menu.
ddbbxxDDiissppllaayySShhoorrttccuuttss ((class DDiissppllaayySShhoorrttccuuttss))
A newline-separated list of display expressions to
be included in the `NNeeww DDiissppllaayy' menu for DBX. If
a line contains a label delimiter (the string `////';
can be changed via the `llaabbeellDDeelliimmiitteerr' resource),
the string before the delimiter is used as _e_x_p_r_e_s_-
_s_i_o_n, and the string after the delimiter is used as
label. Otherwise, the label is `DDiissppllaayy _e_x_p_r_e_s_-
_s_i_o_n'. Upon activation, the string `(())' in _e_x_p_r_e_s_-
_s_i_o_n is replaced by the name of the currently
selected display.
ggddbbDDiissppllaayySShhoorrttccuuttss ((class DDiissppllaayySShhoorrttccuuttss))
A newline-separated list of display expressions to
be included in the `NNeeww DDiissppllaayy' menu for GDB. See
the description of `ddbbxxDDiissppllaayySShhoorrttccuuttss', above.
jjddbbDDiissppllaayySShhoorrttccuuttss ((class DDiissppllaayySShhoorrttccuuttss))
A newline-separated list of display expressions to
be included in the `NNeeww DDiissppllaayy' menu for JDB. See
the description of `ddbbxxDDiissppllaayySShhoorrttccuuttss', above.
llaabbeellDDeelliimmiitteerr ((class LLaabbeellDDeelliimmiitteerr))
The string used to separate labels from commands
and shortcuts. Default is `////'.
DDD 3.1.1 1998-12-06 78
ddd(1) ddd(1)
ppeerrllDDiissppllaayySShhoorrttccuuttss ((class DDiissppllaayySShhoorrttccuuttss))
A newline-separated list of display expressions to
be included in the `NNeeww DDiissppllaayy' menu for Perl.
See the description of `ddbbxxDDiissppllaayySShhoorrttccuuttss',
above.
ppyyddbbDDiissppllaayySShhoorrttccuuttss ((class DDiissppllaayySShhoorrttccuuttss))
A newline-separated list of display expressions to
be included in the `NNeeww DDiissppllaayy' menu for PYDB.
See the description of `ddbbxxDDiissppllaayySShhoorrttccuuttss',
above.
xxddbbDDiissppllaayySShhoorrttccuuttss ((class DDiissppllaayySShhoorrttccuuttss))
A newline-separated list of display expressions to
be included in the `NNeeww DDiissppllaayy' menu for XDB. See
the description of `ddbbxxDDiissppllaayySShhoorrttccuuttss', above.
DDaattaa DDiissppllaayy
The following resources control the data display.
aalliiggnn22ddAArrrraayyss ((class AAlliiggnn22ddAArrrraayyss))
If `oonn' (default), DDD lays out two-dimensional
arrays as tables, such that all array elements are
aligned with each other. If `ooffff', DDD treats a
two-dimensional array as an array of one-
dimensional arrays, each aligned on its own.
aauuttooCClloosseeDDaattaaWWiinnddooww ((class AAuuttooCClloossee))
If this is `oonn' (default) and DDD is in stacked
window mode, deleting the last display automati-
cally closes the data window. If this is `ooffff',
the data window stays open even after deleting the
last display.
bbuummppDDiissppllaayyss ((class BBuummppDDiissppllaayyss))
If some display _D changes size and this resource is
`oonn' (default), DDD assigns new positions to dis-
plays below and on the right of _D such that the
distance between displays remains constant. If
this is `ooffff', other displays are not rearranged.
cclluusstteerrDDiissppllaayyss ((class CClluusstteerrDDiissppllaayyss))
If `oonn', new independent data displays will auto-
matically be clustered. Default is `ooffff', meaning
to leave new displays unclustered.
ddeelleetteeAAlliiaassDDiissppllaayyss ((class DDeelleetteeAAlliiaassDDiissppllaayyss))
If this is `oonn' (default), the `UUnnddiissppllaayy (())' but-
ton also deletes all aliases of the selected dis-
plays. If this is `ooffff', only the selected dis-
plays are deleted; the aliases remain, and one of
the aliases will be unsuppressed.
DDD 3.1.1 1998-12-06 79
ddd(1) ddd(1)
ddeetteeccttAAlliiaasseess ((class DDeetteeccttAAlliiaasseess))
If `oonn', DDD attempts to recognize shared data
structures. See `EExxaammiinniinngg sshhaarreedd ddaattaa ssttrruucc--
ttuurreess', above, for a discussion. The default is
`ooffff', meaning that shared data structures are not
recognized.
eexxppaannddRReeppeeaatteeddVVaalluueess ((class EExxppaannddRReeppeeaatteeddVVaalluueess))
GDB can print repeated array elements as `_V_A_L_U_E
<<rreeppeeaatteedd _N ttiimmeess>>'. If `eexxppaannddRReeppeeaatteeddVVaalluueess' is
`oonn', DDD will display _N instances of _V_A_L_U_E
instead. If `eexxppaannddRReeppeeaatteeddVVaalluueess' is `ooffff'
(default), DDD will display _V_A_L_U_E with `<<_Nxx>>''
aappppeennddeedd ttoo iinnddiiccaattee tthhee rreeppeettiittiioonn..
hhiiddeeIInnaaccttiivveeDDiissppllaayyss ((ccllaassss HHiiddeeIInnaaccttiivveeDDiissppllaayyss))
If some display gets out of scope and this resource
is `oonn' (default), DDD removes it from the data
display. If this is `ooffff', it is simply disabled.
ppaannnneeddGGrraapphhEEddiittoorr ((class PPaannnneeddGGrraapphhEEddiittoorr))
The control to scroll the graph.
+o If this is `oonn', an Athena panner is used (a kind
of two-directional scrollbar).
+o If this is `ooffff' (default), two Motif scrollbars
are used.
See also the `----ssccrroolllleedd--ggrraapphh--eeddiittoorr' and
`----ppaannnneedd--ggrraapphh--eeddiittoorr' options, below.
ppaappeerrSSiizzee ((class PPaappeerrSSiizzee))
The paper size used for printing, in format _w_i_d_t_h x
_h_e_i_g_h_t. The default is A4 format, or `221100mmmm xx
229977mmmm'.
sshhoowwBBaasseeDDiissppllaayyTTiittlleess ((class SShhoowwDDiissppllaayyTTiittlleess))
Whether to assign titles to base (independent) dis-
plays or not. Default is `oonn'.
sshhoowwDDeeppeennddeennttDDiissppllaayyTTiittlleess ((class SShhoowwDDiissppllaayyTTiittlleess))
Whether to assign titles to dependent displays or
not. Default is `ooffff'.
ttyyppeeddAAlliiaasseess ((class TTyyppeeddAAlliiaasseess))
If `oonn' (default), DDD requires structural equiva-
lence in order to recognize shared data structures.
If this is `ooffff', two displays at the same address
are considered aliases, regardless of their struc-
ture.
vvssllBBaasseeDDeeffss ((class VVSSLLDDeeffss))
A string with additional VSL definitions that are
DDD 3.1.1 1998-12-06 80
ddd(1) ddd(1)
appended to the builtin VSL library. This resource
is prepended to the `vvssllDDeeffss' resource below and
set in the DDD application defaults file; don't
change it.
vvssllDDeeffss ((class VVSSLLDDeeffss))
A string with additional VSL definitions that are
appended to the builtin VSL library. The default
value is an empty string. This resource can be
used to override specific VSL definitions that
affect the data display.
The general pattern to replace a function defini-
tion _f_u_n_c_t_i_o_n with a new definition _n_e_w___d_e_f is:
##pprraaggmmaa rreeppllaaccee _f_u_n_c_t_i_o_n
_f_u_n_c_t_i_o_n((_a_r_g_s...)) == _n_e_w___d_e_f;;
The following VSL functions are frequently used:
ccoolloorr((_b_o_x,, _f_o_r_e_g_r_o_u_n_d [[,, _b_a_c_k_g_r_o_u_n_d]]))
Set the _f_o_r_e_g_r_o_u_n_d and _b_a_c_k_g_r_o_u_n_d colors
of _b_o_x.
ddiissppllaayy__ccoolloorr((_b_o_x))
The color used in data displays.
Default: ccoolloorr((_b_o_x,, ""bbllaacckk"",, ""wwhhiittee""))
ttiittllee__ccoolloorr((_b_o_x))
The color used in the title bar.
Default: ccoolloorr((_b_o_x,, ""bbllaacckk""))
ddiissaabblleedd__ccoolloorr((_b_o_x))
The color used for disabled boxes.
Default: ccoolloorr((_b_o_x,, ""wwhhiittee"",, ""ggrreeyy5500""))
ssiimmppllee__ccoolloorr((_b_o_x))
The color used for simple values.
Default: ccoolloorr((_b_o_x,, ""bbllaacckk""))
ppooiinntteerr__ccoolloorr((_b_o_x))
The color used for pointers. Default:
ccoolloorr((_b_o_x,, ""bblluuee44""))
ssttrruucctt__ccoolloorr((_b_o_x))
The color used for structures. Default:
ccoolloorr((_b_o_x,, ""bbllaacckk""))
aarrrraayy__ccoolloorr((_b_o_x))
The color used for arrays. Default:
ccoolloorr((_b_o_x,, ""bblluuee44""))
rreeffeerreennccee__ccoolloorr((_b_o_x))
The color used for references. Default:
DDD 3.1.1 1998-12-06 81
ddd(1) ddd(1)
ccoolloorr((_b_o_x,, ""bblluuee44""))
cchhaannggeedd__ccoolloorr((_b_o_x))
The color used for changed values.
Default: ccoolloorr((_b_o_x,, ""bbllaacckk"",, ""##ffffffffcccc""))
ssttddffoonnttffaammiillyy(())
The font family used. One of ffaamm--
iillyy__ttiimmeess(()), ffaammiillyy__ccoouurriieerr(()), ffaamm--
iillyy__hheellvveettiiccaa(()), ffaammiillyy__nneeww__cceennttuurryy(()), or
ffaammiillyy__ttyyppeewwrriitteerr(()) (default).
ssttddffoonnttssiizzee(())
The font size used (in pixels). 00
(default) means to use ssttddffoonnttppooiinnttss(())
instead.
ssttddffoonnttppooiinnttss(())
The font size used (in 1/10 points). 00
means to use ssttddffoonnttssiizzee(()) instead.
Default value: 9900.
ssttddffoonnttwweeiigghhtt(())
The font weight used. Either
wweeiigghhtt__mmeeddiiuumm(()) (default) or
wweeiigghhtt__bboolldd(()).
To set the pointer color to "red4", use
DDdddd**vvssllDDeeffss:: \\
##pprraaggmmaa rreeppllaaccee ppooiinntteerr__ccoolloorr\\nn\\
ppooiinntteerr__ccoolloorr((bbooxx)) == ccoolloorr((bbooxx,, ""rreedd44""));;\\nn
To set the default font size to resolution-
independent 10.0 points, use
DDdddd**vvssllDDeeffss:: \\
##pprraaggmmaa rreeppllaaccee ssttddffoonnttssiizzee\\nn\\
##pprraaggmmaa rreeppllaaccee ssttddffoonnttppooiinnttss\\nn\\
ssttddffoonnttssiizzee(()) == 00;;\\nn
ssttddffoonnttppooiinnttss(()) == 110000;;\\nn
To set the default font to 12-pixel courier, use
DDdddd**vvssllDDeeffss:: \\
##pprraaggmmaa rreeppllaaccee ssttddffoonnttssiizzee\\nn\\
##pprraaggmmaa rreeppllaaccee ssttddffoonnttffaammiillyy\\nn\\
ssttddffoonnttssiizzee(()) == 1122;;\\nn\\
ssttddffoonnttffaammiillyy(()) == ffaammiillyy__ccoouurriieerr(());;\\nn
See the file `dddddd..vvssll' for further definitions to
override using the `vvssllDDeeffss' resource.
DDD 3.1.1 1998-12-06 82
ddd(1) ddd(1)
vvssllLLiibbrraarryy ((class VVSSLLLLiibbrraarryy))
The VSL library to use. `bbuuiillttiinn' (default) means
to use the built-in library, any other value is
used as file name.
vvssllPPaatthh ((class VVSSLLPPaatthh))
A colon-separated list of directories to search for
VSL include files. Default is `..', the current
directory.
If your DDD source distribution is installed in
`//oopptt//ssrrcc', you can use the following settings to
read the VSL library from `//hhoommee//jjooee//dddddd..vvssll':
DDdddd**vvssllLLiibbrraarryy:: //hhoommee//jjooee//dddddd..vvssll
DDdddd**vvssllPPaatthh:: \\
..:://oopptt//ssrrcc//dddddd//dddddd:://oopptt//ssrrcc//dddddd//vvsslllliibb
VSL include files referenced by `//hhoommee//jjooee//dddddd..vvssll'
are searched first in the current directory `..',
then in `//oopptt//ssrrcc//dddddd//dddddd//', and then in
`//oopptt//ssrrcc//dddddd//vvsslllliibb//'.
Instead of supplying another VSL library, it is
often easier to specify some minor changes to the
built-in library. See the `vvssllDDeeffss' resource,
above, for details.
PPlloott WWiinnddooww
The following resources control the plot window.
pplloottTTeerrmmTTyyppee ((class PPlloottTTeerrmmTTyyppee))
The Gnuplot terminal type. Can have one of two
values:
+o If this is `xx1111', DDD "swallows" the Gnuplot output win-
dow into its own user interface. Some window managers,
notably MWM, have trouble with swallowing techniques.
+o Setting this resource to `xxlliibb' (default) makes DDD pro-
vide a _b_u_i_l_t_i_n _p_l_o_t _w_i_n_d_o_w instead. In this mode, plots
work well with any window manager, but are less cus-
tomizable (Gnuplot resources are not understood).
pplloottCCoommmmaanndd ((class PPlloottCCoommmmaanndd))
The name of a Gnuplot executable. Default is `ggnnuupplloott',
followed by some options to set up colors and the ini-
tial geometry.
pplloottWWiinnddoowwCCllaassss ((class PPlloottWWiinnddoowwCCllaassss))
The class of the Gnuplot output window. When invoking
Gnuplot, DDD waits for a window with this class and
incorporates it into its own user interface (unless
`pplloottTTeerrmmTTyyppee' is `xxlliibb'; see above). Default is
DDD 3.1.1 1998-12-06 83
ddd(1) ddd(1)
`GGnnuupplloott'.
pplloottWWiinnddoowwDDeellaayy ((class WWiinnddoowwDDeellaayy))
The time (in ms) to wait for the creation of the Gnuplot
window. Before this delay, DDD looks at each newly cre-
ated window to see whether this is the plot window to
swallow. This is cheap, but unfortunately, some window
managers do not pass the creation event to DDD. If this
delay has passed, and DDD has not found the plot window,
DDD searches _a_l_l existing windows, which is pretty
expensive. Default time is 22000000.
pplloottIInniittCCoommmmaannddss ((class PPlloottIInniittCCoommmmaannddss))
The initial Gnuplot commands issued by DDD. Default is:
sseett ppaarraammeettrriicc
sseett uurraannggee [[00::11]]
sseett vvrraannggee [[00::11]]
sseett ttrraannggee [[00::11]]
The `ppaarraammeettrriicc' setting is required to make Gnuplot
understand the data files as generated DDD. The range
commands are used to plot scalars.
pplloott22ddSSeettttiinnggss ((class PPlloottSSeettttiinnggss))
Additional initial settings for 2-D plots. Default is
`sseett nnoobboorrddeerr'. Feel free to customize these settings
as desired.
pplloott33ddSSeettttiinnggss ((class PPlloottSSeettttiinnggss))
Additional initial settings for 3-D plots. Default is
`sseett bboorrddeerr'. Feel free to customize these settings as
desired.
DDeebbuuggggeerr CCoonnssoollee
The following resources control the debugger console.
lliinneeBBuuffffeerreeddCCoonnssoollee ((class LLiinneeBBuuffffeerreedd))
If this is `oonn' (default), each line from the infe-
rior is output on each own, such that the final
line is placed at the bottom of the debugger con-
sole. If this is `ooffff', all lines are output as a
whole. This is faster, but results in a random
position of the last line.
VVaalluuee HHiissttoorriieess
The following resources control the pop-down value histo-
ries associated with various text fields.
ppooppddoowwnnHHiissttoorryySSiizzee ((class HHiissttoorryySSiizzee))
The maximum number of items to display in pop-down
value histories. A value of 00 (default) means an
DDD 3.1.1 1998-12-06 84
ddd(1) ddd(1)
unlimited number of values.
ssoorrttPPooppddoowwnnHHiissttoorryy ((class SSoorrttPPooppddoowwnnHHiissttoorryy))
If `oonn' (default), items in the pop-down value his-
tories are sorted alphabetically. If `ooffff', most
recently used values will appear at the top.
CCuussttoommiizziinngg HHeellppeerrss
The following resources determine external programs
invoked by DDD.
eeddiittCCoommmmaanndd ((class EEddiittCCoommmmaanndd))
A command string to invoke an editor on the spe-
cific file. `@@LLIINNEE@@' is replaced by the current
line number, `@@FFIILLEE@@' by the file name. The
default is to invoke $$XXEEDDIITTOORR first, then $$EEDDIITTOORR,
then vvii:
DDdddd**eeddiittCCoommmmaanndd:: \\
$${{XXEEDDIITTOORR--ffaallssee}} ++@@LLIINNEE@@ @@FFIILLEE@@ \\
|||| xxtteerrmm --ee $${{EEDDIITTOORR--vvii}} ++@@LLIINNEE@@ @@FFIILLEE@@
This `..dddddd//iinniitt' setting invokes an editing session
for an _X_E_m_a_c_s editor running _g_n_u_s_e_r_v:
DDdddd**eeddiittCCoommmmaanndd:: ggnnuucclliieenntt ++@@LLIINNEE@@ @@FFIILLEE@@
This `..dddddd//iinniitt' setting invokes an editing session
for an _E_m_a_c_s editor running _e_m_a_c_s_s_e_r_v_e_r:
DDdddd**eeddiittCCoommmmaanndd:: eemmaaccsscclliieenntt ++@@LLIINNEE@@ @@FFIILLEE@@
ffoonnttSSeelleeccttCCoommmmaanndd ((class FFoonnttSSeelleeccttCCoommmmaanndd))
A command to select from a list of fonts. The
string `@@FFOONNTT@@' is replaced by the current DDD
default font; the string `@@TTYYPPEE@@' is replaced by a
symbolic name of the DDD font to edit. The program
must either place the name of the selected font in
the PRIMARY selection or print the selected font on
standard output. A typical value is:
DDdddd**ffoonnttSSeelleeccttCCoommmmaanndd:: xxffoonnttsseell --pprriinntt
ggeettCCoorreeCCoommmmaanndd ((class GGeettCCoorreeCCoommmmaanndd))
A command to get a core dump of a running process
(typically, `ggccoorree') `@@FFIILLEE@@' is replaced by the
base name of the file to create; `@@PPIIDD@@' is
replaced by the process id. The output must be
written to `@@FFIILLEE@@..@@PPIIDD@@'.
Leave this entry empty if you have no `ggccoorree' or
similar command.
DDD 3.1.1 1998-12-06 85
ddd(1) ddd(1)
lleessssTTiiffVVeerrssiioonn ((class LLeessssTTiiffVVeerrssiioonn))
Indicates the LessTif version DDD is running
against. For LessTif version _x_._y, the value is _x
multiplied by 1000 plus _y--for instance, the value
7799 stands for LessTif 0.79 and the value 11000055
stands for LessTif 1.5.
If the value of this resource is less than 1000,
indicating LessTif 0.99 or earlier, DDD enables
version-specific hacks to make DDD work around
LessTif bugs and deficiencies.
If DDD was compiled against LessTif, the default
value is the value of the `LLeessssTTiiffVVeerrssiioonn' macro in
<<XXmm//XXmm..hh>>. If DDD was compiled against OSF/Motif,
the default value is 11000000, disabling all LessTif-
specific hacks.
lliissttCCoorreeCCoommmmaanndd ((class lliissttCCoorreeCCoommmmaanndd))
The command to list all core files on the remote
host. The string `@@MMAASSKK@@' is replaced by a file
filter. The default setting is:
DDdddd**lliissttCCoorreeCCoommmmaanndd:: \\
ffiillee @@MMAASSKK@@ || ggrreepp ''..**::..**ccoorree..**'' \\
|| ccuutt --dd:: --ff11
lliissttDDiirrCCoommmmaanndd ((class lliissttDDiirrCCoommmmaanndd))
The command to list all directories on the remote
host. The string `@@MMAASSKK@@' is replaced by a file
filter. The default setting is:
DDdddd**lliissttDDiirrCCoommmmaanndd:: \\
ffiillee @@MMAASSKK@@ || ggrreepp ''..**::..**ddiirreeccttoorryy..**'' \\
|| ccuutt --dd:: --ff11
lliissttEExxeeccCCoommmmaanndd ((class lliissttEExxeeccCCoommmmaanndd))
The command to list all executable files on the
remote host. The string `@@MMAASSKK@@' is replaced by a
file filter. The default setting is:
DDdddd**lliissttEExxeeccCCoommmmaanndd:: \\
ffiillee @@MMAASSKK@@ || ggrreepp ''..**::..**eexxeecc..**'' \\
|| ggrreepp --vv ''..**::..**ssccrriipptt..**'' \\
|| ccuutt --dd:: --ff11 || ggrreepp --vv ''..**\\..oo$$''
lliissttSSoouurrcceeCCoommmmaanndd ((class lliissttSSoouurrcceeCCoommmmaanndd))
The command to list all source files on the remote
host. The string `@@MMAASSKK@@' is replaced by a file
filter. The default setting is:
DDdddd**lliissttSSoouurrcceeCCoommmmaanndd:: \\
ffiillee @@MMAASSKK@@ || ggrreepp ''..**::..**tteexxtt..**'' \\
DDD 3.1.1 1998-12-06 86
ddd(1) ddd(1)
|| ccuutt --dd:: --ff11
pprriinnttCCoommmmaanndd ((class PPrriinnttCCoommmmaanndd))
The command to print a postscript file. Usually
`llpp' or `llpprr'.
ppssCCoommmmaanndd ((class PPssCCoommmmaanndd))
The command to get a list of processes. Usually
`ppss'. Depending on your system, useful alternate
values include `ppss --eeff' and `ppss uuxx'. The first
line of the output must either contain a `PPIIDD'
title, or each line must begin with a process ID.
Note that the output of this command is filtered by
DDD; a process is only shown if it can be attached
to. The DDD process itself as well as the process
of the inferior debugger are suppressed, too.
rrsshhCCoommmmaanndd ((class RRsshhCCoommmmaanndd))
The remote shell command to invoke TTY-based com-
mands on remote hosts. Usually, `rreemmsshh', `rrsshh',
`sssshh', or `oonn'.
tteerrmmCCoommmmaanndd ((class TTeerrmmCCoommmmaanndd))
The command to invoke a separate TTY for showing
the input/output of the debugged program. A Bourne
shell command to run in the separate TTY is
appended to this string. The string `@@FFOONNTT@@' is
replaced by the name of the fixed width font used
by DDD. A simple value is
DDdddd**tteerrmmCCoommmmaanndd:: xxtteerrmm --ffnn @@FFOONNTT@@ --ee //bbiinn//sshh --cc
tteerrmmTTyyppee ((class TTeerrmmTTyyppee))
The terminal type provided by the `tteerrmmCCoommmmaanndd'
resource--that is, the value of the TTEERRMM environ-
ment variable to be passed to the debugged program.
Default: `xxtteerrmm'.
uunnccoommpprreessssCCoommmmaanndd ((class UUnnccoommpprreessssCCoommmmaanndd))
The command to uncompress the built-in DDD manual,
the DDD license, and the DDD news. Takes a com-
pressed text from standard input and writes the
uncompressed text to standard output. The default
value is `ggzziipp --dd --cc'; typical values include
`zzccaatt' and `gguunnzziipp --cc'.
wwwwwwCCoommmmaanndd ((class WWWWWWCCoommmmaanndd))
The command to invoke a WWW browser. The string
`@@UURRLL@@' is replaced by the URL to open. Default is
to try a running Netscape first, then $$WWWWWWBBRROOWWSSEERR,
then to invoke a new Netscape process, then to let
a running Emacs do the job, then to invoke Mosaic,
then to invoke Lynx in an xterm.
DDD 3.1.1 1998-12-06 87
ddd(1) ddd(1)
To specify `nneettssccaappee--44..00' as browser, use the set-
ting:
DDdddd**wwwwwwCCoommmmaanndd:: \\
nneettssccaappee--44..00 --rreemmoottee ''ooppeennUURRLL((@@UURRLL@@))'' \\
|||| nneettssccaappee--44..00 ''@@UURRLL@@''
This command first tries to connect to a running
nneettssccaappee--44..00 browser; if this fails, it starts a
new nneettssccaappee--44..00 process.
wwwwwwPPaaggee ((class WWWWWWPPaaggee))
The DDD WWW page. Value:
DDdddd**wwwwwwPPaaggee:: hhttttpp::////wwwwww..ccss..ttuu--bbss..ddee//ssoofftteecchh//dddddd//
OObbttaaiinniinngg DDiiaaggnnoossttiiccss
The following resources are used for debugging DDD and to
obtain specific DDD information.
aappppDDeeffaauullttssVVeerrssiioonn ((class VVeerrssiioonn))
The version of the DDD app-defaults file. If this
string does not match the version of the current
DDD executable, DDD issues a warning.
cchheecckkCCoonnffiigguurraattiioonn ((class CChheecckkCCoonnffiigguurraattiioonn))
If `oonn', check the DDD environment (in particular,
the X configuration), report any possible problem
causes and exit. See also the `----cchheecckk--
ccoonnffiigguurraattiioonn' option, below.
ddddddiinniittVVeerrssiioonn ((class VVeerrssiioonn))
The version of the DDD executable that last wrote
the `$$HHOOMMEE//..dddddd//iinniitt' file. If this string does
not match the version of the current DDD exe-
cutable, DDD issues a warning.
ddeebbuuggCCoorreeDDuummppss ((class DDeebbuuggCCoorreeDDuummppss))
If `oonn', DDD invokes a debugger on itself when
receiving a fatal signal.
dduummppCCoorree ((class DDuummppCCoorree))
If `oonn' (default), DDD dumps core when receiving a
fatal signal.
mmaaiinntteennaannccee ((class MMaaiinntteennaannccee))
If `oonn', enables a top-level `MMaaiinntteennaannccee' menu
with additional options. See also the `----mmaaiinnttee--
nnaannccee' option, below.
sshhoowwCCoonnffiigguurraattiioonn ((class SShhoowwCCoonnffiigguurraattiioonn))
If `oonn', show the DDD configuration on standard
output and exit. See also the `----ccoonnffiigguurraattiioonn'
DDD 3.1.1 1998-12-06 88
ddd(1) ddd(1)
option, below.
sshhoowwFFoonnttss ((class SShhoowwFFoonnttss))
If `oonn', show the DDD font definitions on standard
output and exit. See also the `----ffoonnttss' option,
below.
sshhoowwIInnvvooccaattiioonn ((class SShhoowwIInnvvooccaattiioonn))
If `oonn', show the DDD invocation options on stan-
dard output and exit. See also the `----hheellpp'
option, below.
sshhoowwLLiicceennssee ((class SShhoowwLLiicceennssee))
If `oonn', show the DDD license on standard output
and exit. See also the `----lliicceennssee' option, below.
sshhoowwMMaannuuaall ((class SShhoowwMMaannuuaall))
If `oonn', show this DDD manual page on standard out-
put and exit. If the standard output is a termi-
nal, the manual page is shown in a pager ($$PPAAGGEERR,
`lleessss' or `mmoorree'). See also the `----mmaannuuaall' option,
below.
sshhoowwNNeewwss ((class SShhoowwNNeewwss))
If `oonn', show the DDD news on standard output and
exit. See also the `----nneewwss' option, below.
sshhoowwVVeerrssiioonn ((class SShhoowwVVeerrssiioonn))
If `oonn', show the DDD version on standard output
and exit. See also the `----vveerrssiioonn' option, below.
ttrraaccee ((class TTrraaccee))
If `oonn', show the dialog between DDD and the infe-
rior debugger on standard output. Default is
`ooffff'.
MMoorree RReessoouurrcceess
The `DDdddd' application defaults file contains even more
information about setting DDD resources. The `DDdddd' file
comes with the DDD distribution.
OOPPTTIIOONNSS
You can use the following options when starting DDD. All
options may be abbreviated, as long as they are unambigu-
ous; single dashes may also be used. DDD also understands
the usual X options such as `--ddiissppllaayy' or `--ggeeoommeettrryy'; see
XX((11)) for details.
All other arguments and options are passed to the inferior
debugger. To pass an option to the inferior debugger that
conflicts with an X option, or with a DDD option listed
here, use the `----ddeebbuuggggeerr' option, below.
DDD 3.1.1 1998-12-06 89
ddd(1) ddd(1)
----aattttaacchh--wwiinnddoowwss
Attach the source and data windows to the debugger
console, creating one single big DDD window. This
is the default setting.
----aattttaacchh--ssoouurrccee--wwiinnddooww
Attaches only the source window to the debugger
console.
----aattttaacchh--ddaattaa--wwiinnddooww
Attaches only the source window to the debugger
console.
----aauuttoommaattiicc--ddeebbuuggggeerr
Determine the inferior debugger automatically.
----bbuuttttoonn--ttiippss
Enable button tips.
----ccoonnffiigguurraattiioonn
Show the DDD configuration settings and exit.
----cchheecckk--ccoonnffiigguurraattiioonn
Check the DDD environment (in particular, the X
configuration), report any possible problem causes
and exit.
----ddaattaa--wwiinnddooww
Create the data window upon start-up.
----ddbbxx Run the DBX debugger as inferior debugger.
----ddeebbuuggggeerr _n_a_m_e
Invoke the inferior debugger _n_a_m_e. This is useful
if you have several debugger versions around, or if
the inferior debugger cannot be invoked as `ggddbb',
`ddbbxx', `xxddbb', `jjddbb', `ppyyddbb', or `ppeerrll' respec-
tively.
This option can also be used to pass options to the
inferior debugger that would otherwise conflict
with DDD options. For instance, to pass the option
`--dd _d_i_r_e_c_t_o_r_y' to XDB, use:
dddddd ----ddeebbuuggggeerr ""xxddbb --dd _d_i_r_e_c_t_o_r_y""
If you use the `----ddeebbuuggggeerr' option, be sure that
the type of inferior debugger is specified as well.
That is, use one of the options `----ggddbb', `----ddbbxx',
`----xxddbb', `----jjddbb' `----ppyyddbb', or `----ppeerrll' (unless the
default setting works fine).
----ddeebbuuggggeerr--ccoonnssoollee
Create the debugger console upon start-up.
DDD 3.1.1 1998-12-06 90
ddd(1) ddd(1)
----ddiissaasssseemmbbllee
Disassemble the source code. See also the `----nnoo--
ddiissaasssseemmbbllee' option, below.
----eexxeecc--wwiinnddooww
Run the debugged program in a specially created
execution window. This is useful for programs that
have special terminal requirements not provided by
the debugger window, as raw keyboard processing or
terminal control sequences.
----ffoonnttss
Show the font definitions used by DDD on standard
output.
----ffoonnttssiizzee _s_i_z_e
Set the default font size to _s_i_z_e 1/10 points. To
use 12-point fonts, say `----ffoonnttssiizzee 112200'.
----ffuullllnnaammee
Enable TTY interface, taking additional debugger
commands from standard input and forwarding debug-
ger output on standard output. Current positions
are issued in GDB `--ffuullllnnaammee' format suitable for
debugger front-ends. By default, both the debugger
console and source window are disabled.
----ggddbb Run the GDB debugger as inferior debugger.
----ggllyypphhss
Display the current execution position and break-
points as glyphs. See also the `----nnoo--ggllyypphhss'
option, below.
----hheellpp Give a list of frequently used options. Show
options of the inferior debugger as well.
----hhoosstt [_u_s_e_r_n_a_m_e@@]_h_o_s_t_n_a_m_e
Invoke the inferior debugger directly on the remote
host _h_o_s_t_n_a_m_e. If _u_s_e_r_n_a_m_e is given and the
`----llooggiinn' option is not used, use _u_s_e_r_n_a_m_e as
remote user name. See `RREEMMOOTTEE DDEEBBUUGGGGIINNGG', above.
----jjddbb Run JDB as inferior debugger.
----lleessssttiiff--hhaacckkss
Equivalent to `----lleessssttiiff--vveerrssiioonn 999999'. Deprecated.
----lleessssttiiff--vveerrssiioonn _v_e_r_s_i_o_n
Enable some hacks to make DDD run properly with
LessTif. See the `lleessssTTiiffVVeerrssiioonn' resource and
`UUSSIINNGG DDDDDD WWIITTHH LLEESSSSTTIIFF', above, for a discussion.
DDD 3.1.1 1998-12-06 91
ddd(1) ddd(1)
----lliicceennssee
Show the DDD license and exit.
----llooggiinn _u_s_e_r_n_a_m_e
Use _u_s_e_r_n_a_m_e as remote user name. See `RREEMMOOTTEE
DDEEBBUUGGGGIINNGG', above.
----mmaaiinntteennaannccee
Enable the top-level `MMaaiinntteennaannccee' menu with
options for debugging DDD.
----mmaannuuaall
Show this manual page and exit.
----nneewwss Show the DDD news and exit.
----nnoo--bbuuttttoonn--ttiippss
Disable button tips.
----nnoo--ddaattaa--wwiinnddooww
Do not create the data window upon start-up.
----nnoo--ddeebbuuggggeerr--ccoonnssoollee
Do not create the debugger console upon start-up.
----nnoo--ddiissaasssseemmbbllee
Do not disassemble the source code.
----nnoo--eexxeecc--wwiinnddooww
Do not run the debugged program in a specially cre-
ated execution window; use the debugger console
instead. Useful for programs that have little ter-
minal input/output, or for remote debugging.
----nnoo--ggllyypphhss
Display the current execution position and break-
points as text characters. Do not use glyphs.
----nnoo--lleessssttiiff--hhaacckkss
Equivalent to `----lleessssttiiff--vveerrssiioonn 11000000'. Depre-
cated.
----nnoo--ssoouurrccee--wwiinnddooww
Do not create the source window upon start-up.
----nnoo--vvaalluuee--ttiippss
Disable value tips.
----nnww Do not use the X window interface. Start the infe-
rior debugger on the local host.
----ppeerrll Run Perl as inferior debugger.
----ppyyddbb Run PYDB as inferior debugger.
DDD 3.1.1 1998-12-06 92
ddd(1) ddd(1)
----ppaannnneedd--ggrraapphh--eeddiittoorr
Use an Athena panner to scroll the data window.
Most people prefer panners on scroll bars, since
panners allow two-dimensional scrolling. However,
the panner is off by default, since some Motif
implementations do not work well with Athena wid-
gets. See also ----ssccrroolllleedd--ggrraapphh--eeddiittoorr, below.
----ppllaayy _l_o_g_-_f_i_l_e
Recapitulate a previous DDD session. Invoke `ddd
----PPLLAAYY _l_o_g_-_f_i_l_e' as inferior debugger, simulating
the inferior debugger given in _l_o_g_-_f_i_l_e (see
below). This is useful for debugging DDD.
----PPLLAAYY _l_o_g_-_f_i_l_e
Simulate an inferior debugger. _l_o_g_-_f_i_l_e is a
`$$HHOOMMEE//..dddddd//lloogg' file as generated by some previous
DDD session. When a command is entered, scan the
_l_o_g_-_f_i_l_e for this command and re-issue the logged
reply; if the command is not found, do nothing.
This is used by the `----ppllaayy' option.
----rrhhoosstt [_u_s_e_r_n_a_m_e@@]_h_o_s_t_n_a_m_e
Run the inferior debugger interactively on the
remote host _h_o_s_t_n_a_m_e. If _u_s_e_r_n_a_m_e is given and the
`----llooggiinn' option is not used, use _u_s_e_r_n_a_m_e as
remote user name. See `RREEMMOOTTEE DDEEBBUUGGGGIINNGG', above.
----sseeppaarraattee--wwiinnddoowwss
Separate the console, source and data windows. See
also the `----aattttaacchh' options, above.
----ssccrroolllleedd--ggrraapphh--eeddiittoorr
Use Motif scroll bars to scroll the data window.
This is the default in most DDD configurations.
See also ----ppaannnneedd--ggrraapphh--eeddiittoorr, above.
----ssoouurrccee--wwiinnddooww
Create the source window upon start-up.
----ssttaattuuss--aatt--bboottttoomm
Place the status line at the bottom of the source
window.
----ssttaattuuss--aatt--ttoopp
Place the status line at the top of the source win-
dow.
----ssyynncc--ddeebbuuggggeerr
Do not process X events while the debugger is busy.
This may result in slightly better performance on
single-processor systems.
DDD 3.1.1 1998-12-06 93
ddd(1) ddd(1)
----ttoooollbbaarrss--aatt--bboottttoomm
Place the toolbars the bottom of the window.
----ttoooollbbaarrss--aatt--ttoopp
Place the toolbars at the top of the window.
----ttrraaccee
Show the interaction between DDD and the inferior
debugger on standard error. This is useful for
debugging DDD. If `----ttrraaccee' is not specified, this
information is written into `$$HHOOMMEE//..dddddd//lloogg', such
that you can also do a post-mortem debugging.
----ttttyy Enable TTY interface, taking additional debugger
commands from standard input and forwarding debug-
ger output on standard output. Current positions
are issued in a format readable for humans. By
default, the debugger console is disabled.
----vvaalluuee--ttiippss
Enable value tips.
----vveerrssiioonn
Show the DDD version and exit.
----vvssll--lliibbrraarryy _l_i_b_r_a_r_y
Load the VSL library _l_i_b_r_a_r_y instead of using the
DDD built-in library. This is useful for customiz-
ing display shapes and fonts.
----vvssll--ppaatthh _p_a_t_h
Search VSL libraries in _p_a_t_h (a colon-separated
directory list).
----vvssll--hheellpp
Show a list of further options controlling the VSL
interpreter. These options are intended for debug-
ging purposes and are subject to change without
further notice.
----xxddbb Run XDB as inferior debugger.
AACCTTIIOONNSS
The following DDD actions may be used in translation
tables.
GGeenneerraall AAccttiioonnss
These actions are used to assign the keyboard focus.
dddddd--ggeett--ffooccuuss (())
Assign focus to the element that just received
input.
DDD 3.1.1 1998-12-06 94
ddd(1) ddd(1)
dddddd--nneexxtt--ttaabb--ggrroouupp (())
Assign focus to the next tab group.
dddddd--pprreevv--ttaabb--ggrroouupp (())
Assign focus to the previous tab group.
dddddd--pprreevviioouuss--ttaabb--ggrroouupp (())
Assign focus to the previous tab group.
DDaattaa DDiissppllaayy AAccttiioonnss
These actions are used in the DDD graph editor.
eenndd (()) End the action initiated by sseelleecctt. Bound to a
button up event.
eexxtteenndd (())
Extend the current selection. Bound to a button
down event.
eexxtteenndd--oorr--mmoovvee (())
Extend the current selection. Bound to a button
down event. If the pointer is dragged, move the
selection.
ffoollllooww (())
Continue the action initiated by sseelleecctt. Bound to
a pointer motion event.
ggrraapphh--sseelleecctt (())
Equivalent to sseelleecctt, but also updates the current
argument.
ggrraapphh--sseelleecctt--oorr--mmoovvee (())
Equivalent to sseelleecctt--oorr--mmoovvee, but also updates the
current argument.
ggrraapphh--eexxtteenndd (())
Equivalent to eexxtteenndd, but also updates the current
argument.
ggrraapphh--eexxtteenndd--oorr--mmoovvee (())
Equivalent to eexxtteenndd--oorr--mmoovvee, but also updates the
current argument.
ggrraapphh--ttooggggllee (())
Equivalent to ttooggggllee, but also updates the current
argument.
ggrraapphh--ttooggggllee--oorr--mmoovvee (())
Equivalent to ttooggggllee--oorr--mmoovvee, but also updates the
current argument.
ggrraapphh--ppooppuupp--mmeennuu (([ggrraapphh|nnooddee|sshhoorrttccuutt]))
Pops up a menu. ggrraapphh pops up a menu with global
DDD 3.1.1 1998-12-06 95
ddd(1) ddd(1)
graph operations, nnooddee pops up a menu with node
operations, and sshhoorrttccuutt pops up a menu with dis-
play shortcuts. If no argument is given, pops up a
menu depending on the context: when pointing on a
node with the SShhiifftt key pressed, behaves like
sshhoorrttccuutt; when pointing on a without the SShhiifftt key
pressed, behaves like nnooddee; otherwise, behaves as
if ggrraapphh was given.
ggrraapphh--ddeerreeffeerreennccee (())
Dereference the selected display.
ggrraapphh--ddeettaaiill (())
Show or hide detail of the selected display.
ggrraapphh--rroottaattee (())
Rotate the selected display.
ggrraapphh--ddeeppeennddeenntt (())
Pop up a dialog to create a dependent display.
hhiiddee--eeddggeess (([aannyy|bbootthh|ffrroomm|ttoo]))
Hide some edges. aannyy means to process all edges
where either source or target node are selected.
bbootthh means to process all edges where both nodes
are selected. ffrroomm means to process all edges where
at least the source node is selected. ttoo means to
process all edges where at least the target node is
selected. Default is aannyy.
llaayyoouutt (([rreegguullaarr|ccoommppaacctt],, [[++|--]_d_e_g_r_e_e_s]]))
Layout the graph. rreegguullaarr means to use the regular
layout algorithm; ccoommppaacctt uses an alternate layout
algorithm, where successors are placed next to
their parents. Default is rreegguullaarr. _d_e_g_r_e_e_s indi-
cates in which direction the graph should be lay-
outed. Default is the current graph direction.
mmoovvee--sseelleecctteedd ((_x_-_o_f_f_s_e_t,, _y_-_o_f_f_s_e_t))
Move all selected nodes in the direction given by
_x_-_o_f_f_s_e_t and _y_-_o_f_f_s_e_t. _x_-_o_f_f_s_e_t and _y_-_o_f_f_s_e_t is
either given as a numeric pixel value, or as
`++ggrriidd', or `--ggrriidd', meaning the current grid size.
nnoorrmmaalliizzee (())
Place all nodes on their positions and redraw the
graph.
rroottaattee (([[++|--]_d_e_g_r_e_e_s]))
Rotate the graph around _d_e_g_r_e_e_s degrees. _d_e_g_r_e_e_s
must be a multiple of 90. Default is ++9900.
sseelleecctt (())
Select the node pointed at. Clear all other
DDD 3.1.1 1998-12-06 96
ddd(1) ddd(1)
selections. Bound to a button down event.
sseelleecctt--aallll (())
Select all nodes in the graph.
sseelleecctt--ffiirrsstt (())
Select the first node in the graph.
sseelleecctt--nneexxtt (())
Select the next node in the graph.
sseelleecctt--oorr--mmoovvee (())
Select the node pointed at. Clear all other selec-
tions. Bound to a button down event. If the
pointer is dragged, move the selected node.
sseelleecctt--pprreevv (())
Select the previous node in the graph.
sshhooww--eeddggeess (([aannyy|bbootthh|ffrroomm|ttoo]))
Show some edges. aannyy means to process all edges
where either source or target node are selected.
bbootthh means to process all edges where both nodes
are selected. ffrroomm means to process all edges where
at least the source node is selected. ttoo means to
process all edges where at least the target node is
selected. Default is aannyy.
ssnnaapp--ttoo--ggrriidd (())
Place all nodes on the nearest grid position.
ttooggggllee (())
Toggle the current selection--if the node pointed
at is selected, it will be unselected, and vice
versa. Bound to a button down event.
ttooggggllee--oorr--mmoovvee (())
Toggle the current selection--if the node pointed
at is selected, it will be unselected, and vice
versa. Bound to a button down event. If the
pointer is dragged, move the selection.
uunnsseelleecctt--aallll (())
Clear the selection.
DDeebbuuggggeerr CCoonnssoollee AAccttiioonnss
These actions are used in the debugger console and other
text fields.
ggddbb--bbaacckkwwaarrdd--cchhaarraacctteerr (())
Move one character to the left. Bound to LLeefftt.
ggddbb--bbeeggiinnnniinngg--ooff--lliinnee (())
Move cursor to the beginning of the current line,
DDD 3.1.1 1998-12-06 97
ddd(1) ddd(1)
after the prompt. Bound to HHOOMMEE.
ggddbb--ccoonnttrrooll ((_c_o_n_t_r_o_l_-_c_h_a_r_a_c_t_e_r))
Send the given _c_o_n_t_r_o_l_-_c_h_a_r_a_c_t_e_r to the inferior
debugger. The _c_o_n_t_r_o_l_-_c_h_a_r_a_c_t_e_r must be specified
in the form `^^_X', where _X is an upper-case letter
or `??'.
ggddbb--ccoommmmaanndd ((_c_o_m_m_a_n_d))
Execute _c_o_m_m_a_n_d in the debugger console. The fol-
lowing replacements are performed on _c_o_m_m_a_n_d:
+o If _c_o_m_m_a_n_d has the form '_n_a_m_e......', insert _n_a_m_e,
followed by a space, in the debugger console.
+o All occurrences of `(())' are replaced by the cur-
rent contents of the argument field `(())'.
ggddbb--ccoommpplleettee--aarrgg ((_c_o_m_m_a_n_d))
Complete current argument as if _c_o_m_m_a_n_d was
prepended. Bound to CCttrrll++TT.
ggddbb--ccoommpplleettee--ccoommmmaanndd (())
Complete current command line in the debugger con-
sole. Bound to TTAABB.
ggddbb--ccoommpplleettee--ttaabb ((_c_o_m_m_a_n_d))
If global TTAABB completion is enabled, complete cur-
rent argument as if _c_o_m_m_a_n_d was prepended. Other-
wise, proceed as if the TTAABB key was hit. Bound to
TTAABB.
ggddbb--ddeelleettee--oorr--ccoonnttrrooll ((_c_o_n_t_r_o_l_-_c_h_a_r_a_c_t_e_r))
Like ggddbb--ccoonnttrrooll, but effective only if the cursor
is at the end of a line. Otherwise, _c_o_n_t_r_o_l_-
_c_h_a_r_a_c_t_e_r is ignored and the character following
the cursor is deleted. Bound to CCttrrll++DD.
ggddbb--eenndd--ooff--lliinnee (())
Move cursor to the end of the current line. Bound
to EEnndd.
ggddbb--ffoorrwwaarrdd--cchhaarraacctteerr (())
Move one character to the right. Bound to RRiigghhtt.
ggddbb--iinnsseerrtt--ggrraapphh--aarrgg (())
Insert the contents of the data display argument
field `(())'.
ggddbb--iinnsseerrtt--ssoouurrccee--aarrgg (())
Insert the contents of the source argument field
`(())'.
DDD 3.1.1 1998-12-06 98
ddd(1) ddd(1)
ggddbb--iinntteerrrruupptt (())
If DDD is in incremental search mode, exit it; oth-
erwise call ggddbb--ccoonnttrrooll((^^CC)).
ggddbb--iisseeaarrcchh--pprreevv (())
Enter reverse incremental search mode. Bound to
CCttrrll++BB.
ggddbb--iisseeaarrcchh--nneexxtt (())
Enter incremental search mode. Bound to CCttrrll++FF.
ggddbb--iisseeaarrcchh--eexxiitt (())
Exit incremental search mode. Bound to EESSCC.
ggddbb--nneexxtt--hhiissttoorryy (())
Recall next command from history. Bound to DDoowwnn.
ggddbb--pprreevv--hhiissttoorryy (())
Recall previous command from history. Bound to UUpp.
ggddbb--pprreevviioouuss--hhiissttoorryy (())
Recall previous command from history. Bound to UUpp.
ggddbb--pprroocceessss (([[_a_c_t_i_o_n[[,, _a_r_g_s_._._.]]]]))
Process the given event in the debugger console.
Bound to key events in the source and data window.
If this action is bound to the source window, and
the source window is editable, perform
_a_c_t_i_o_n((_a_r_g_s_._._.)) on the source window instead; if
_a_c_t_i_o_n is not given, perform `sseellff--iinnsseerrtt(())'.
ggddbb--sseelleecctt--aallll (())
If the `sseelleeccttAAllllBBiinnddiinnggss' resource is set to
MMoottiiff, perform _b_e_g_i_n_n_i_n_g_-_o_f_-_l_i_n_e. Otherwise, per-
form _s_e_l_e_c_t_-_a_l_l. Bound to CCttrrll++AA.
ggddbb--sseett--lliinnee ((_v_a_l_u_e))
Set the current line to _v_a_l_u_e. Bound to CCttrrll++UU.
SSoouurrccee WWiinnddooww AAccttiioonnss
These actions are used in the source and code windows.
ssoouurrccee--ddeelleettee--ggllyypphh (())
Delete the breakpoint related to the glyph at cur-
sor position.
ssoouurrccee--ddoouubbllee--cclliicckk (([[_t_e_x_t_-_a_c_t_i_o_n [,_l_i_n_e_-_a_c_t_i_o_n
[,_f_u_n_c_t_i_o_n_- _a_c_t_i_o_n]]]))
The double-click action in the source window.
+o If this action is taken on a breakpoint glyph,
edit the breakpoint properties.
+o If this action is taken in the breakpoint area,
DDD 3.1.1 1998-12-06 99
ddd(1) ddd(1)
invoke `ggddbb--ccoommmmaanndd((_l_i_n_e_-_a_c_t_i_o_n))'. If _l_i_n_e_-
_a_c_t_i_o_n is not given, it defaults to `bbrreeaakk (())'.
+o If this action is taken in the source text, and
the next character following the current selec-
tion is a `((', invoke `ggddbb--ccoommmmaanndd((_f_u_n_c_t_i_o_n_-
_a_c_t_i_o_n))'. If _f_u_n_c_t_i_o_n_-_a_c_t_i_o_n is not given, it
defaults to `lliisstt (())'.
+o Otherwise, invoke `ggddbb--ccoommmmaanndd((_t_e_x_t_-_a_c_t_i_o_n))'. If
_t_e_x_t_-_a_c_t_i_o_n is not given, it defaults to `ggrraapphh
ddiissppllaayy (())'.
ssoouurrccee--ddrraagg--ggllyypphh (())
Initiate a drag on the glyph at cursor position.
ssoouurrccee--ddrroopp--ggllyypphh (([[_a_c_t_i_o_n])
Drop the dragged glyph at cursor position. _a_c_t_i_o_n
is either `mmoovvee', meaning to move the dragged
glyph, or `ccooppyy', meaning to copy the dragged
glyph. If no _a_c_t_i_o_n is given, `mmoovvee' is assumed.
ssoouurrccee--eenndd--sseelleecctt--wwoorrdd (())
End selecting a word.
ssoouurrccee--ffoollllooww--ggllyypphh (())
Continue a drag on the glyph at cursor position.
Usually bound to some motion event.
ssoouurrccee--ppooppuupp--mmeennuu (())
Pop up a menu, depending on the location.
ssoouurrccee--sseett--aarrgg (())
Set the argument field to the current selection.
Typically bound to some selection operation.
ssoouurrccee--ssttaarrtt--sseelleecctt--wwoorrdd (())
Start selecting a word.
ssoouurrccee--uuppddaattee--ggllyypphhss (())
Update all visible glyphs. Usually invoked after a
scrolling operation.
IIMMAAGGEESS
DDD installs a number of images that may be used as pixmap
resources, simply by giving a symbolic name. For button
images, three variants are installed as well:
+o The suffix `--hhii' indicates a highlighted variant (Button
is entered).
+o The suffix `--aarrmm' indicates an armed variant (Button is
pushed).
DDD 3.1.1 1998-12-06 100
ddd(1) ddd(1)
+o The suffix `--xxxx' indicates a disabled (insensitive)
variant.
bbrreeaakk__aatt
`BBrreeaakk aatt (())' button.
cclleeaarr__aatt
`CClleeaarr aatt (())' button.
dddddd
DDD icon.
ddeelleettee
`DDeelleettee (())' button.
ddiissaabbllee
`DDiissaabbllee' button.
ddiisspprreeff
`DDiissppllaayy ** (())' button.
ddiissppllaayy
`DDiissppllaayy (())' button.
ddrraagg__aarrrrooww
The execution pointer (being dragged).
ddrraagg__ccoonndd
A conditional breakpoint (being dragged).
ddrraagg__ssttoopp
A breakpoint (being dragged).
ddrraagg__tteemmpp
A temporary breakpoint (being dragged).
eennaabbllee
`EEnnaabbllee' button.
ffiinndd__ffoorrwwaarrdd
`FFiinndd>>>> (())' button.
ffiinndd__bbaacckkwwaarrdd
`FFiinndd<<<< (())' button.
ggrreeyy__aarrrrooww
The execution pointer (not in lowest frame).
ggrreeyy__ccoonndd
A conditional breakpoint (disabled).
ggrreeyy__ssttoopp
A breakpoint (disabled).
DDD 3.1.1 1998-12-06 101
ddd(1) ddd(1)
ggrreeyy__tteemmpp
A temporary breakpoint (disabled).
hhiiddee
`HHiiddee (())' button.
llooookkuupp
`LLooookkuupp (())' button.
mmaakkeetteemmpp
`MMaakkee TTeemmppoorraarryy' button.
nneeww__bbrreeaakk
`NNeeww BBrreeaakkppooiinntt' button.
nneeww__ddiissppllaayy
`NNeeww DDiissppllaayy' button.
nneeww__wwaattcchh
`NNeeww WWaattcchhppooiinntt' button.
ppllaaiinn__aarrrrooww
The execution pointer.
ppllaaiinn__ccoonndd
A conditional breakpoint (enabled).
ppllaaiinn__ssttoopp
A breakpoint (enabled).
ppllaaiinn__tteemmpp
A temporary breakpoint (enabled).
pprriinntt
`PPrriinntt (())' button.
pprrooppeerrttiieess
`PPrrooppeerrttiieess' button.
rroottaattee
`RRoottaattee (())' button.
sseett
`SSeett (())' button.
sshhooww
`SShhooww (())' button.
ssiiggnnaall__aarrrrooww
The execution pointer (stopped by signal).
uunnddiissppllaayy
`UUnnddiissppllaayy (())' button.
DDD 3.1.1 1998-12-06 102
ddd(1) ddd(1)
uunnwwaattcchh
`UUnnwwaattcchh (())' button.
wwaattcchh
`WWaattcchh (())' button.
EENNVVIIRROONNMMEENNTT
DDD is controlled by the following environment variables:
DDDDDD__NNOO__SSIIGGNNAALL__HHAANNDDLLEERRSS
If set, DDD does not catch fatal
errors. This is sometimes useful when
debugging DDD.
DDDDDD__SSTTAATTEE Root of DDD state directory. Default
is `$$HHOOMMEE//..dddddd//'.
DDDDDD__SSEESSSSIIOONN If set, indicates a session to start,
overriding all options. This is used
by DDD when restarting itself.
DDDDDD__SSEESSSSIIOONNSS DDD session directory. Default is
`$$DDDDDD__SSTTAATTEE//sseessssiioonnss//'.
EEDDIITTOORR The text editor to invoke for editing
source code. See the `eeddiittCCoommmmaanndd'
resource, above.
VVSSLL__IINNCCLLUUDDEE Where to search for VSL include files.
Default is the current directory.
WWWWWWBBRROOWWSSEERR The WWW browser to invoke for viewing
the DDD WWW page. See the `wwwwwwCCoomm--
mmaanndd' resource, above.
XXEEDDIITTOORR The X editor to invoke for editing
source code. See the `eeddiittCCoommmmaanndd'
resource, above.
The following environment variables are set by DDD:
DDDDDD Set to a string indicating the DDD
version. By testing whether DDDDDD is
set, a debuggee (or inferior debugger)
can determine whether it was invoked
by DDD.
TTEERRMM Set to `dduummbb', the DDD terminal type.
This is set for the inferior debugger
only. If the debuggee runs in a sepa-
rate execution window, the debuggee's
DDD 3.1.1 1998-12-06 103
ddd(1) ddd(1)
TTEERRMM value is set according to the
`tteerrmmTTyyppee' resource (see `RREESSOOUURRCCEESS',
above).
TTEERRMMCCAAPP Set to `' (none), the DDD terminal
capabilities.
PPAAGGEERR Set to `ccaatt', the preferred DDD pager.
FFIILLEESS
$$HHOOMMEE//..dddddd// DDD state directory.
$$HHOOMMEE//..dddddd//iinniitt Individual DDD resource file. DDD
options are saved here.
$$HHOOMMEE//..dddddd//hhiissttoorryy Default DDD command history file.
$$HHOOMMEE//..dddddd//lloocckk DDD lock file; indicates that a DDD is
running.
$$HHOOMMEE//..dddddd//lloogg Trace of the current interaction
between DDD and the inferior debugger.
$$HHOOMMEE//..dddddd//sseessssiioonnss//
DDD session directory. One subdirec-
tory per session.
$$HHOOMMEE//..dddddd//sseessssiioonnss//_s_e_s_s_i_o_n//ddddddccoorree
DDD core file for _s_e_s_s_i_o_n.
$$HHOOMMEE//..dddddd//sseessssiioonnss//_s_e_s_s_i_o_n//iinniitt
DDD resource file for _s_e_s_s_i_o_n.
$$HHOOMMEE//..dddddd//sseessssiioonnss//_s_e_s_s_i_o_n//hhiissttoorryy
DDD command history for _s_e_s_s_i_o_n.
$$HHOOMMEE//..dddddd//sseessssiioonnss//..dddddd//
The DDD `restart' session.
$$HHOOMMEE//..dddddd//ttiippss DDD tips resource file. Contains the
number of the next tip of the day.
$$HHOOMMEE//..ggddbbiinniitt GDB initialization file.
$$HHOOMMEE//..ddbbxxiinniitt DBX initialization file.
$$HHOOMMEE//..ddbbxxrrcc Alternate DBX initialization file.
$$HHOOMMEE//..xxddbbrrcc XDB initialization file.
$$HHOOMMEE//..ggnnuupplloott Gnuplot initialization file.
$$HHOOMMEE//..ddddddiinniitt Old-style DDD initialization file;
used only if $$HHOOMMEE//..dddddd//iinniitt does not
exist.
SSEEEE AALLSSOO
XX(1), ggddbb(1), ddbbxx(1), xxddbb(1), ppeerrllddeebbuugg(1), rreemmsshh(1),
rrsshh(1), ggnnuupplloott(1),
`ggddbb' entry in iinnffoo.
_U_s_i_n_g _G_D_B_: _A _G_u_i_d_e _t_o _t_h_e _G_N_U _S_o_u_r_c_e_-_L_e_v_e_l _D_e_b_u_g_g_e_r, by
Richard M. Stallman and Roland H. Pesch.
_j_d_b_-_-_T_h_e _J_a_v_a _D_e_b_u_g_g_e_r, at hhttttpp::////jjaavvaa..ssuunn..ccoomm// (and its
mirrors) in //pprroodd--
uuccttss//jjddkk//11..11//ddooccss//ttoooollddooccss//ssoollaarriiss//jjddbb..hhttmmll
_J_a_v_a _L_a_n_g_u_a_g_e _D_e_b_u_g_g_i_n_g, at hhttttpp::////jjaavvaa..ssuunn..ccoomm// (and its
DDD 3.1.1 1998-12-06 104
ddd(1) ddd(1)
mirrors) in //pprroodduuccttss//jjddkk//11..11//ddeebbuuggggiinngg//
_T_h_e _P_y_t_h_o_n _L_a_n_g_u_a_g_e, at hhttttpp::////wwwwww..ppyytthhoonn..oorrgg// and its
mirrors.
_D_D_D_-_-_A _F_r_e_e _G_r_a_p_h_i_c_a_l _F_r_o_n_t_-_E_n_d _f_o_r _U_N_I_X _D_e_b_u_g_g_e_r_s, by
Andreas Zeller and Dorothea Lⁿtkehaus, Computer Science
Report 95-07, Technische UniversitΣt Braunschweig, 1995.
_D_D_D _- _e_i_n _D_e_b_u_g_g_e_r _m_i_t _g_r_a_p_h_i_s_c_h_e_r _D_a_t_e_n_d_a_r_s_t_e_l_l_u_n_g, by
Dorothea Lⁿtkehaus, Diploma Thesis, Technische UniversitΣt
Braunschweig, 1994.
The DDD _F_T_P _s_i_t_e_,
ffttpp::////ffttpp..iippss..ccss..ttuu--bbss..ddee//ppuubb//llooccaall//ssoofftteecchh//dddddd//
The DDD _W_W_W _p_a_g_e_,
hhttttpp::////wwwwww..ccss..ttuu--bbss..ddee//ssoofftteecchh//dddddd//
The DDD _M_a_i_l_i_n_g _L_i_s_t_,
dddddd--uusseerrss@@iippss..ccss..ttuu--bbss..ddee
For more information on this list, send a mail to
dddddd--uusseerrss--rreeqquueesstt@@iippss..ccss..ttuu--bbss..ddee .
LLIIMMIITTAATTIIOONNSS
GGeenneerraall LLiimmiittaattiioonnss
If command output is sent to the debugger console, it is
impossible for DDD to distinguish between the output of
the debugged program and the output of the inferior debug-
ger. This problem can be avoided by running the program
in the separate execution window.
Output that confuses DDD includes:
+o Primary debugger prompts (e.g. `((ggddbb)) ' or `((ddbbxx)) ')
+o Secondary debugger prompts (e.g. `>>')
+o Confirmation prompts (e.g. `((yy oorr nn)) ')
+o Prompts for more output (e.g. `PPrreessss RREETTUURRNN ttoo ccoonn--
ttiinnuuee')
+o Display output (e.g. `$$ppcc == 00xx11223344')
DDD 3.1.1 1998-12-06 105
ddd(1) ddd(1)
If your program outputs any of these strings, you should
run it in the separate execution window.
If the inferior debugger changes the default TTY settings,
for instance through a `ssttttyy' command in its initializa-
tion file, DDD will likely become confused. The same
applies to debugged programs which change the default TTY
settings.
LLiimmiittaattiioonnss uussiinngg GGDDBB
Some GDB settings are essential for DDD to work correctly.
These settings with their correct values are:
sseett hheeiigghhtt 00
sseett wwiiddtthh 00
sseett vveerrbboossee ooffff
sseett pprroommpptt ((ggddbb))
DDD sets these values automatically when invoking GDB; if
these values are changed, there may be some malfunctions,
especially in the data display.
When debugging at the machine level with GDB 4.12 and ear-
lier as inferior debugger, use a `ddiissppllaayy //xx $$ppcc' command
to ensure the program counter value is updated correctly
at each stop. You may also enter the command in
$$HHOOMMEE//..ggddbbiinniitt or (better yet) upgrade to the most recent
GDB version.
LLiimmiittaattiioonnss uussiinngg DDBBXX
When used for debugging Pascal-like programs, DDD does not
infer correct array subscripts and always starts to count
with 1.
With some DBX versions (notably Solaris DBX), DDD strips
C-style and C++-style comments from the DBX output in
order to interpret it properly. This also affects the
output of the debugged program when sent to the debugger
console. Using the separate execution window avoids these
problems.
In some DBX versions (notably DEC DBX and AIX DBX), there
is no automatic data display. As an alternative, DDD uses
the DBX `pprriinntt' command to access data values. This means
that variable names are interpreted according to the cur-
rent frame; variables outside the current frame cannot be
displayed.
LLiimmiittaattiioonnss uussiinngg XXDDBB
There is no automatic data display in XDB. As a
workaround, DDD uses the `pp' command to access data val-
ues. This means that variable names are interpreted
according to the current frame; variables outside the
DDD 3.1.1 1998-12-06 106
ddd(1) ddd(1)
current frame cannot be displayed.
LLiimmiittaattiioonnss uussiinngg JJDDBB
There is no automatic data display in JDB. As a
workaround, DDD uses the `dduummpp' command to access data
values. This means that variable names are interpreted
according to the current frame; variables outside the cur-
rent frame cannot be displayed.
The JDB `dduummpp' and `pprriinntt' commands do not support expres-
sion evaluation. Hence, you cannot display arbitrary
expressions.
Parsing of JDB output is quite CPU-intensive, due to the
recognition of asynchronous prompts (any thread may output
anything at any time, including prompts). Hence, a pro-
gram producing much console output is likely to slow down
DDD considerably. In such a case, have the program run
with --ddeebbuugg in a separate window and attach JDB to it
using the --ppaasssswwdd option.
LLiimmiittaattiioonnss uussiinngg PPeerrll
There is no automatic data display in Perl. As a
workaround, DDD uses the `xx' command to access data val-
ues. This means that variable names are interpreted
according to the current frame; variables outside the cur-
rent frame cannot be displayed.
RREEPPOORRTTIINNGG BBUUGGSS
If you find a bug in DDD, please send us a bug report. We
will either attempt to fix the bug--or include the bug
description in the DDD `BBUUGGSS' file, such that others can
attempt to fix it. (Instead of sending bug reports, you
may also send _f_i_x_e_s; DDD is an excellent tool for debug-
ging itself :-)
WWhheerree ttoo SSeenndd BBuugg RReeppoorrttss
We recommend that you send bug reports for DDD via elec-
tronic mail to
dddddd--bbuuggss@@iippss..ccss..ttuu--bbss..ddee
As a last resort, send bug reports on paper to:
Technische UniversitΣt Braunschweig
Abteilung Softwaretechnologie
DDD-Bugs
Bⁿltenweg 88
D-38092 Braunschweig
GERMANY
IIss iitt aa DDDDDD BBuugg??
Before sending in a bug report, try to find out whether
the problem cause really lies within DDD. A common cause
DDD 3.1.1 1998-12-06 107
ddd(1) ddd(1)
of problems are incomplete or missing X or Motif installa-
tions, for instance, or bugs in the X server or Motif
itself. Running DDD as
dddddd ----cchheecckk--ccoonnffiigguurraattiioonn
checks for common problems and gives hints on how to
repair them.
Another potential cause of problems is the inferior debug-
ger; occasionally, they show bugs, too. To find out
whether a bug was caused by the inferior debugger, run DDD
as
dddddd ----ttrraaccee
This shows the interaction between DDD and the inferior
debugger on standard error while DDD is running. (If
`----ttrraaccee' is not given, this interaction is logged in the
file `$$HHOOMMEE//..dddddd//lloogg'.) Compare the debugger output to
the output of DDD and determine which one is wrong.
HHooww ttoo RReeppoorrtt BBuuggss
Here are some guidelines for bug reports:
+o The fundamental principle of reporting bugs usefully is
this: _r_e_p_o_r_t _a_l_l _t_h_e _f_a_c_t_s. If you are not sure whether
to state a fact or leave it out, state it!
+o Keep in mind that the purpose of a bug report is to
enable someone to fix the bug if it is not known. It is
not very important what happens if the bug is already
known. Therefore, always write your bug reports on the
assumption that the bug is not known.
+o Your bug report should be self-contained. Do not refer
to information sent in previous mails; your previous
mail may have been forwarded to somebody else.
+o Please report each bug in a separate message. This
makes it easier for us to track which bugs have been
fixed and to forward your bugs reports to the appropri-
ate maintainer.
+o Please report bugs in English; this increases the
chances of finding someone who can fix the bug. Do not
assume one particular person will receive your bug
report.
WWhhaatt ttoo IInncclluuddee iinn aa BBuugg RReeppoorrtt
To enable us to fix a DDD bug, you _m_u_s_t include the fol-
lowing information:
DDD 3.1.1 1998-12-06 108
ddd(1) ddd(1)
+o Your DDD configuration. Invoke DDD as
dddddd ----ccoonnffiigguurraattiioonn
to get the configuration information. If this does not
work, please include at least the DDD version, the type
of machine you are using, and its operating system name
and version number.
+o The debugger you are using and its version (e.g.,
`ggddbb--44..1177' or `ddbbxx aass sshhiippppeedd wwiitthh SSoollaarriiss 22..66').
+o The compiler you used to compile DDD and its version
(e.g., `ggcccc--22..88..11').
+o A description of what behavior you observe that you
believe is incorrect. For example, "DDD gets a fatal
signal" or "DDD exits immediately after attempting to
create the data window".
+o A _l_o_g _f_i_l_e showing the interaction between DDD and the
inferior debugger. By default, this interaction is
logged in the file `$$HHOOMMEE//..dddddd//lloogg'. Include all trace
output from the DDD invocation up to the first bug
occurrence; insert own comments where necessary.
+o If you wish to suggest changes to the DDD source, send
us context diffs. If you even discuss something in the
DDD source, refer to it by context, _n_e_v_e_r by line num-
ber.
Be sure to include this information in _e_v_e_r_y single bug
report.
HHIISSTTOORRYY
The history of DDD is a story of code recycling. The old-
est parts of DDD were written in 1990, when _A_n_d_r_e_a_s _Z_e_l_l_e_r
designed VSL, a box-based visual structure language for
visualizing data and program structures. The VSL inter-
preter and the BOX library became part of Andreas' Diploma
Thesis, a graphical syntax editor based on the Programming
System Generator PSG.
In 1992, the VSL and BOX libraries were recycled for the
NORA project. For NORA, an experimental inference-based
software development tool set, Andreas wrote a graph edi-
tor (based on VSL and the BOX libraries) and facilities
for inter-process knowledge exchange. Based on these
tools, _D_o_r_o_t_h_e_a _L__ⁿ_t_k_e_h_a_u_s (now _D_o_r_o_t_h_e_a _K_r_a_b_i_e_l_l) realized
DDD as her Diploma Thesis, 1994.
The original DDD had no source window; this was added by
Dorothea during the winter of 1994-1995. In the first
quarter of 1995, finally, Andreas completed DDD by adding
DDD 3.1.1 1998-12-06 109
ddd(1) ddd(1)
command and execution windows, extensions for DBX and
remote debugging as well as configuration support for sev-
eral architectures. Since then, Andreas has further main-
tained and extended DDD, based on the comments and sugges-
tions of several DDD users around the world. See the com-
ments in the DDD source for details.
Major DDD events:
April, 1995 DDD 0.9: First DDD beta release.
May, 1995 DDD 1.0: First public DDD release.
December, 1995 DDD 1.4: Machine-level debugging,
glyphs, EMACS integration.
October, 1996 DDD 2.0: Color displays, XDB support,
generic DBX support, command tool.
May, 1997 DDD 2.1: Alias detection, button tips,
status displays.
November, 1997 DDD 2.2: Persistent sessions, display
shortcuts.
June, 1998 DDD 3.0: Icon tool bar, Java support,
JDB support.
December, 1998 DDD 3.1: Data plotting, Perl support,
Python support, Undo/Redo.
EEXXTTEENNDDIINNGG DDDDDD
If you have any contributions to be incorporated into DDD,
please send them to `dddddd@@iippss..ccss..ttuu--bbss..ddee'. For sugges-
tions on what might be done, see the file `TTOODDOO' in the
DDD distribution.
DDDDDD NNEEEEDDSS YYOOUURR SSUUPPPPOORRTT!!
DDD needs your support! If you have any success stories
related to DDD, please write them down on a picture post-
card and send them to us:
Technische UniversitΣt Braunschweig
Abteilung Softwaretechnologie
Bⁿltenweg 88
D-38092 Braunschweig
GERMANY
You may also leave a message in the _D_D_D _G_u_e_s_t_b_o_o_k. It is
accessible via the DDD WWW page,
hhttttpp::////wwwwww..ccss..ttuu--bbss..ddee//ssoofftteecchh//dddddd// .
PPRRIINNTTIINNGG TTHHIISS MMAANNUUAALL
Invoke DDD with the `----mmaannuuaall' option to show this manual
page on standard output. This text output is suitable for
installation as formatted manual page (as
`//uussrr//llooccaall//mmaann//ccaatt11//dddddd..11' or similar) on UNIX systems.
A PostScript copy of this manual page, including several
DDD 3.1.1 1998-12-06 110
ddd(1) ddd(1)
DDD screen shots and diagrams, is included in the DDD
source distribution and available separately as
`dddddd..mmaann..ppss..ggzz' in
ffttpp::////ffttpp..iippss..ccss..ttuu--bbss..ddee//ppuubb//llooccaall//ssoofftteecchh//dddddd//ddoocc//
This directory also contains other documentation related
to DDD.
A ROFF copy of this manual page, suitable for installation
as manual page on UNIX systems (as
`//uussrr//llooccaall//mmaann//mmaann11//dddddd..11' or similar), is included in
the DDD source distribution.
CCOOPPYYRRIIGGHHTT
DDDDDD
DDD is Copyright (C) 1995, 1996, 1997, 1998 Technische
UniversitΣt Braunschweig, Germany.
DDD is free software; you can redistribute it and/or mod-
ify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either ver-
sion 2 of the License, or (at your option) any later ver-
sion.
DDD is distributed in the hope that it will be useful, but
_w_i_t_h_o_u_t _a_n_y _w_a_r_r_a_n_t_y; without even the implied warranty of
_m_e_r_c_h_a_n_t_a_b_i_l_i_t_y or _f_i_t_n_e_s_s _f_o_r _a _p_a_r_t_i_c_u_l_a_r _p_u_r_p_o_s_e. See
the License for more details.
You should have received a copy of the License along with
DDD. If not, invoke DDD with the `----lliicceennssee' option; this
will print a copy on standard output. To read the License
from within DDD, use `HHeellpp-->>DDDDDD LLiicceennssee'.
DDDDDD MMaannuuaall
This DDD manual is Copyright (C) 1995, 1996, 1997, 1998
Technische UniversitΣt Braunschweig, Germany.
Permission is granted to make and distribute verbatim
copies of this manual provided the copyright notice and
this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified ver-
sions of this manual under the conditions for verbatim
copying, provided that the entire resulting derived work
is distributed under the terms of a permission notice
identical to this one.
Permission is granted to copy and distribute translations
of this manual into another language, under the above con-
ditions for modified versions, except that this permission
DDD 3.1.1 1998-12-06 111
ddd(1) ddd(1)
notice may be included in translations approved by the
Free Software Foundation instead of in the original
English.
DDD 3.1.1 1998-12-06 112