Skip to content

zaporter/Explorant

Repository files navigation


Explorant
Explorant

A trace-based code exploration tool for understanding new codebases.

This project was completed as part of my MQP at the WPI Cake Lab in collaboration with Professor Robert J Walls and Professor Gary Pollice.

Key FeaturesHow To UseInstallCreditsLicense

Key-Features

  • Reproducibility
  • Ability to share completed graphs
  • Ability to add in-code annotations to serve as documentation
  • Ability to open up a gdb shell on any event during the program's last execution

How-to-Use

To use this program, first record an execution of a program and then explore it.

gcc -g3 examples/simple/simple.c -o examples/simple/a.out
./explorant.sh record -e examples/simple/a.out -s examples/simple/recording
./explorant.sh explore examples/simple/recording

This will pop open Explorant:

Explorant Whole

Install

This project is not yet bundled with any major package manager. For now, you must install from source.

Ubuntu: Install dependencies:

sudo apt-get install ccache cmake make g++-multilib gdb \
  pkg-config coreutils python3-pexpect manpages-dev git \
  ninja-build capnproto libcapnp-dev zlib1g-dev

Efficient recording requires use of the perf counters. You must enable them temporarily by:

sudo sysctl kernel.perf_event_paranoid=1

Or permenantly by:

echo 'kernel.perf_event_paranoid=1' | sudo tee '/etc/sysctl.d/51-enable-perf-events.conf'

Install docker: instructions

Install the rust toolchain: instructions

Download and build Explorant:

git clone https://github.com/zaporter/Explorant
cd Explorant
./docker_perms.sh
./explorant.sh --help

Credits

  • Robert J Walls For his passion, knowledge, and devotion to this project
  • Gary F Pollice For his insights, advice, and general assistance
  • rr For making this project possible with their incredible tool
  • synoptic For graph simplification
  • gimli For reading DWARF files
  • Sourceware For their excellent documentation of the GDB remote serial protocol
  • DallE For the logo
  • Markdownify For their beautiful readme

License

MIT

Releases

No releases published

Packages

No packages published