Justin Justin - 14 days ago 7
Vb.net Question

.Net - what is an "unwind"?

While answering this question I noticed that I got the following dialog while atempting to move the "cursor" while an exception was being handled:


Unable to set the next statement to this location. The attempt to unwind the callstack failed.

Unwinding is not possible in the following scenarios:


  1. Debugging was started via Just-In-Time debugging.

  2. An unwind is in progress

  3. A System.StackOverflowException or System.Threading.ThreadAbortException exception has been thrown.




What exactly is an unwind?

Answer

It's me!

No, in this context it typically refers to the process of stepping ("backwards"/"upwards") through a stack, removing successive frames until you've come back to the desired level. Typical stacks are (of course) very linear in their structure, frames are stacked end-to-end after each other, so there's not really much literal unwinding going on, but that's what it's called.

This Wikipedia page has more detail.