[Top] | [Contents] | [Index] | [ ? ] |
1. Getting started | ||
2. Multi-window | ||
3. Debugger Buffers | ||
4. Emacs Debugger Commands | Indexes (nodes containing large menus) | |
Emacs Command Index | An item for each GNU/Emacs command name. | |
Emacs Function Index | An item for each Emacs Function. | |
Key Binding Index | An item for each Emacs Debugger Command. | |
— The Detailed Node Listing — Getting started | ||
---|---|---|
1.1 Installation | How to install this package | |
1.2 Emacs rdebug | Invoke the ruby debugger initially | |
1.3 Entering rdebug from an existing shell buffer | ||
Debugger Buffers | ||
3.1 Emacs Debugger Command buffer | ||
3.2 Commands from the source script | ||
Emacs Debugger Commands | ||
4.1 Emacs Debugger Common Commands | ||
4.2 Emacs Debugger Breakpoint Buffer Commands | ||
4.3 Emacs Debugger Stack Buffer Commands | ||
4.4 Emacs Debugger Variable Buffer Commands | ||
4.5 Emacs Debugger Watch Buffer Commands | ||
4.6 Emacs Debugger GUD Commands | ||
This file describes rdebug
, the Emacs interface to Ruby
Debugger, ruby-debug
, version 0.1
This is the 0.10.4rc1 Edition, 2 August 2010
A special interface which comes with Ruby that allows you to use
GNU Emacs to view (and edit) the source files for the program you
are debugging with ruby-debug. However you must be using at least
version 21 of GNU Emacs, but with GNU Emacs version 22 or 23
there are even more debugging features available. M-x
show-emacs-version
inside GNU Emacs will tell you what version you
are running.
This package provide a full-fledged debugging environment, on par with modern integrated development environments. Once the debugger has been activated, the Emacs frame is divided into a number of dedicated debugger windows.(1)
This package comes with a number of predefined window layouts. It is fully customizable so you can create your own.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
1.1 Installation | How to install this package | |
1.2 Emacs rdebug | Invoke the ruby debugger initially | |
1.3 Entering rdebug from an existing shell buffer | ||
1.4 Emacs Customization | Customizing beavior in Emacs |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
If you want to build the documentation and install Emacs files, you need:
Download the ruby-debug-extra tarball from rubyforge http://rubyforge.org/frs/?group_id=1900&release_id=28306
For example for the 0.10.3 release:
wget http://rubyforge.org/frs/download.php/46883/ruby-debug-extra-0.10.3.tar.gz |
Untar this, run configure, make, make check and make install. For example:
$ tar -xpf ruby-debug-extra-0.10.3.tar.gz $ cd ruby-debug-extra-0.10.3 $ sh ./configure $ make && make check $ sudo make install # or as root: make install |
configure --help
gives customization help.
Environment variable EMACS
can be used to find which emacs to use,
should need to specify which emacs to use.
After installing the Emacs code on your computer, to use the interface
inside Emacs load the file rdebug.el
as in M-x
load-library rdebug
. This file is a light-weight file, basically it
only contains a handful of autoload
directives.
If you want to automatically load this package, you can place the
either of the following in your ~/.emacs
file:
(require 'rdebug) |
or
(autoload 'rdebug "rdebug" "ruby-debug interface" t) |
In addition, you must have Ruby and ruby-debug installed.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Use the command M-x rdebug in GNU Emacs to start debugging. Give the executable file you want to debug as an argument. Make sure to use the version that comes with this package as this is newer than that supplied with GNU Emacs.
The rdebug command starts ruby-debug as a subprocess of Emacs, with input and output through a newly created Emacs buffer.
Using ruby-debug under Emacs is just like using ruby-debug normally except for two things:
This applies both to ruby-debug commands and their output, and to the input and output done by the program you are debugging.
This is useful because it means that you can copy the text of previous commands and input them again; you can even use parts of the output in this way.
All the facilities of GNU Emacs’ Shell mode are available for interacting with your script. In particular, you can send signals the usual way—for example, C-c C-c for an interrupt, C-c C-z for a stop.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Many times it’s not feasible to enter the debugger from the outset. Instead a call to the debugger is put inside the program.
It is also possible in GNU emacs to use a (“comint”) shell and set a mode to watch for ruby-debug prompts and track the source code in another window. See (Emacs)Interactive Shell section ‘Shell’ in The GNU Emacs Manual.
To enable, this run M-x turn-on-rdebug-track-mode. There is some
overhead involved in scanning output, so if you are not debugging Ruby
programs you probably want to turn this off which can be done via the
M-x turn-off-rdebugtrack
command.
This command doesn’t set up the various buffers such as tracking local variables and the call stack. A more ambitious takeover of the shell which does set up these buffers is can be done via M-x rdebug-track-attach. A name of the program is solicited. This is used to make and association between the buffers. After this is done, you might not be able to use the shell for anything other than the debug session.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
In this manual we present a number of GNU Emacs lisp variables and functions that you can use to configure the debugger interface. In addition, you can use the GNU Emacs customize system, see the <menu-bar> <debugger> <options> <customize> menu item.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
In the multi-window debugger mode, a number of buffers are visible when the debugger starts. This chapter will describe each of them, in addition it will describe the features associated with the multi-window mode.
The default multi-window layout looks like the following:
+----------------------------------------------------------------------+ | Toolbar | +-----------------------------------+----------------------------------+ | Debugger Stack Buffer | Local Variables buffer | +-----------------------------------+----------------------------------+ | | | Source buffer | | | +----------------------------------------------------------------------+ | Debugger Command Buffer | +----------------------------------------------------------------------+
However there are other layouts available. Look at the “Window Layout” drop-down list under the “Debugger” menu in the toolbar.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The variable rdebug-many-windows
controls if multi-window mode
should be used, it is enabled by default. When starting the debugger
using the M-x rdebug
mode the command line option --emacs
3
must be specified (this is also the default).
When attaching to an already running debugger process, you must give the debugger command set annotate 3.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
When the debugger is started, the original window layout of GNU Emacs is replaced with the window layout of the debugger. You can switch back and forth between the original window layout and the debugger layout using M-x rdebug-display-original-window-configuration and M-x rdebug-display-debugger-window-configuration.
If, for some reason, the debugger layout has been garbled you can restore it to the original state using M-x rdebug-restore-debugger-window-layout.
The debugger provides a number of different window layouts. The easies
way to try them out is to use the menu <menu-bar> <debugger>
<layout> and select any in the section starting with Standard
.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
All buffers in this section share a set of commands for common debugger operations and for switching between buffers. In addition, each buffer has got a set of dedicated commands.
All debugger buffers, with the exception of source and the debugger shell window, are called secondary buffers.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The debugger provides key-bindings that work in all debugger windows, including Ruby source buffers. The key bindings are designed to match keys of commonly used debugger environments.
The variable rdebug-populate-common-keys-function
can be assigned
to a function that should bind the keys use. Three functions are
provided rdebug-populate-common-keys-standard
,
...-eclipse
, and ...-netbeans
.
Command | Standard | Eclipse | Netbeans |
---|---|---|---|
Run | f5 | ||
Quit | S-f5 | ||
Toggle Breakpoint | f9 | ||
Enable/Disable Breakpoint | C-f9 | S-C-b | S-f8 |
Step over | f10 | f6 | f8 |
Step into | f11 | f5 | f7 |
Step out | S-f11 | f7 | M-S-f7 |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The following commands are available in all secondary windows.
Capital letters move between secondary buffers as mentioned above (jump to if visible or replace a secondary if not).
step (edebug compatible)
Up in the stack trace
Down in the stack trace
Help
Display breakpoints buffer
Display command buffer
Display program output
Display source window
Display stack trace buffer
display variables buffer
display watch buffer
Set breakpoint
Continue (i.e. run)
Remove breakpoint
Finish (i.e. step out of the current function)
Next (i.e. step into function)
Quit
Restart
Step (i.e. step over function)
You can use the same commands in the source buffer if you enable
rdebug-short-key-mode
. The best way to do this is to add the
following to your init file:
(add-hook 'rdebug-mode-hook 'rdebug-turn-on-short-key-mode) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The debugger shell window is the main communication channel between ruby-debug and GNU Emacs. You can use the shell to issue debugger commands directly. In addition, any GNU Emacs debugger command you issue will be translated into shell commands, and the output will be parsed.
It is the ambition that the GNU Emacs debugger interface should be in a state where the debugger shell window would not need to be visible.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The source buffers (or buffers) contains the actual Ruby source code that is being debugged. A small arrow in the left fringe displays the current line. Active breakpoints are displayed as red dots and passive as grey.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The output buffer displays any output the debugged program emits.
The option rdebug-use-separate-io-buffer
controls if the output
buffer should be used, or if the output would go into the debugger shell
buffer.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
In this buffer, local and object variables are displayed. The values of the variables can be edited.
Edit the value
Print the value
Pretty-print the value
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The stack trace buffer displays the function that is currently being debugger, the function that called it, etc., all the way up to the originally called function.
You can navigate in the stack trace buffer in order to see the source of any function in the call chain. The Variables buffer will also be updated to reflect the local variables of that function.
Select a function to display
Go to a stack frame
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The Watch Buffer can display arbitrary expressions, including, but not limited to, global variables.
Add a watch expression
Delete a watch expression
Edit a watch expression
Go to the expression
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The Breakpoints Buffer displays all breakpoints that currently are defined and shows if they are enabled or disabled.
Toggle a breakpoint between enabled and disabled
Add a breakpoint condition
Goto a breakpoint
Delete a breakpoint
Go to the expression
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The Help Buffer is displayed whenever you press ?
. It will
display a help text on the available debugger commands and commands to
navigate between the buffers.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
3.1 Emacs Debugger Command buffer | ||
3.2 Commands from the source script |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Each time ruby-debug displays a stack frame, Emacs automatically finds the source file for that frame and puts an arrow (‘=>’) at the left margin of the current line. Emacs uses a separate buffer for source display, and splits the screen to show both your ruby-debug session and the source.
Explicit ruby-debug list
or search commands still produce output as
usual, but you probably have no reason to use them from GNU Emacs.
Warning: If the directory where your script resides is not your current directory, it can be easy to confuse Emacs about the location of the source files, in which case the auxiliary display buffer does not appear to show your source. ruby-debug can find programs by searching your environment’s
PATH
variable, so the ruby-debug input and output session proceeds normally; but Emacs does not get enough information back from ruby-debug to locate the source files in this situation. To avoid this problem, either start ruby-debug mode from the directory where your script resides, or specify an absolute file name when prompted for the M-x gdb argument.A similar confusion can result if you use the ruby-debug
file
command to switch to debugging a program in some other location, from an existing ruby-debug buffer in Emacs.
(preceded by M-: or ESC :, or typed in the *scratch*
buffer, or
in your ‘.emacs’ file).
In the ruby-debug I/O buffer, you can use the Emacs commands listed
below in addition to the standard Shell mode commands. The I/O buffer
name name is usually *gud-
script-name*
, where
script-name is the name of the script you are debugging.
Many of the commands listed below are also bound to a second key sequence which also can be used in the also be used in the source script. These are listed in Commands from the source script.
In secondary buffers many commands are available the corresponding
final keystroke. For example C-c n
in a secondary buffer is
n
.
Describe the features of Emacs’ ruby-debug Mode.
Set breakpoint at current line.
Remove breakpoint at current line.
Fix up a possibly garbled display, and redraw the arrow.
Insert after prompt old input at point as new input to be edited. Calls ‘comint-get-old-input’ to get old input.
Step one line, skipping functions. (Step over).
Delete all output from interpreter since last input. Does not delete the prompt.
Step one source line. Same as ruby-debug step
command. The
GNU Emacs command name is gud-step
and C-x C-a C-s
is an alternate binding which can be used in the source
script.
With a numeric argument, run that many times. See (Emacs)Arguments section ‘Numeric Arguments’ in The GNU Emacs Manual.
Set temporary breakpoint at current line.
Stop the current subjob. This command also kills the pending input between the process mark and point.
WARNING: if there is no current subjob, you can end up suspending the top-level process running in the buffer. If you accidentally do this, use M-x comint-continue-subjob to resume the process. (This is not a problem with most shells, since they ignore this signal.)
Send quit signal to the current subjob. This command also kills the pending input between the process mark and point.
Run step+
.
Insert the index-th argument from the previous Comint command-line at point. Spaces are added at beginning and/or end of the inserted string if necessary to ensure that it’s separated from adjacent arguments. Interactively, if no prefix argument is given, the last argument is inserted. Repeated interactive invocations will cycle through the same argument from progressively earlier commands (using the value of index specified with the first command).
Go up a stack frame. With a numeric argument, go up that many
stack frames. Same ruby-debug up
command.
See (Emacs)Arguments section ‘Numeric Arguments’ in The GNU Emacs Manual.
Go down a stack frame. Same as ruby-debug down
.
With a numeric argument, go down that many stack frames.
See (Emacs)Arguments section ‘Numeric Arguments’ in The GNU Emacs Manual.
Display the rdebug help buffer.
Display the rdebug breakpoints buffer.
Display the rdebug command buffer.
Display the rdebug output buffer.
Restart or run the script. Same as ruby-debug run
command.
Display the rdebug stack buffer.
Display the rdebug variables buffer.
Display the rdebug watch buffer.
Finish executing current function.
Finish executing current function. The same as ruby-debug
finish
command.
Execute to next source line in this function, skipping all function
calls. Same as ruby-debug next
command.
With a numeric argument, run that many times.
Resynchronize the current position with the source window. The
GNU Emacs command name is gud-refresh
and C-x C-a
C-l
is an alternate binding which also can be used in the source script.
Shows argument variables (e.g. $1
, $2
) of the current
stack frame. Same as ruby-debug info args
command. The
GNU Emacs command name is gud-args
and C-x C-a a
is
an alternate binding which also can be used in the source script.
Show stack trace. Same as ruby-debug where
command. The
GNU Emacs command name is gud-where
and C-x C-a T
is
an alternate binding which can be used in the source
script.
In any source file, the Emacs command C-x SPC (gud-break
)
tells ruby-debug to set a breakpoint on the source line point is on.
If you accidentally delete the source-display buffer, an easy way to get
it back is to type the command frame
in the ruby-debug buffer, to
request a frame display; when you run under Emacs, this recreates
the source buffer if necessary to show you the context of the current
frame.
The source files displayed in Emacs are in ordinary Emacs buffers which are visiting the source files in the usual way. You can edit the files with these buffers if you wish; but keep in mind that ruby-debug communicates with Emacs in terms of line numbers. If you add or delete lines from the text, the line numbers that ruby-debug knows cease to correspond properly with the code.
See (Emacs)Debugger Operation section ‘Debugger Operation’ in The GNU Emacs Manual.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
tells ruby-debug to set a breakpoint on the source
line point is on. (gud-break
)
gud-linetrace
Restart or run the script. Same as ruby-debug run
command. The
GNU Emacs command name is gud-finish
. In the corresponding
I/O buffer, C-c R
is an alternate binding.
Show stack trace. Same as ruby-debug where
command. In the
corresponding I/O buffer, C-c T
is an alternate
binding.
Go up a stack frame. With a numeric argument, go up that many
stack frames. Same ruby-debug up
command.
See (Emacs)Arguments section ‘Numeric Arguments’ in The GNU Emacs Manual.
The GNU Emacs command name is gud-up
. In the corresponding
I/O buffer, C-c <
is an alternate binding.
Go down a stack frame. Same as ruby-debug down
.
With a numeric argument, go down that many stack frames.
See (Emacs)Arguments section ‘Numeric Arguments’ in The GNU Emacs Manual.
The GNU Emacs command name is gud-down
. In the
corresponding I/O buffer, C-c >
is an alternate binding.
gud-tbreak
Step one source line. Same as ruby-debug step
command.
With a numeric argument, run that many times. See (Emacs)Arguments section ‘Numeric Arguments’ in The GNU Emacs Manual.
The GNU Emacs command name is gud-step
. In the
corresponding I/O buffer, C-x C-a C-s
is an alternate binding.
gud-statement
Restart or run the script. Same as ruby-debug run
command. The
GNU Emacs command name is gud-run
. In the corresponding I/O
buffer, C-c R
is an alternate binding.
Delete breakpoint. gud-remove
gud-print
Execute to next source line in this function, skipping all function
calls. Same as ruby-debug next
command. With a numeric
argument, run that many times. See (Emacs)Arguments section ‘Numeric Arguments’ in The GNU Emacs Manual.
The GNU Emacs command name is gud-next
. In the
corresponding I/O buffer, C-x C-a C-n
is an alternate binding.
gud-finish
Continue execution of your script Same as ruby-debug continue
command. The GNU Emacs command name is gud-cont
. In the
corresponding I/O buffer, C-x C-a C-r
is an alternate binding.
gud-break
gud-args
Shows argument variables (e.g. $1
, $2
) of the current
stack frame. Same as ruby-debug info args
command. The
GNU Emacs command name is gud-args
. In the corresponding
I/O buffer, C-c a
is an alternate binding which also can be
used in the source script.
Move to current position in this source window. The GNU Emacs
command name is gud-refresh
. In the corresponding I/O buffer,
C-x C-a C-l
is an alternate binding.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The commands in this section are used to make a secondary buffer visible. If the buffer doesn’t exist, nothing is done. The way the buffer is made visible is follows the following rules tried in order:
The commands are also have key bindings that end in an uppercase letter. This letter is given in parenthesis. When in one of the secondary buffers, the uppercase letter is bound to the command as well.
Display the rdebug breakpoints buffer. Bound to: C-x C-a B, <menu-bar> <debugger> <view> <breakpoints>. Secondary buffers: O.
Display the debugger command buffer.
Bound to: C-x C-a C, <menu-bar> <debugger> <view> <shell>.
Display the debugger output buffer.
Bound to: C-x C-a O, <menu-bar> <debugger> <view> <output>. Secondary buffers: O.
Display the debugger stack buffer. Bound to: C-x C-a T, <menu-bar> <debugger> <view> <stack>. Secondary buffers: T.
Display the debugger variables buffer. Bound to: C-x C-a V, <menu-bar> <debugger> <view> <variables>. Secondary buffers: V.
Display the debugger variables buffer. Bound to: C-x C-a W, <menu-bar> <debugger> <view> <watch>. Secondary buffers: V.
Display the current layout of windows of the rdebug Ruby debugger.
Display the layout of windows prior to starting the rdebug Ruby debugger. This function is called upon quitting the debugger and rdebug-many-windows is not nil.
Breakpoints, Display expressions and Stack Frames all have numbers associated with them which are distinct from line numbers. In a secondary buffer, this function is usually bound to a numeric key. which will position you at that entry number. To go to an entry above 9, just keep entering the number. For example, if you press 1 and then 9, you should jump to entry 1 (if it exists) and then 19 (if that exists). Entering any non-digit will start entry number from the beginning again.
Kill the debugger process associated with the buffer.
When rdebug-many-windows is active, the original window layout is restored.
Display the initial ruby debugger window layout.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Major mode for displaying breakpoints in a secondary window. Uses rdebug-breakpoints-mode-map.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Major mode for displaying the stack trace. Uses rdebug-frames-mode-map.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Add a display expression.
Delete a display expression.
Edit a display expression.
Major mode for displaying the display expressions. Uses rdebug-watch-mode-map.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Insert after prompt old input at point as new input to be edited. Calls ‘comint-get-old-input’ to get old input.
Delete all output from interpreter since last input. Does not delete the prompt.
Set a breakpoint on the source line point is on.
Continue execution.
Step one line, skipping functions. (Step over).
Fix up a possibly garbled display, and redraw the arrow.
Remove breakpoint at current line.
Step one statement. (Step into)
Run step+
—like gud-step
but ensure we go to a new
line.
Set temporary breakpoint at current line.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Jump to: | C |
---|
Jump to: | C |
---|
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Jump to: | C G R |
---|
Jump to: | C G R |
---|
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[Top] | [Contents] | [Index] | [ ? ] |
If you are an GNU Emacs traditionalist, you can, of course, run this package with only a shell and source buffer
[Top] | [Contents] | [Index] | [ ? ] |
This document was generated by R. Bernstein on August 2, 2010 using texi2html 1.82.
The buttons in the navigation panels have the following meaning:
Button | Name | Go to | From 1.2.3 go to |
---|---|---|---|
[ < ] | Back | Previous section in reading order | 1.2.2 |
[ > ] | Forward | Next section in reading order | 1.2.4 |
[ << ] | FastBack | Beginning of this chapter or previous chapter | 1 |
[ Up ] | Up | Up section | 1.2 |
[ >> ] | FastForward | Next chapter | 2 |
[Top] | Top | Cover (top) of document | |
[Contents] | Contents | Table of contents | |
[Index] | Index | Index | |
[ ? ] | About | About (help) |
where the Example assumes that the current position is at Subsubsection One-Two-Three of a document of the following structure:
This document was generated by R. Bernstein on August 2, 2010 using texi2html 1.82.