Falha no ponto de interrupção na ligação - Visual Studio 2015


158

Acabei de atualizar do Visual Studio 2013 para 2015 e agora estou tendo problemas com pontos de interrupção.

É um acerto ou um erro onde os pontos de interrupção realmente funcionam e se eu definir um durante a depuração, recebo o erro:

O ponto de interrupção falhou ao ligar.

Qualquer ajuda seria apreciada. Estou prestes a desistir de 2015 e voltar.

Respostas:


226

Eu tive o mesmo problema, mas uma solução diferente. Observe que atualizei para o VS 2015 Update 1 e o problema ainda está lá.

Na edição anterior do VS, o início da depuração acionava automaticamente uma compilação no modo de depuração. Mas com o VS2015 isso não acontece.

Portanto, se sua última compilação estava no modo de lançamento e você tenta depurar, o ponto de interrupção não funcionará.

Você precisa criar manualmente no modo de depuração primeiro e depois iniciar a depuração.


3
Não é um comportamento estranho? Pode ser considerado um bug?
Tolga Evcimen

A instalação da atualização para o Microsoft Visual Studio 2015, atualização 3 (KB3165756), corrigiu o problema de depuração para onde eu estava recebendo anteriormente "O ponto de interrupção falhou ao vincular". erro nas exibições de C #
hem

2
Isso foi realmente bom :) Eu esqueci o build ativo da versão e estava passando por uma sessão de depuração muito estranha até ler isso. Eu lembro de ativar a depuração novamente e tudo é "normal".
Repita Spacer

1
Eu tive uma experiência estranha. Eu tive que definir a compilação para "Release", compilar, depois "Debug" e compilar novamente.
samneric 23/03

@TolgaEvcimen Dado que, após mais de 2 anos, no VS 15.5.6, o comportamento ainda é o mesmo, eu diria que a MS não considera um bug. Pessoalmente, acho mais lógico reverter para o antigo comportamento de acionar automaticamente uma compilação de depuração. Ou pelo menos dê um aviso.
Max Favilli

82

Eu tive o mesmo problema.

Resolvi desabilitar a opção "Otimizar código" na guia Build das propriedades do projeto.


A questão ainda acabou voltando a um dos meus projetos. De qualquer forma, Update 1 está fora agora por isso espero que limpa tudo para cima visualstudio.com/en-us/news/vs2015-update1-vs.aspx
Sealer_05

2
Não é esse o objetivo de uma compilação de depuração? Eu desaconselharia uma compilação de versão com "Código de otimização" desativado.
Bart Friederichs

Quando observei o Config Manager, mudei para Debug para a solução e descobri que alguns projetos estavam incorretamente definidos como Release. Isso significa que selecionar Debug no menu suspenso faria com que esses projetos usassem sua configuração de versão, o que significa otimizado.
AaronLS 01/07

39

Isso pode parecer trivial, mas depois de muitos headscratchs com os mesmos problemas que você mencionou, descobri que minha compilação estava configurada para "release" em vez de "debug" quando tentei depurar .. reconstruindo a solução para "debug "corrigi-lo e eu poderia definir pontos de interrupção normalmente


2
Isso me permitiu definir os pontos de ruptura, mas não dura para sempre. Eu também ainda tenho problemas com a depuração ainda pular linhas aleatórias de código ainda
Sealer_05

Esse problema persiste, apesar de todos os relatórios pontuais de sucesso para soluções totalmente diferentes. No entanto, essa "correção" específica precisa ser colocada ao lado "o computador está conectado". Realmente não é uma solução. Sim, você precisa de energia e, sim, não pode definir pontos de interrupção em uma versão de lançamento - nossa.
Rick O'Shea

@ Kenneth Møller Como você mencionou, pode parecer trivial, mas também resolveu o meu problema.
Ben Junior

36

Eu tive um problema semelhante com os pontos de interrupção que não ligavam, bem como certas variáveis ​​locais que não foram avaliadas na janela Locals. O que finalmente foi corrigido foi ativar a opção "Suprimir otimização JIT na carga do módulo (somente gerenciado)" na guia Opções-> Depurar-> Geral. Uma vez eu configurei que era capaz de vincular sem problema.


Eu tentei, mas ainda não estava atingindo pontos de interrupção nos controladores da minha API.
precisa saber é o seguinte

