Return back to the blog

Why doesn’t Step Forward also Step Out

Posted by Prashant Deva on October 12, 2011

A lot of people come up to me with this peeve:

The Step Forward button in Chronon, when it reaches the end of a method, doesn’t perform an automatic ‘step out’ like your regular debugger. Instead you have to click the ‘Step Out’ button manually.

The Problem

The reason we don’t have the ‘Step Forward’ button automatically do a ‘Step Out’ is apparently due to the presence of the ‘Step Backward’ button.

Consider this scenario:

  1. Stepping forward at the end of a method Steps Out of it.
  2. Now when the user presses the Step Backward button:
    1. Should we go back inside the method we came out of, or
    2. Should we ‘step back’ in the current method we just stepped out to.

The undefined semantic of the Step Back button in this case could cause confusion to the user if we took either of those choices, but the user expected the another.

Our Solution

We wanted to keep the semantic of the ‘Step Back’ button to do exactly the opposite of what the ‘Step Forward’ button does.

So in this case, to keep that semantics of Step Back intact, we limited the Step Back and Step Forward to only step inside a single method call and requiring the user to press the ‘Step Out’ button explicitly.

Mitigation

Although considering all the advantages Chronon offers over a regular debugger or logging, pressing the Step Out button is hardly an inconvenience, we made it even easier with the introduction of Keyboard Shortcuts.

The peeves that developers mentioned were really related to the fluidity and smoothness of the debugging experience when you only have to keep track of pressing a single button.

Keeping this in mind, if you use keyboard shortcuts for stepping within Chronon, the Step Out button is only a key away. Also you will notice the speed and fluidity when stepping using keyboard shortcuts is far, far smoother than using a regular debugger since we are not executing any code. Thus stepping over say a method that contains the bulk of your program’s execution in Chronon would happen instantly compared to a regular debugger where you would notice pauses.

Conclusion

I think the above post does a good job explaining the rational behind the behavior of the Step Forward button. The keyboard shortcuts introduced recently in Chronon do a good job of keeping the fluidity of the debugging experience and you will find the experience butter-smooth compared to using a regular debugger even with the extra hassle of pressing a different key for step out.