How to Use

R. Bernstein edited this page May 22, 2017 · 30 revisions
Table of Contents

See also the notes for specific buffers:

Loading and Unloading

To load the package:

  M-x load-library realgud

To unload the package

  M-x realgud-unload-features

And, of course, to reload do an unload followed by a load.

Supported Debuggers

See Debuggers Supported for a list of debuggers that are supported.

When there is no conflict with command from another package like gud, there are function aliases to the names without realgud:. For example:

M-x trepan2

is the same as

M-x realgud:trepan2

This means gud, perldb, pdb, and jdb (among possibly others) need to have the realgud: prefix if you want the realgud to run these.

You can also attach a debugger tracking mode to an existing comint shell. Inside a shell buffer:

M-x realgud-track-mode

You will be asked for the name of a buffer. Use one of the names above without realgud-. For example, trepan.

Some debuggers have the ability to call the debugger from inside a running program rather than at the outset. In those debuggers, there is often an alternate command you can run which appends -delayed after the debugger-name. Specifically:

M-x trepan2-delayed

works like trepan2 but the program is run from the outset via invoking Python and it will stop only after the debugger is called from the with program such as via from trepan.api import debug; debug().

For gdb, in order to track source automatically, inside gdb issue:

set annotate 1

History Ring

The debugger saves marks in a history ring at the places in source buffers that you have stopped at. To move around M-up and M-down in the debugger command buffer. (The command buffer is where you enter debugger commands which is attached to the debugger process. It is some sort of comint shell.

Short-key mode

There is a "short-key" mode which can be used in source buffers which allows single-keystroke commands, like "s" for step (into). And "n" for "next" or step through.

The short-key mode makes the source read only. To get out of short-key mode, you can use the insert key. To get back in use <Ctrl-insert>.

If you're having key mapping conflicts with other mode (e.g. evil-mode), you can assign a prefix to the same key shortcuts by adding the following hook:

(add-hook 'realgud-short-key-mode-hook
        (lambda ()
          (local-set-key "\C-c" realgud:shortkey-mode-map)))

Multiple files

You may want to launch the debugger against one file (e.g. main.py) and use short-key mode on other files (e.g. if main.py uses a function defined in a module that you want to debug). You need to attach each file where you want to use short-key mode to the debugger command buffer. You can do so with the shortcut C-x C-a C-q. It will prompt you to choose one that it's running. Once you enter it, you are all set.

## Editor marks in source buffer ##

The editor uses marks in the source buffer. However if you edit the program and then restart the debugger you may need to clear these marks with

M-x loc-change-clear-buffer

Backtrace buffer

I've been working on a backtrace buffer. To get that set up, issue from a debugger command window:

M-x realgud:backtrace-init

Or in a source buffer in short-key mode:

M-x realgud:window-bt

which is by default bound to the key "F" (for frame).