MIO: Multiverse Debugging in the Face of Input/Output

Tom Lauwaerts, Maarten Steevens, Christophe Scholliers

Photo by Vishnu Mohanan on Unsplash

function main(): void {function main(): void {
    const lowThreshold = 1000; const highThreshold = 2000;
    while (true) {
      const temp = analogRead(sensor);
      if (temp < lowThreshold) {
          digitalWrite(blueLED, HIGH);
          digitalWrite(redLED, LOW);
      }
      else if (temp < highThreshold) {
          digitalWrite(redLED, LOW);
          digitalWrite(redLED, LOW);
      }
      else {
          digitalWrite(blueLED, LOW);
          digitalWrite(redLED, HIGH);
      }
    }
}
          
          
74% of surveyed participants say that IoT developers rely on access to devices to test and debug.

Makhshari A., Mesbah A. (2021). IoT Bugs and Development Challenges. ICSE '21


function main(): void {function main(): void {
    const lowThreshold = 1000; const highThreshold = 2000;
    while (true) {
      const temp = analogRead(sensor);
      if (temp < lowThreshold) {
          digitalWrite(blueLED, HIGH);
          digitalWrite(redLED, LOW);
      }
      else if (temp < highThreshold) {
          digitalWrite(redLED, LOW);
          digitalWrite(redLED, LOW);
      }
      else {
          digitalWrite(blueLED, LOW);
          digitalWrite(redLED, HIGH);
      }
    }
}
          
          

Challenges in Debugging Microcontrollers

  • Exploring non-deterministic input in programs on microcontrollers.

  • How to get reverse debugging while keeping output consistent?

  • Microcontrollers have very few resources.

  • We want this debugger to be grounded on a sound formalism.

  • Exploring non-deterministic input in programs on microcontrollers.

Carmen Torres Lopez, Robbert Gurdeep Singh, Stefan Marr, Elisa Gonzalez Boix, and Christophe Scholliers. Multiverse Debugging: Non-Deterministic Debugging for Non-Deterministic Programs (Brave New Idea Paper). In 33rd European Conference on Object-Oriented Programming (ECOOP 2019).

  • M
  • I
  • O

/maː.joː/ a Multiverse debugger for I/O

  • M
  • I
  • O

/maː.joː/ a Multiverse debugger for I/O

  • How to get reverse debugging while keeping output consistent?

  • Microcontrollers have very few resources.

  • We want this debugger to be grounded on a sound formalism.

MIO: Multiverse Debugging in the Face of Input/Output

Tom Lauwaerts

Maarten Steevens

Christophe Scholliers