Há uma boa explicação sobre depuração com código otimizado aqui
Nathan

Hum, não, isso não é uma solução. O que estamos recebendo é de pessoas de ajustes aleatoriamente comutação que não têm nenhuma influência sobre a questão, que parece desaparecer por conta própria
Rick O'Shea

Finalmente. Isso também me permitiu percorrer o código que estava sendo saltado anteriormente.
Jeff Davis

Isso resolveu para mim no VS 2019, muito obrigado!
EM0 17/07/19

14

Eu tive esse problema. Executei uma sessão de perfil de desempenho que modificou o Web.configarquivo com as configurações do monitor de desempenho:

<appSettings>
   <add key="Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrLocation" value="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Team Tools\Performance Tools\vsinstr.exe"/>
</appSettings>


<compilation debug="true" targetFramework="4.5" 
      assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
   ...
</compilation>


<runtime>
   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
         <assemblyIdentity name="Microsoft.VisualStudio.Enterprise.AspNetHelper" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
         <codeBase version="16.0.0.0" href="file:///D:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio/Shared/Common/VSPerfCollectionTools/vs2019/Microsoft.VisualStudio.Enterprise.AspNetHelper.DLL"/>
      </dependentAssembly>
      <dependentAssembly>
         <assemblyIdentity name="VsWebSite.Interop" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
         <codeBase version="8.0.0.0" href="file:///D:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio/Shared/Common/VSPerfCollectionTools/vs2019/VsWebSite.Interop.DLL"/>
      </dependentAssembly>
   </assemblyBinding>
</runtime>

Isso quebrou minha capacidade de parar nos pontos de interrupção. Quando voltei ao Web.config original (removi as configurações do Performance Profiler), os pontos de interrupção começaram a funcionar novamente.


1
Esta foi a solução para mim depois de criar um perfil no VS 2017. Muito obrigado.
Lee Taylor

1
Parece que há muitas causas para que os pontos de interrupção falhem ao ligar, mas foi esse que vimos.
precisa saber é

2
Foi isso para mim. Eu removi este AppSetting:<add key="Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrLocation" value="C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Team Tools\Performance Tools\vsinstr.exe"/>
Chad Hedgcock

5

Eu tive o mesmo problema ontem. Eu usei o recurso "Solução Limpa" e ajudou.


3
É quase como uma comédia central. Estou esperando "Acenei uma galinha de borracha sobre a máquina e funcionou". Temos meia dúzia de desenvolvedores que já enfrentaram esse problema e nenhuma dessas soluções ad hoc mágicas e sem explicações funciona.
Rick O'Shea

5

a solução é desativar a otimização do design.

Project Properties> Build> Advanced Compile Options> Enable Optimizations


4

Executo o desempenho na minha solução e isso foi adicionado ao meu web.config

<compilation debug="true" targetFramework="4.5" assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 

o assemblyPostProcessorTypeé o problema, eu apaguei e isso resolveu o meu problema



1

Não alterei a configuração 'otimizar', mas com base em outras respostas aqui,

  1. Defina o Solution Explorer como Show All Files para o projeto
  2. Excluiu as pastas bin e depuração ocultas
  3. Realizou um 'Clean' no projeto
  4. Execução 'Reconstruir' no projeto

Até agora, isso foi corrigido para mim. Parece que a atualização para o VS2015 Update 2 trouxe algumas coisas no meu sistema.


1

Sei que este é um post antigo, mas, caso todos os outros truques acima não funcionem, verifique se a imagem que está tentando depurar está atualizada. Por algum motivo, depois de publicar e transferir um projeto .NET Core para o meu Raspberry Pi 'descompactar' no RPi, não estava copiando nem substituindo algumas DLLs no diretório ativo. Quando anexei o depurador, achando que estava tudo bem, alguns pontos de interrupção estavam sendo atingidos, outros não e outros estavam me dando o erro "não é possível vincular". Depois que resolvi o problema de descompactar, todos os meus pontos de interrupção e símbolos voltaram. Eu espero que isso ajude.


0

Encontrei os erros de ponto de interrupção de ligação hoje. E eu resolvi meu problema fazendo belows.

