sdb_debugger 0.2.2

Book: Building a Debugger. Rust port of C++ debugger sdb
Documentation
#include <cstdio>
void an_innocent_function() {
    std::puts("Putting pineapple on pizza...");
}

void an_innocent_function_end() {}

#include <numeric>
int checksum() {
    auto start = reinterpret_cast<volatile const char*>(
    &an_innocent_function);
    auto end = reinterpret_cast<volatile const char*>(
    &an_innocent_function_end);
    return std::accumulate(start, end, 0);
}

#include <unistd.h>
#include <signal.h>
int main() {
    auto safe = checksum();
    auto ptr = reinterpret_cast<void*>(&an_innocent_function);
    write(STDOUT_FILENO, &ptr, sizeof(void*));
    fflush(stdout);
    raise(SIGTRAP);
    while (true) {
        if (checksum() == safe) {
            an_innocent_function();
        }
        else {
            puts("Putting pepperoni on pizza...");
        }
        fflush(stdout);
        raise(SIGTRAP);
    }
}