about summary refs log blame commit diff stats
path: root/tools/browse_trace.readme.md
blob: 8c3f50f4688f8c92e91aad789eb264cb37f93c95 (plain) (tree)
1
2
3
4
5
6
7
8

                                                            
                                             

          


                                                                        








                                                                            

                                     


























                                                                               

                                                 















                                                              


                                                                












                                                                       







                                                                       
### A debugging helper that lets you zoom in/out on a trace.

To try it out, first create an example trace:

  ```shell
  $ cd linux
  $ bootstrap/bootstrap translate [01]*.subx factorial.subx -o factorial
  $ bootstrap/bootstrap --trace run 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
  $ cd ..
  $ tools/browse_trace linux/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 `]`?
ef='#n681'>681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791