Skip to content

compiler-research/idd

Repository files navigation

Introduction

IDD is a tool for performing interactive dynamic differential debugging capable to identify functional and performance regressions.

🔰 About

IDD loads two versions of the same application. The first one is the base version that works as expected while the second version of the same program has a regression introduced. IDD inspects the two versions of the applications using external tools like gdb and lldb. The two applications are executed side by side and the user is allowed to dispatch commands to the underlying debuggers in order to expect their internal states and isolate the origin of the regression.

🚀 Demo

idd

⚡ Usage

Write about how to use this project.

python3 idd.py -c gdb -ba <path to base executable> -ra <path to regressed executable>

🔌 Installation

  • Steps on how to install this project on Ubuntu 22.04

-- Creating new environment:

$ python3 -m venv iddenv
$ source iddenv/bin/activate

-- Installing required packages:

$ pip3 install textual textual_inputs pygdbmi

🌸 Community

Join our discord for discussions and collaboration.

🔥 Contribution

Your contributions are always welcome and appreciated. Following are the things you can do to contribute to this project.

  1. Report a bug
    If you think you have encountered a bug, and I should know about it, feel free to report it here and we could take care of it.

  2. Request a feature
    You can also request for a feature here, and if it will viable, it will be picked for development.

  3. Create a pull request
    It can't get better then this, your pull request will be appreciated by the community. You can get started by picking up any open issues from here and make a pull request.

Cite

@article{vassilev2020idd,
  title={IDD--a platform enabling differential debugging},
  author={Vassilev, Martin and Vassilev, Vassil and Penev, Alexander},
  journal={Cybernetics and Information Technologies},
  volume={20},
  number={1},
  pages={53--67},
  year={2020}
}

Issues

  1. Support entering commands to a specific analyzer.
  2. Make panels scrollable
  3. Make panels configurable