v5gdb 0.1.0-alpha.2

GDB-compatible debugger backend for the VEX V5 platform
# v5gdb: VEX V5 debugger

> *"One day we will have all the features of ROBOTC on the V5 brain" - Charles, 2114V*

v5gdb is a debugger backend for the VEX V5 platform that is compatible with GDB. It uses a combination of hardware and software breakpoints to implement features like line-by-line stepping and user-defined breakpoints. Users are also given the ability to read program state such as the arguments passed to the active function or global variables.

## Getting Started

Please read the [user manual]!

[user manual]: https://github.com/vexide/v5gdb/wiki

## Features

Here are the features of v5gdb that you can use today:

- Connect to your VEX V5 robot using GDB Remote Debugging
- Easily customize how v5gdb communicates with your PC
- Fully compatible with vexide and PROS frameworks
- Remotely view what's stored in variables and manage dynamically-placed software/hardware breakpoints
- Single-step through instructions and lines of code
- Pause your program in arbitrary locations by pressing Ctrl-C
- Simple to configure and enable via Rust and C++ APIs
- Basic support for thread-aware debugging (requires FreeRTOS)

## Future Goals

Here are the features of v5gdb that aren't done yet or are planned for the future:

- Easy to add to existing projects via a Rust crate on Crates.io and PROS template depot (for now, manually build v5gdb using the instructions in the [user manual])
- Compatibility with VEXcode framework (right now it crashes)
  - TBD on whether thread-aware debugging is possible for VEXcode

## Design

This project implements a debug server that can communicate with a GDB-compatible client over various transport methods. For more information, see the project's [internals wiki page](https://internals.vexide.dev/technical/debugger).

## License

Licensed under either of

* Apache License, Version 2.0

  ([LICENSE-APACHE]LICENSE-APACHE or <http://www.apache.org/licenses/LICENSE-2.0>)
* MIT license

  ([LICENSE-MIT]LICENSE-MIT or <http://opensource.org/licenses/MIT>)

at your option.

## Contribution

For guidelines for contributors, see [CONTRIBUTING.md](CONTRIBUTING.md).

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.