Ed: your new Emergency Debugger

“What is the nature of your debugging emergency?” —Ed. In this post, we’ll speak about debugging emergencies due to system error handling failures. We’ll cover the current tools available to revert code changes provoking such failures and introduce Ed, the new emergency debugger with improved revert capabilities. What is a debugging emergency? Sometimes when youContinue reading “Ed: your new Emergency Debugger”

A Floating GCC Optimization

A couple of months ago, while debugging the build of the VM, I found a problem with the optimization of GCC 8.3 (I am not sure what other versions may show it). Basically, this GCC version does not compile one of our virtual machines functions well, because it unexpectedly removes what looks like valid code.Continue reading “A Floating GCC Optimization”

Implementing an object-centric breakpoint with Reflectivity

In this post, we describe how we implement a breakpoint that affects only one specific object, and how we implement it using the Reflectivity framework. What is an object-centric breakpoint? Let’s take a simple example: imagine two Point instances p1 and p2. Each of these points has two instance variables, x and y, that weContinue reading “Implementing an object-centric breakpoint with Reflectivity”

[Pharo features] The fusion of a developed program and IDE

In this series of blog-posts, we are explaining in more detail the Pharo features described in https://pharo.org/features. Pharo follows several design principles, and one of them says that the interaction between the human and computer should be modeless. The interface needs to be as direct and intuitive as possible. If you try to think forContinue reading “[Pharo features] The fusion of a developed program and IDE”

How a modal window could break the event cycle: A debugging story

A couple of weeks ago I started an aggressive cleaning on Morphic, the graphics framework we currently use in Pharo, searching for a cheap and simple path to move the Pharo IDE to HiDPI screens. The cleanups involved mostly the removal of global state. For example, I transformed code like the following: into something like:Continue reading “How a modal window could break the event cycle: A debugging story”