.Net - o que é um “relaxar”?
-
18-09-2019 - |
Pergunta
Ao responder este pergunta notei que eu tenho o seguinte diálogo enquanto atempting para mover o "cursor", enquanto uma exceção estava sendo tratado:
Não é possível definir a próxima instrução a este local. A tentativa de desanuviar a pilha de chamadas falhou.
Unwinding não é possível nos seguintes cenários:
- A depuração foi iniciada através de Just-In-Time depuração.
- Um descontrair está em andamento
- A System.StackOverflowException ou exceção System.Threading.ThreadAbortException foi lançada.
O que exatamente é um descontrair ?
Solução
É mim!
Não, neste contexto, normalmente se refere ao processo de pisar ( "para trás" / "para cima") através de uma pilha, removendo quadros sucessivos até que você voltou para o nível desejado. pilhas típicos são (é claro) muito linear em sua estrutura, os quadros são empilhados end-to-end após o outro, então não há realmente muito literal descontrair acontecendo, mas isso é o que é chamado.
Esta página Wikipedia tem mais detalhes.
Outras dicas
desenrolamento é apenas o backup a pilha em movimento.
Este onde o CLR é 'descontrair' a pilha a fim de localizar um método com um catch bloco que pode lidar com a ie exceção se o método atual não trata a exceção que, em seguida, retorna para o método que o chamou para ver se ele vai. Isto é repetido até localizar um método para lidar com a manipulação de erro nível de aplicação de exceção ou hits.
Isso significa que há um fio defeituoso ou, provavelmente, que é porque a pilha está cheia e não quadro de pilha é criado, o CLR como opta para relaxar o contexto atual nesta situação.