Years ago, watching my collegues and myself bog down in "step-in", "step-out", "step-over" swamps, I began to suspect that such an approach to understanding a program is counterproductive.
I'll stop wanting it when there's another method to quickly track down bad/broken logic in someone else's spaghetti.
(Higher Order Perl) provides an excellent introduction into thinking functionally rather than operationally. I can't speak highly enough of the value of making that shift in one's thinking, regardless of the language at hand.
All that happens when one makes such a shift is that you tend to "operate" on type values, families of function, and protocols for abstraction (rather than a series of instructions for mutating state). These concepts are further from the grasp of most programmers today than the understanding they need of their own programs.
I'll be quite surprised if new programmers don't want state-of-the-art debuggers even after your revolution comes ;)
-David