87 lines
2.9 KiB
Markdown
87 lines
2.9 KiB
Markdown
### A debugging helper that lets you zoom in/out on a trace.
|
|
|
|
To try it out, first create an example trace (from the top-level `mu/`
|
|
directory):
|
|
|
|
```shell
|
|
./mu --trace nqueens.mu
|
|
```
|
|
|
|
This command will save a trace of its execution in a file called `last_run`.
|
|
The trace consists of a series of lines, each starting with an integer depth
|
|
and a single-word 'label', followed by a colon and whitespace.
|
|
|
|
Now browse this trace:
|
|
|
|
```shell
|
|
./browse_trace/browse_trace last_run
|
|
```
|
|
|
|
You should now find yourself in a UI showing a subsequence of lines from the
|
|
trace, each line starting with a numeric depth, and ending with a parenthetical
|
|
count of trace lines hidden after it with greater depths.
|
|
|
|
For example, this line:
|
|
|
|
```
|
|
2 app: line1 (30)
|
|
```
|
|
|
|
indicates that it was logged with depth 2, and that 30 following lines have
|
|
been hidden at a depth greater than 2.
|
|
|
|
(As an experiment, hidden counts of 1000 or more are highlighted in red.)
|
|
|
|
The UI provides the following hotkeys:
|
|
|
|
* `q` or `ctrl-c`: Quit.
|
|
|
|
* `Enter`: 'Zoom into' this line. Expand lines hidden after it that were at
|
|
the next higher level.
|
|
|
|
* `Backspace`: 'Zoom out' on a line after zooming in, collapsing lines below
|
|
expanded by some series of `Enter` commands.
|
|
|
|
* `j` or `down-arrow`: Move cursor down one line.
|
|
* `k` or `up-arrow`: Move cursor up one line.
|
|
* `J` or `ctrl-f` or `page-down`: Scroll cursor down one page.
|
|
* `K` or `ctrl-b` or `page-up`: Scroll cursor up one page.
|
|
* `h` or `left-arrow`: Scroll cursor left one character.
|
|
* `l` or `right-arrow`: Scroll cursor right one character.
|
|
* `H`: Scroll cursor left one screen-width.
|
|
* `L`: Scroll cursor right one screen-width.
|
|
|
|
* `g` or `home`: Move cursor to start of trace.
|
|
* `G` or `end`: Move cursor to end of trace.
|
|
|
|
* `t`: Move cursor to top line on screen.
|
|
* `c`: Move cursor to center line on screen.
|
|
* `b`: Move cursor to bottom line on screen.
|
|
* `T`: Scroll line at cursor to top of screen.
|
|
|
|
* `/`: Search forward for a pattern.
|
|
* `?`: Search backward for a pattern.
|
|
* `n`: Repeat the previous `/` or `?`.
|
|
* `N`: Repeat the previous `/` or `?` in the opposite direction.
|
|
|
|
After hitting `/`, the mini-editor on the bottom-most line supports the
|
|
following hotkeys:
|
|
* ascii characters: add the key to the pattern.
|
|
* `Enter`: search for the pattern.
|
|
* `Esc` or `ctrl-c`: cancel the current search, setting the screen back
|
|
to its state before the search.
|
|
* `left-arrow`: move cursor left.
|
|
* `right-arrow`: move cursor right.
|
|
* `ctrl-a` or `home`: move cursor to start of search pattern.
|
|
* `ctrl-e` or `end`: move cursor to end of search pattern.
|
|
* `ctrl-u`: clear search pattern before cursor
|
|
* `ctrl-k`: clear search pattern at and after cursor
|
|
|
|
## wish list
|
|
|
|
* Simple regular expression search: `.` and `*`.
|
|
* Expand into lower depths as necessary when searching.
|
|
* Zoom out everything.
|
|
* Zoom out lines around the cursor to the highest (or specified) depth.
|
|
Maybe a number followed by `]`?
|