Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Texto completo da mensagem: O processo alvo saiu com o código 'código' enquanto avaliava a função 'função'.
Para facilitar a inspeção do estado de objetos .NET, o depurador força automaticamente o processo depurado a executar outro código (normalmente métodos de propriedades e funções ToString getter). Na maioria dos cenários, essas funções são concluídas com êxito ou lançam exceções que podem ser capturadas pelo depurador. No entanto, há algumas circunstâncias em que as exceções não podem ser detetadas porque cruzam os limites do kernel, exigem o bombeamento de mensagens do usuário ou são irrecuperáveis. Como resultado, um getter de propriedade ou método ToString que executa código que encerra explicitamente o processo (por exemplo, chamadas ExitProcess()) ou lança uma exceção não tratada que não pode ser capturada (por exemplo, StackOverflowException) encerra o processo depurado e encerra a sessão de depuração. Se você encontrar essa mensagem de erro, isso ocorreu.
Uma razão comum para esse problema é que, quando o depurador avalia uma propriedade que se chama, isso pode resultar em uma exceção de estouro de pilha. A exceção de estouro de pilha não pode ser recuperada e o processo alvo é encerrado.
Para corrigir este erro
Existem duas soluções possíveis para esta questão.
Solução #1: Impedir que o depurador chame a propriedade getter ou o método ToString
A mensagem de erro exibe o nome da função que o depurador tentou chamar. Com o nome da função, você pode tentar reavaliar essa função na janela Immediate para depurar a avaliação. A depuração é possível ao avaliar a partir da janela Immediate porque, ao contrário das avaliações implícitas das janelas Autos/Locals/Watch , o depurador quebra em exceções não tratadas.
Se você puder modificar essa função, poderá impedir que o depurador chame a propriedade getter ou ToString método. Tente uma das seguintes opções:
Altere o método para algum outro tipo de código além de um método de acesso à propriedade ou método ToString e o problema resolve-se.
-ou-
(Para
ToString) Defina umDebuggerDisplayatributo no tipo e você pode fazer com que o depurador avalie algo diferente deToString.-ou-
(Para um comprador de propriedade) Coloque o
[System.Diagnostics.DebuggerBrowsable(DebuggerBrowsableState.Never)]atributo na propriedade. Isso pode ser útil se você tiver um método que precisa permanecer uma propriedade por motivos de compatibilidade de API, mas deve ser realmente um método.
Se não for possível modificar este método, talvez consiga interromper o processo alvo numa instrução alternativa e voltar a tentar a avaliação.
Solução #2: Desative toda a avaliação implícita
Se as soluções anteriores não corrigirem o problema, você poderá desativar o recurso Habilitar avaliação de propriedade .
Abra o painel Ferramentas>Opções e expanda a Todos os Ajustes>Depuração>Geral seção. Desmarque a caixa de seleção Habilitar avaliação de propriedades e outras chamadas de função implícitas .
Abra a caixa de diálogo Ferramentas>Opções e expanda a seção Depuração>Geral. Desmarque a caixa de seleção Habilitar avaliação de propriedades e outras chamadas de função implícitas .
Esta alteração desativa a maioria das avaliações de função implícitas e deve resolver o problema.