Se todas as suas configurações de depuração não estiverem corretas, não será possível corrigir o problema fazendo o seguinte.

  1. Projeto Limpo
  2. Se o caminho de saída for diferente da pasta bin, substitua-o pela pasta bin (esta é a regra mais importante)
  3. Reconstruir

Talvez essa solução ajude alguém.


0

Os pontos de interrupção do VS não podem ser vinculados aos métodos assíncronos.

Eu tinha um agente do App Dynamics instalado que causou isso. Remova isso e você está pronto para ir.


0

Eu tive o mesmo problema, mas não percebi que "Debug" havia mudado para "Release" na barra de ferramentas de depuração (geralmente diretamente no menu). Então, eu defini-lo para "Debug" funcionou.



0

PASSO 1, descarte o óbvio:

  • Compile no modo de depuração.
  • Tente limpar a solução antes de definir o ponto de interrupção.
  • Vá para a pasta Debug e exclua o arquivo .pdb [Your application].
  • Em seguida, crie ou recrie seu aplicativo.
  • Vá para a pasta Debug e confirme se possui um novo arquivo .pdb [Your application].
  • Em seguida, tente definir seu ponto de interrupção.

PASSO 2 Para projetos C ++:

Verifique as seguintes propriedades do projeto:

  • Formato de informações C ++ / Geral / Depuração: banco de dados do programa.
  • C ++ / Otimização: Desativado.
  • Biblioteca C ++ / geração de código / tempo de execução: depuração multiencadeada.
  • Vinculador / Depuração / Gerar Informações de Depuração: Sim.
  • Vinculador / Depuração / Geração de banco de dados do programa: $ (TargetDir) $ (TargetName) .pdb.
  • Linker / Arquivo de manifesto / Gerar manifesto: Não.
  • Vinculador / arquivo de manifesto / permitir isolamento: não.
  • Vinculador / IDL incorporado / Ignorar IDL incorporado: Sim.
  • Faça o passo 1 novamente

    Você pode tentar adicionar __debugbreak (). Esta declaração precisa ir no seu arquivo de origem onde você deseja quebrar.

PASSO 2 Para projetos em C #:

  • Nas propriedades do projeto, o código Build / General / Optimize deve estar desativado.
  • Nas configurações do IDE, Debug / Opções e configurações / Depuração / Geral Suprimir otimização JIT na carga do módulo (somente gerenciado): Ativado
  • Faça o passo 1 novamente

Tente abrir sua solução em outras máquinas. Se você pode vincular um ponto de interrupção em uma máquina diferente, isso pode significar um problema no seu VS ou no seu SO.

PASSO 3, verifique se o seu VS está atualizado:

Houve relatos de problemas como esse no VS2013 RTM, bem como no VS2015 Update 1 e Update2.

No VS, vá para Ferramentas / Extensões e atualizações / Atualizações / Atualizações do produto e veja qual versão você está executando. Se for necessária uma atualização, ela aparecerá lá.

PASSO 4, verifique se o seu sistema operacional está atualizado:

Por fim, se você estiver executando um sistema operacional Win 10, houve um bug relatado sobre esse problema que existia no build 14251. Isso foi resolvido no build 14257 (e acima).


0

Acabei de encontrar um problema semelhante e nenhuma das respostas aqui foi encontrada sobre o problema que estava enfrentando. Ao contrário da pergunta, porém, nunca recebo nenhuma mensagem dizendo que houve uma falha no vínculo. O ponto de interrupção nunca chega. Espero que isso seja útil para alguém no futuro batendo a cabeça na parede com o WCF.

TL / DR:
Na mensagem SOAP, houve um registro com dados incorretos, causando o ponto de interrupção não ser atingido.

História completa:

Eu tenho um serviço WCF baseado no WSDL de outra equipe. Não é minha definição, não tenho controle sobre isso ... Recebo mensagens dessa outra equipe por meio deste serviço. No meu caso, recebo mensagens, posso registrar a mensagem na tabela de log de mensagens no banco de dados (o que acontece antes da chamada do meu método de serviço), o método do serviço é aparentemente chamado (talvez não seja) e o servidor responde com a 202 Aceito. A comunicação está funcionando, exceto que nenhum dado é salvo no banco de dados durante a chamada do método.

