mu/browse_trace
nc c0a904382b made first compute-offset test pass 2019-07-07 21:19:50 -04:00
..
Readme.md 5065 2019-04-09 08:41:44 -07:00
browse_trace 4987 - support `browse_trace` tool in SubX 2019-02-25 01:50:53 -08:00
browse_trace.cc made first compute-offset test pass 2019-07-07 21:19:50 -04:00
build 4987 - support `browse_trace` tool in SubX 2019-02-25 01:50:53 -08:00
clean 4990 2019-02-25 01:50:53 -08:00

Readme.md

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):

./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:

./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 ]?