Build Instructions and Requirements
The visualization component ('cfviz-frontend') is built in Rust, and currently requires cargo (or at least rustc) to build from source. Ensure that you have installed Rust, and after cloning the this repository, run
in the parent directory to build.
To use, run:
inside a gdb command prompt (where
<srcdir> is the root directory of the
cfviz checkout. Then run
cfviz at any time to visualize the control
flow of the current function.
This plugin supports both vanilla gdb and rr. However, note that with
vanilla gdb, the
cfviz command will only visualize the remainder of the function's
execution, while with rr it will visualize the entire function execution
no matter what point in the function it's invoked from.
Issues with Color Display
Currently, the output is colorized via ANSI CSI sequences, with 24-bit ("TrueColor") color support enabled by default. Most modern terminal emulators should handle this correctly, however some standard terminal emulators (e.g. MacOS terminal.app) do not seem to be up to par.
The visualization component has a number of different color options
implemented. If you find that the 24-bit colors are not being displayed
correctly on your terminal, instead of running
cfviz you can run:
to limit output to 8-bit (256) ANSI colors, or
to produce output without any ANSI escape codes at all (should be compatible even with non-ANSI terminals).
The visualization component can also display a color test which you can use to see which color options your terminal can support. To run this test, make sure you are in the root directory of the cfviz checkout, and then run:
cd frontend/cmd && cargo run -- --colortest