about summary refs log tree commit diff stats
path: root/tools/browse_trace.readme.md
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2019-12-07 16:36:40 -0800
committerKartik Agaram <vc@akkartik.com>2019-12-07 18:15:49 -0800
commitf821c0e28b5e9ae9c91758276acd10484f8388bc (patch)
tree3aba2f5e49d5a45bc328db7da077b7df527483f0 /tools/browse_trace.readme.md
parent9e45cae061fd345d3270f236769bd94966a42eb2 (diff)
downloadmu-f821c0e28b5e9ae9c91758276acd10484f8388bc.tar.gz
5800 - move `browse_trace` to `tools/` dir
Diffstat (limited to 'tools/browse_trace.readme.md')
-rw-r--r--tools/browse_trace.readme.md86
1 files changed, 86 insertions, 0 deletions
diff --git a/tools/browse_trace.readme.md b/tools/browse_trace.readme.md
new file mode 100644
index 00000000..d607095e
--- /dev/null
+++ b/tools/browse_trace.readme.md
@@ -0,0 +1,86 @@
+### 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
+  ./subx --trace run apps/factorial
+  ```
+
+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
+  tools/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 `]`?