Como o serviço retorna uma resposta bem-sucedida, excluí questões relacionadas a http e transporte.

Então, iniciei o VS2015 para depurar o serviço. A mensagem em questão é grande, mas está dentro dos limites do que eu esperaria. Coloquei um ponto de interrupção na primeira linha do método de serviço e enviei a mensagem grande, mas o ponto de interrupção nunca foi atingido. Tentei uma mensagem menor que sabia funcionar na mesma instância de execução e o ponto de interrupção foi atingido perfeitamente. Então, tudo na configuração parecia bem. Eu pensei que talvez houvesse algo no tamanho da mensagem.

Eu tentei tudo o que pude encontrar - certificando-me de que estava em uma configuração de depuração, limpo e reconstruído, anexando manualmente o depurador ao processo w3wp (que o VS já estava), usando em Debugger.Break()vez de um ponto de interrupção, definindo vários projetos de inicialização, descarregando meu projeto de teste para que o projeto de serviço fosse o único, atualizando o .NET, reiniciando o VS2015, reiniciando, alternando do IIS local para o IIS Express e vice-versa, recriando o serviço com o WSDL mais recente garantido. Nada importava. O ponto de interrupção nunca foi atingido.

Acabei tendo que eliminar registros da mensagem grande, um por um, até encontrar um único registro com dados incorretos. No meu caso, era um registro que não tinha valor para 2 campos DateTime. Quando criei uma mensagem que continha apenas este registro e a enviei, o ponto de interrupção não foi atingido. Quando forneci valores para esses 2 campos DateTime e enviei a mesma mensagem (fixa) no ponto de interrupção, disparada conforme o esperado.

Eu tinha todas as exceções CLR ativadas, nada foi acionado além de arquivos .pbd ausentes, dos quais não me importava. O WCF felizmente enviou a solicitação com um registro ruim. Não estou dizendo que o WCF não deveria ter enviado com base nos contratos, apenas que o registro ruim fez com que o ponto de interrupção não fosse atingido.


0

Eu tive que modificar o arquivo web.config para habilitar a depuração. Mude isso:

<compilation debug="true" targetFramework="4.5.2" assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

para:

<compilation debug="true"/>

0

Limpe toda a solução antes de tentar qualquer uma das outras soluções. Depois de tentar quase tudo o que foi dito nas respostas anteriores e reiniciar o visual studio várias vezes, basta limpar a solução!


0

Eu tentei tudo sugerido aqui. Eventualmente, defino a "Página específica" em Propriedades do projeto -> Web como minha URL de início local, página e parâmetro de consulta. Fiz uma limpeza e reconstrução no modo de depuração e atingiu meu ponto de interrupção.


0

Embora essa seja uma versão muito posterior (VS2017), tive esse problema com projetos C #. Tentei limpar, reconstruir, reiniciar o visual studio, etc.

O que foi corrigido foi fechar o Visual Studio e excluir a pasta .vs, que é uma pasta oculta localizada no diretório da solução. A exclusão da pasta .vs não deve causar problemas, embora você precise redefinir seu projeto de inicialização.


0

No meu caso, havia um novo arquivo web.config criado após o uso Profiler. A restauração do web.config para a versão anterior resolveu esse problema. Era um aplicativo da web do VS2015 C #.


0

Caso você esteja publicando sua verificação de aplicativo da Web que Configurationestá definida como Debug(por padrão, na configuração de depuração, está definido para que o código não seja otimizado e a tabela de símbolos seja totalmente criada).insira a descrição da imagem aqui


-1

Eu olhei as respostas anteriores e @ de Will answear fixa o principal problema que eu estava tendo, o outro sendo capaz de editar e continuar, mas tendo um olhar mais atento sobre o arquivo AssemblyInfo.cs eu descobri alguma depuração apresenta onde desativado.

Então eu acabei removendo os atributos de depuração antigos e adicionando o seguinte que tirei de outro projeto

#if DEBUG
[assembly: System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute.DebuggingModes.DisableOptimizations | System.Diagnostics.DebuggableAttribute.DebuggingModes.EnableEditAndContinue | System.Diagnostics.DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | System.Diagnostics.DebuggableAttribute.DebuggingModes.Default)]
#endif

No entanto, sinto que essa não é a melhor maneira de fazê-lo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.