Cinquecento is a programming language designed to help programmers examine the state of programs in execution, in particular C programs.

The main features are:

Our Cinquecento implementations are distributed in source-only form, licensed under the GPL.

Documentation

A technical report (pdf) explains the motivation and design of the Cinquecento language. Some details of the language have changed since the report was written (2008).

The L1 implementation is accompanied by a reference manual and a library of Cinquecento code for various debugging applications.

L1 Implementation

The L1 implementation of Cinquecento is written in C for 32-bit and 64-bit x86 OS X and Linux.

L1 requires GNU gcc and make. If you have this software, the only build step is to run make.

Sctl

A key idea of Cinquecento is to decouple the debugging language from the system-dependent machinery of process control. To debug programs on a particular operating system, you need to interface Cinquecento with the process control mechanism of that system.

Sctl is a remote process control server for Linux. It provides debugging access to processes running on an x86 Linux system via messages exchanged over a TCP connection or Unix socket.

The L1 debug library is a client for sctl. Together, these programs form a language-based debugging system for programs — local or remote, sequential or distributed — running on Linux systems.

Dwarf2cqct

Cinquecento includes the notion of name space, a language abstraction that catalogs the C types and symbols of a target program. Every target program represented in Cinquecento has an associated name space.

One way to define a name space is the Cinquecento @names form, which allows types and symbols to be specified in a variant of C type and variable declaration syntax.

Dwarf2cqct is a program that converts the DWARF debugging information in a program executable to declarations suitable for direct inclusion in an @names form.

Dwarf2cqct requires libdwarf.

A set of DWARF Cinquecento library routines included with L1 supersedes dwarf2cqct. But dwarf2cqct is still maintained; in particular, on large executables it (currently) runs noticably faster than the library code.

Replete

Cinquecento works well as an interactive language. Many users reach Cinquecento through Replete, a browser shell designed to complement Cinquecento.

An on-line version of Replete is available here. This demonstration has no active dynamic server-side content and uses Javascript as its interactive language.

Replete is written entirely in Javascript. The demonstration system represents the most recent public snapshot.

Contact

Contact information for the primary Cinquecento developers is listed in the technical report.