Experiences with the Universally Live Debugger by Boris Shingarov
Channel: FAST - Fundación Argentina de Smalltalk
Date: 2017-11-21

The live nature of Smalltalk's development paradigm is among the most fundamental reasons of its effectiveness. Unfortunately, in some important cases this liveness gets in the way, for example when debugging low-level parts of the system on which the tools are themselves based. Another example is debugging-into-existence or testing of a partially constructed Smalltalk. Let alone working on the virtual machine itself: the VM programmer is left to use tools such as GDB which don't help in understanding complex VM/VI interactions. In a number of previous publications, this author introduced the "Universally-Live Smalltalk Debugger" based on executing the "inner VM" under control of a "mother Smalltalk" to achieve four benefits: (1) debugging of the low-level object engine within Smalltalk; (2) insight into interaction between the lowest levels of the system; (3) early integration testing and high-level debugging of incomplete software; and (4) realizing those advantages that may be offered by the underlying debugging server technology, such as reversability, bug transportation, or non-traditional performance metrics. In contrast to those previous publications which were focusing chiefly on the theoretical basis for ULD, this talk shows the actual experience of ULD's behavior in a matrix of different VM workloads (TAM, VLS) multiplied by different ISAs (PowerPC, AMD64, RISC-V) and different execution substrates (GEM5, OpenOCD, GDB). We hope to extend the discussion of ULD's application to the needs of the wider community.