/flameshow

A terminal Flamegraph viewer.

Primary LanguagePython

Flameshow

tests codecov PyPI PyPI - Python Version PyPI - Downloads Code style: black

Flameshow is a terminal Flamegraph viewer.

Features

  • Renders Flamegraphs in your terminal
  • Supports zooming in and displaying percentages
  • Keyboard input is prioritized
  • All operations can also be performed using the mouse.
  • Can switch to different sample types

Install

Flameshow is written in pure Python, so you can install via pip:

pip install flameshow

But you can also run it through nix:

nix run github:laixintao/flameshow
# Or if you want to install it imperatively:
nix profile install github:laixintao/flameshow

Usage

View golang's goroutine dump:

$ curl http://localhost:9100/debug/pprof/goroutine -o goroutine.out
$ flameshow goroutine.out

After entering the TUI, the available actions are listed on Footer:

  • q for quit
  • h j k l or for moving around, and Enter for zoom in, then Esc for zoom out.
  • You can also use a mouse, hover on a span will show it details, and click will zoom it.

Supported Formats

As far as I know, there is no standard specification for profiles. Different languages or tools might generate varying profile formats. I'm actively working on supporting more formats. Admittedly, I might not be familiar with every tool and its specific format. So, if you'd like Flameshow to integrate with a tool you love, please feel free to reach out and submit an issue.

Development

If you want to dive into the code and make some changes, start with:

git clone git@github.com:laixintao/flameshow.git
cd flameshow
pip install poetry
poetry install

This project is proudly powered by textual.