.Net - что такое "раскручивать"? - PullRequest
7 голосов
/ 05 января 2010

Отвечая на этот вопрос, я заметил, что получил следующее диалоговое окно при попытке переместить «курсор» во время обработки исключения:

Невозможно установить следующий оператор в этом месте. Попытка размотать стек вызовов не удалась.

Разматывание невозможно в следующих сценариях:

  1. Отладка была запущена с помощью отладки Just-In-Time.
  2. Идет раскрутка
  3. Исключение System.StackOverflowException или System.Threading.ThreadAbortException.

Что такое раскручивать ?

Ответы [ 4 ]

15 голосов
/ 05 января 2010

Это я!

Нет, в этом контексте это обычно относится к процессу перехода («назад» / «вверх») через стек, удаляя последовательные кадры до тех пор, пока вы не 'мы возвращаемся к желаемому уровню.Типичные стеки (конечно) очень линейны по своей структуре, кадры располагаются один за другим один за другим, поэтому буквально раскручивать их не нужно, но это так и называется.

На этой странице Википедии есть больше деталей.

1 голос
/ 05 января 2010

Это когда CLR «раскручивает» стек, чтобы найти метод с блоком перехвата, который может обработать исключение, т.е. если текущий метод не обрабатывает исключение, он затем возвращается к методу, который вызвал его, чтобы увидеть если будет. Это повторяется до тех пор, пока он не найдет метод для обработки исключения или не достигнет уровня обработки ошибок приложения.

1 голос
/ 05 января 2010

Разматывание просто перемещается обратно вверх по стеку.

0 голосов
/ 05 января 2010

Это означает, что имеется неисправный поток, или, возможно, это связано с тем, что стек заполнен, а кадр стека не создан, CLR решает UNWIND текущий контекст в этой ситуации.

...