A debugger is a software application that allows the user to alter the execution of its application, for example, by stopping it into specific lines of code, inspecting the values of variables, or stopping when they are read or written. A segmentation fault is a memory access violation detected by a hardware component of the processor, the memory management unit. Usually, when the hardware detects a segmentation fault, it notifies the operating system, which in turn sends a signal to the offending application. Expander features a messaging system at the core of the expander concept: two modules can exchange data of any type at sampling rate, in a producer/consumer fashion, by writing and reading on two independent data structures. Code versioning is the practice of managing the code with a software versioning system and is fundamental to keep a clear history of the developed code, see changes, implement new features using branches, and manage teamwork.