O Visual Studio 2010 mata dados (não há outra palavra) em um dos argumentos da função no bloco não seguro. O que poderia causar esse erro? A seguinte mensagem é exibida pelo depurador.
Cannot obtain value of local or argument as it is not available at this instruction pointer, possibly because it has been optimized away.
c#
visual-studio-2010
debugging
curiosidade
fonte
fonte
Cannot obtain value of local or argument '<this>' as it is not available at this instruction pointer, possibly because it has been optimized away. System.Threading.Tasks.TaskExceptionHolder
Respostas:
Vá para Propriedades do projeto e, em Compilar, verifique se a caixa de seleção "Otimizar código" está desmarcada.
Além disso, defina o menu suspenso "Informações de depuração" como "Completo" nas Opções avançadas (na guia Compilar).
fonte
Também no VS 2015 Community Edition
vá para Depurar-> Opções ou Ferramentas-> Opções
e marque Depuração-> Geral-> Suprimir a otimização JIT na carga do módulo (somente Gerenciado)
fonte
Se você compilar com as otimizações ativadas, muitas variáveis serão removidas; por exemplo:
aqui a variável local
value
normalmente seria removida, mantendo o valor na pilha - um pouco como se você tivesse escrito:Além disso, se um valor de retorno não for usado , ele será descartado via "pop" (em vez de armazenado em um local via "stloc" e, novamente; o local não existirá).
Por esse
value
motivo , nessa compilação, o depurador não pode obter o valor atual porque não existe - ele existe apenas pelo breve instante entreGetValue()
eDoSomething(...)
.Assim; se você deseja depurar ... não use uma versão compilada! ou pelo menos, desative as otimizações enquanto você depura.
fonte
http://www.guntucomputerhacks.blogspot.com.au/2014/07/cannot-obtain-value-of-local-or.html
Isso funcionou para mim no visual studio 2013.
Tudo o que tem a fazer é..
fonte
Acabei de encontrar isso e estava executando na
Release
configuração deDebug
compilação em vez de na configuração de compilação. Uma vez que voltei para aDebug
minha variável mostrada no relógio novamente.fonte
No visual Studio 2017, vá para Debug-> Option e marque Debugging-> general-> e marque esta opção
fonte
Quando me deparei com o mesmo problema, tinha apenas que limpar minha solução antes de reconstruir. Isso cuidou disso para mim.
fonte
Em relação ao problema com a propriedade "Otimizar código" sendo DESATIVADA, o código ainda está sendo compilado como otimizado: O que finalmente me ajudou depois de tentar tudo foi marcar a caixa de seleção "Ativar depuração de código não gerenciado" na mesma página de configurações (Propriedades do projeto - Depuração). Ele não está diretamente relacionado à otimização do código, mas com isso ativado, o VS não otimiza mais minha biblioteca e posso depurar.
fonte
Enable unmanaged code debugging
. HáEnable native code debugging
, eu tentei verificando isso, mas isso não fez diferença.Eu enfrentei o mesmo problema e a solução para mim é mudar
Solution Configuration
deRelease
paraDebug
. Espero que ajudefonte
No meu caso, eu estava trabalhando em um projeto de API da Web e, embora o projeto tenha sido definido corretamente para depuração completa, ainda estava vendo esse erro toda vez que me anexava ao processo do IIS que tentava depurar. Então percebi que o perfil de publicação estava definido para usar a configuração de Liberação. Portanto, mais um lugar para verificar é o seu perfil de publicação, se você estiver usando o recurso 'Publicar' do seu projeto de API da web do dotnet.
fonte
Eu descobri que tinha o mesmo problema quando estava executando um projeto e depurando anexando a um processo do IIS. Eu também estava executando no modo de depuração com otimizações desativadas. Embora eu ache que o código tenha sido compilado corretamente, quando desanexei e tentei compilar, uma das referências não foi encontrada. Isso ocorreu devido a outro desenvolvedor aqui que fez modificações e alterou o local da referência. A referência não apareceu com o símbolo de alerta, então pensei que estava tudo bem até fazer a compilação. Depois de fixar a referência e executar novamente, funcionou.
fonte
Como resposta adicional para aqueles que enfrentam esse problema ao depurar o aplicativo Web de sites do Azure:
Ao implantar no GitHub, por exemplo, o código é compilado no servidor do Azure otimizado por padrão.
Eu digo ao servidor para compilar de uma maneira depurável, definindo
SCM_BUILD_ARGS
como/p:Configuration=Debug
mas há mais opções. Veja isto: http://azure.microsoft.com/blog/2014/05/08/introduction-to-remote-debugging-on-azure-web-sites-part-3-multi-instance-environment-and-git /
fonte
No Visual Studio 2012:
Vá para as propriedades do projeto -> Depurar -> Desmarque a opção "Ativar o processo de hospedagem do Visual Studio"
fonte
Para aplicativos da Web, existe outro problema importante e é selecionar a configuração correta durante o processo de publicação do aplicativo.
Você pode criar seu aplicativo no modo de depuração, mas pode ser que você o publique no modo de liberação, que omite o código por padrão, mas o IDE pode enganar você, pois mostra o modo de depuração enquanto o código publicado está no modo de liberação. Você pode ver detalhes no instantâneo abaixo:
fonte
Verifique se você tem um atributo Debuggable no seu arquivo AssemblyInfo. Se houver, remova-o e reconstrua sua solução para verificar se as variáveis locais estão disponíveis.
Meu atributo debuggable foi definido como: DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints que, de acordo com este artigo do MSDN, informa ao compilador JIT para usar otimizações. Eu removi esta linha do meu arquivo AssemblyInfo.cs e as variáveis locais estavam disponíveis.
fonte
No Visual Studio 2017 ou 2015:
Vá para a Solução, clique com o botão direito do mouse na solução e selecione Propriedades-> selecione toda a Configuração-> Depurar e clique em OK. Após essa reconstrução e execução, essa solução funcionou para mim.
fonte
Eu tive o mesmo problema. Tentei todas as opções acima e descobri que também tinha que excluir tudo dentro de {PROJECT_ROOT} \ bin \ Release \ netcoreapp2.2 e {PROJECT_ROOT} \ obj \ Release \ netcoreapp2.2 do meu projeto. Definitivamente, foi relançado para publicação porque, embora eu use ferramentas de implantação / bitbucket no meu Azure Web App, tentei o Build >> Publish >> Publish to Azure porque queria inspecionar quais arquivos foram realmente implantados.
fonte
Teve o mesmo problema antes com um aplicativo WPF e todas as soluções aqui NÃO resolveram o problema . O problema era que o módulo já estava otimizado para que as seguintes soluções NÃO FUNCIONAM (ou não são suficientes para resolver o problema):
O módulo ainda está carregado Otimizado. Veja a captura de tela a seguir:
Para resolver esse problema, você deve excluir o módulo otimizado. Para encontrar o caminho do módulo otimizado, você pode usar uma ferramenta como o Process Hacker .
Clique duas vezes no seu programa no " Painel de processos " e, na nova janela, abra a guia " .NET Assemblies ". Em seguida, na coluna " Caminho da imagem nativa ", você encontra todos os caminhos dos módulos otimizados . Localize o que você deseja otimizar e exclua a pasta (veja a captura de tela abaixo): (botei o nome da minha empresa por razões óbvias)
Reinicie seu aplicativo (com a caixa de seleção na etapa 1 marcada corretamente) e deve funcionar.
Nota : O arquivo pode estar bloqueado quando foi aberto por outro processo, tente fechar o Visual Studio. Se o arquivo ainda estiver bloqueado, você pode usar um programa como o Lock Hunter
fonte