Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Texto completo da mensagem: o processo de destino foi encerrado com o código 'code' ao avaliar a função 'function'.
Para facilitar a inspeção do estado dos objetos .NET, o depurador força automaticamente o processo depurado a executar código adicional (normalmente métodos de propriedade e funções ToString getter). Na maioria dos cenários, essas funções são concluídas com êxito ou geram exceções que podem ser capturadas pelo depurador. No entanto, há algumas circunstâncias em que as exceções não podem ser capturadas porque cruzam os limites do kernel, exigem o bombeamento de mensagens do usuário ou são irrecuperáveis. Como resultado, um acessador de propriedade ou um método ToString que executa um código que encerra explicitamente o processo (por exemplo, chamadas ExitProcess()) ou gera uma exceção não tratada que não pode ser capturada (por exemplo, StackOverflowException), termina o processo depurado e encerra a sessão de depuração. Se você encontrar essa mensagem de erro, isso ocorreu.
Um motivo 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 de destino é encerrado.
Para corrigir este erro
Há duas soluções possíveis para esse problema.
Solução nº 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 da janela Imediata para depurar a avaliação. A depuração é possível ao avaliar da janela Imediata porque, ao contrário das avaliações das janelas Autos/Locals/Watch implícitas, o depurador pausa em exceções sem tratamento.
Se você puder modificar essa função, poderá impedir que o depurador chame o método getter da propriedade ou o método ToString. Experimente um dos seguintes procedimentos:
Altere o método para algum outro tipo de código além de um acessador de propriedade ou o método ToString, e o problema é solucionado.
- ou -
(Para
ToString) Defina umDebuggerDisplayatributo no tipo e você pode fazer com que o depurador avalie algo diferente deToString.- ou -
(Para um getter de propriedade) Coloque o atributo
[System.Diagnostics.DebuggerBrowsable(DebuggerBrowsableState.Never)]na propriedade. Isso pode ser útil se você tiver um método que precise permanecer uma propriedade por motivos de compatibilidade de API, mas ele realmente deve ser um método.
Se você não puder modificar esse método, poderá pausar o processo alvo em uma instrução diferente e repetir a avaliação.
Solução nº 2: Desabilitar toda a avaliação implícita
Se as soluções anteriores não corrigirem o problema, você poderá desabilitar o recurso Habilitar avaliação de propriedade .
Abra o painel Ferramentas>Opções e expanda a seção Todas as Configurações>Depuração>Geral. Desmarque a caixa de seleção "Habilitar avaliação de propriedade 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 propriedade e outras chamadas de função implícitas .
Essa alteração desabilita a maioria das avaliações de função implícitas e deve resolver o problema.