Instrumentation was not implemented as an alternative to single stepping. I created instrumentation because I was finding myself unable to debug problems in the new database sharing system. I needed a system that could be used for debugging code on the server. It turned out to be very useful for single user code as well. In the past year, it has probably saved me at least several weeks of debugging time, and that’s beyond the several weeks it took to create the logging system. My regret at this point is that I didn’t decide to implenent instrumentation earlier.
Single stepping is a feature that was added after the fact, I think in Panorama 3. There was always intractable problems with single stepping, which I thought were due to the fact that it was added in and not planed from the start.
So with Panorama X, single stepping was designed in from the start. I had high hopes for a much better working system. But it turns out that the problems before weren’t just because single stepping was added in later, but because of the complex way that Panorama’s procedure code interacts with the operating system. Unlike other programming languates, Panorama allows you to do things like update on the screen, open and close windows and then your code just continues as if nothing has happened. You can’t do that in C, Swift, Python, etc. Panorama performs a complex dance with the operating system to make that happen with you being none the wiser. I documented some of this dance in this new help page, which I also covered in a session a couple of months ago. But there’s quite a bit more than even what is covered there.
What I haven’t been able to do is keep that juggling act going while also starting and stopping your code for single stepping. It’s not that I decided it was an undesirable feature – it’s that I came to the realization that it was a feature that was beyond my capabilities to create. Yes, other programming languages have single stepping – but they don’t interact with the operating system the way Panorama does. They require the code (your code) to manually take care of the operating system interactions that Panorama takes care of for you.
Over the last several years I have spent more time than I would care to admit trying to figure out how to get single stepping to work. Eventually I realized I was just banging my head into a wall. Perhaps I’ll take another run at the wall someday. But I know that it’s not like there is some single key that will unlock and make it workable.
Long story short, instrumentation was created for it’s own purposes, and has nothing to do with whether Panorama can single step or not.