Como remedio o “O ponto de interrupção não será atingido no momento. Nenhum símbolo foi carregado para este documento. ” Atenção?

1575

O aplicativo de desktop C # na edição expressa funcionou e não funcionou 5 segundos depois.

Eu tentei o seguinte:

  • Verifique se a configuração de depuração, o sinalizador de depuração e as informações completas de depuração estão definidas em todos os assemblies.
  • Exclua todas as pastas bin e obj e todas as DLLs relacionadas ao projeto de toda a minha máquina.
  • Recrie projetos que causam o problema do zero.
  • Reinicie.

Eu tenho dois projetos WinForms na solução. Um deles carrega as informações de depuração, um não. Ambos se referem ao assembly no qual estou tentando obter informações de depuração exatamente da mesma maneira no arquivo do projeto. Alguma ideia?


Quero adicionar aqui, principalmente para mim, quando voltar para revisar esta pergunta, que os símbolos não serão carregados até que o assembly seja carregado e o assembly não será carregado até que seja necessário. Se o ponto de interrupção estiver em uma biblioteca usada apenas em uma função em sua montagem principal, os símbolos não serão carregados (e mostrará o ponto de interrupção como não sendo atingido) até que essa função seja chamada.

Instance Hunter
fonte
119
Ao depurar, vá para a exibição Depuração, Windows, Módulos. Isso mostrará informações sobre os módulos carregados e o status dos símbolos. Você pode clicar com o botão direito do mouse em um módulo e tentar carregar os símbolos de outro local.
Polyfun
14
A edição Express não possui a visualização Módulos.
Instance Hunter
12
Bom argumento sobre montagens não carregadas até que seja necessário. O depurador mostrará que o ponto de interrupção não será atingido, mas a tela mudará / seu ponto de interrupção será atingido assim que a montagem for carregada. Uma solução alternativa fácil para esse problema de interface do usuário seria fazer uma chamada para o assembly no início do programa para forçar o carregamento do assembly.
precisa
1
Eu tive o mesmo problema e notei que, para essa configuração de compilação, não havia <DebugSymbols>true</DebugSymbols>no VS2015, eu a adicionei manualmente e funcionou bem.
kuskmen
4
Remover o arquivo .suo poderia ter resolvido este problema feio no meu projeto
Roland

Respostas:

1083

Inicie a depuração, assim que chegar a um ponto de interrupção ou usado Debug > Break All, use Debug > Windows > Modules. Você verá uma lista de todos os assemblies carregados no processo. Localize o que você deseja obter informações de depuração. Clique com o botão direito do mouse e selecione Symbol Load Information. Você receberá uma caixa de diálogo que lista todos os diretórios em que procurou o arquivo .pdb para o assembly. Verifique essa lista com o local .pdb real. Verifique se ele não encontra um antigo.

Em projetos normais, o assembly e seu arquivo .pdb sempre devem ter sido copiados pelo IDE na mesma pasta que o seu .exe. A pasta bin \ Debug do seu projeto. Remova um do GAC se você estiver jogando com ele.

Hans Passant
fonte
4
Efetivamente, esse foi o problema no meu caso. Tivemos um pós-compilador que fez com que não fosse considerado 'Código do Usuário' ... agora, tenho que ver o que há com isso, mas confirmo que, sem as modificações pós-compiladas, os símbolos são carregados. @ Hans obrigado, me salvou alguns bons minutos! envia uma cerveja virtual
eglasius
29
A pergunta é sobre edição expressa, à qual esta resposta não se aplica, infelizmente. Na verdade, nenhuma das respostas funciona para mim, eu também tentei remover a pasta Debug e reconstruir.
Nicolas Raoul
3
O Microsoft Visual Studio Express 2013 para Web não tem a opção Debug Windows Modules. Como usar corrigir isso neste caso?
Andrus
3
Como sugestão, ative suas exceções para que elas quebrem onde você deseja (se não conseguir colocar um ponto de interrupção no início do processo) ... Em seguida, siga o processo recomendado por Han de Depuração> Windows> Módulos. Procure o projeto no qual você estava tentando entrar e veja o PATH. se ele diz "C: \ windows \ assembly", então está apontando para uma dll do GAC e NÃO para o projeto ...
Andy Danger Gagne
5
Eu tinha a configuração de solução ativa da minha solução definida como Release, alterando-a novamente para Debug, resolvendo meu problema. Essa resposta me ajudou a "lembrar" o que procurar
gilad
436

Primeiro, tente reconstruir seu projeto clicando com o botão direito do mouse no projeto> Reconstruir. Se isso não funcionar, tente limpar o projeto (clique com o botão direito do mouse no projeto> limpar)

Se isso não funcionar, verifique isto:

  1. Clique com o botão direito do mouse no seu projeto
  2. Selecione [Propriedades]
  3. Selecione a guia [Build]
  4. Verifique se [Definir constante DEBUG] e [Definir constante TRACE] estão marcadas
  5. Verifique se [Otimizar código] está desmarcado
  6. Clique no botão [Avançado] na parte inferior da guia Compilar
  7. Verifique se [Informações de depuração:] está definido como [cheio]
  8. Clique em [OK] e reconstrua o projeto ;-)

(a etapa 6 gera os arquivos .pdb, esses são os símbolos de depuração)

juFo
fonte
40
Certifique-se de que [Informações de depuração:] esteja definido como [cheio] - corrija-o para mim! Eu tenho várias configurações definidas no meu projeto, as novas que adicionei não tinham esse conjunto.
Chiefy
1
Isso funcionou para mim! Mas em vez de [cheio] eu era capaz de fazer somente pdb
Aaron Shaver
42
Acontece que eu estava na versão build. tsk.
PNDA 29/08/2015
2
Se você tiver um projeto C ++ / C # misto com uma inicialização nativa, verifique se a opção Depuração> Tipo de depurador está mista.
Bill Hoag
4
Eu também tinha que ter certeza de que Properties > Build > Optimize codeestava desmarcada .
9136 jeffaudio
273

Apenas algo simples de tentar - você já deve ter tentado. Clique com o botão direito do mouse em Solution in Solution Explorer, clique em "clean solution" e exclui todos os arquivos compilados e temporários associados a uma solução .

Faça uma reconstrução da solução e tente depurar novamente.

Também tive problemas com pontos de interrupção de vários projetos em uma solução - alguns compilados como x86, outros como x64.

Patrick
fonte
5
Como você corrigiu os pontos de interrupção com vários projetos em uma solução - alguns compilados como x86, outros como x64?
Richard Li
3
Se você estiver executando o IISExpress (ou o emulador do Azure), os arquivos em C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Arquivos ASP.NET temporários \ root podem não ser atualizados se o AssemblyVersion for 1.0.0.0. Verifique se existe algo como 1.0. * Para que uma nova versão seja gerada toda vez que você criar seu projeto web. Solução Limpa não limpa a pasta de arquivos temporários da Internet.
Michael Lang
1
Isso faz o mesmo que fazer um Rebuild All.
Jonathan Madeira
2
@ Jonathan Wood - eu concordo principalmente com isso. Mas, em raras circunstâncias, o Rebuild All pode produzir resultados ligeiramente diferentes - sei que às vezes vejo diferenças estranhas. Dê uma olhada aqui para uma discussão interessante: stackoverflow.com/questions/1247457/…
Patrick
1
Para mim, era simplesmente "Compilar" ... "Solução Limpa"
Dominic Isaia
238

Desative a opção "Just My Code" nas configurações de depuração / geral.

subliminares
fonte
2
Sim, em um projeto do Windows Phone 8 com uma configuração de compilação personalizada, foi isso que fez por mim.
GONeale
2
Trabalhou para mim com Windows Phone 8.1 e Comunidade VS 2015.
Fabiano Araujo
20
Só para esclarecer: no VS 2017, essa configuração está especificamente na caixa de diálogo Ferramenta, Opções no painel Debugging, General (não há painel "Debug", para ser mais preciso). A caixa de seleção é chamada "Ativar apenas meu código" e não "Apenas meu código".
Jazimov
1
Isso está funcionando para mim, no entanto, não consigo ver o valor da variável ao passar o mouse ou shift + f9 obtendo um erro Não é possível obter o valor do local ou do argumento, pois não está disponível neste ponteiro de instrução, possivelmente porque foi otimizado
Naveen Kumar
1
Ainda trabalhando no Visual Studio 2019!
perfil completo de Toby Caulk
148

Cross postando esta correção de Hans K que eu encontrei no segmento semelhante >> AQUI << :

Clique com o botão direito do mouse na solução -> Propriedades

Procure em Propriedades comuns -> Projeto de inicialização

Selecione vários projetos de inicialização

selecione Iniciar ação nos projetos que você precisa depurar.

jp2code
fonte
7
Isso também lida com situações nas quais você está tentando depurar um projeto WEB que seja um ponto de extremidade de comunicação remota do .NET em execução no servidor de desenvolvimento VS e mostrando "nenhum símbolo carregado".
precisa
1
Isso consertou para mim. Acho que anteriormente alguém havia tentado anexar a depuração ao servidor IIS local em vez da versão de depuração do IIS que o visual studio usa.
Dowlers
1
Se você removeu o arquivo .suo você pode perder as configurações da solução selecionada aqui e precisará configurá-los novamente
Redeemed1
Verifiquei essas configurações novamente hoje depois de depurar com êxito anteriormente e descobri que meus projetos de inicialização haviam revertido de alguma forma para um único projeto de inicialização. Vale a pena conferir.
Anthony De Souza
64

A resposta selecionada me levou a resolver meu problema. Mas preciso fazer mais algumas coisas:

Mesmo com "Debug" selecionado no menu suspenso:

insira a descrição da imagem aqui

E no projeto Propriedades> Compilar:

insira a descrição da imagem aqui

O Visual Studio não estava carregando símbolos para um projeto específico. Então, nesse menu suspenso, selecione "Configuration Manager" e vi que as configurações do meu projeto da web estavam incorretas:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Então eu defino isso como "Debug" e ele começou a gerar o .pdbarquivo. MAS preciso copiar manualmente o PDB e a DLL e colocar na pasta que o VS estava procurando (aqui é onde a resposta selecionada me ajudou):

insira a descrição da imagem aqui

fabriciorissetto
fonte
1
Eu estava correndo no releasemodo. Obrigado !!
Dipak Telangre
A chave para mim foi que a caixa 'Deploy' não estava marcada, portanto o pdb não estava sendo reimplantado após a construção
Ben
43

Debug> Windows> ModulesPara ver o que os módulos foram sendo carregado me colocar na direção certa.

No meu caso, o IIS Express parecia estar carregando uma DLL diferente dos arquivos temporários do ASP.NET.

A solução?

  1. Navegue até C:\Users\<YOUR USER>\AppData\Local\Temp\Temporary ASP.NET Files\vs
  2. Exclua tudo neste diretório!
James S
fonte
Este foi o meu problema, a pasta deve estar cheia de DLLs quebradas que estavam sendo carregadas como preferência.
gburton
8
Isso funcionou para mim, exceto no meu caso, o diretório que tive que limpar era C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Arquivos temporários do ASP.NET \ vs \
Andy
Eu tive um problema semelhante em que eu já tinha esse aplicativo instalado e ele estava carregando essa DLL em vez da do meu projeto sem nenhum arquivo PDB associado. Depois de desinstalar o aplicativo antigo, o problema foi resolvido para mim. Obrigado!
Lenny K
42

Consegui corrigir o erro simplesmente definindo a opção na opção 'Anexar ao processo' como 'Determinar automaticamente o tipo de código a depurar', como mostra a captura de tela anexada.

Basta seguir os passos abaixo:

  • Vá para Depurar na barra de menus
  • Clique em Anexar ao processo
  • Perto da opção Anexar a , clique no botão Selecionar
  • A janela Selecionar tipo de código será exibida
  • Agora selecione a opção Determinar automaticamente o tipo de código a depurar e clique no botão OK.

Corrigido erro de depuração

theITvideos
fonte
10
Para outras pessoas que tentaram de tudo nesta página, corrigi meu problema mudando para 'Código gerenciado (v4.5, v4.0)'!
Stevekrzysiak
A mudança para "Gerenciado (v4.5, v4.0)" corrigiu isso para mim também com a depuração de um aplicativo DNN ASP.Net. Obrigado!
Mmm
Mudar de "Determinar automaticamente o tipo de código a depurar" para "Gerenciado (v4.6, v4.5, v4.0)" funcionou para mim. Eu tenho uma solução com 2 bibliotecas de classes, uma é acessível por COM, ambas têm como alvo a estrutura 4.6.1.
Jorb
Eu selecionei uma opção errada (".NET Core" em vez de "Managed v4.6"). Eu escolhi "Determinar automaticamente ..." e funcionou! Inicialmente, encontrei esta solução na publicação do blog blog.simontest.net/… .
Evgeni Nabokov
41

Às vezes, mesmo que esse erro breakpointseja causado, o erro ainda é atingido, então ignore o erro. Isso acontece com bastante frequência na Viewsde um MVC web app.

Serj Sagan
fonte
7
Na verdade, isso deve ser votado em algum lugar do topo. Passei muito tempo fazendo todas as respostas acima, mas o ponto de interrupção seria atingido. Basta verificar :) Além disso, esse era um aplicativo de desktop WPF.
Bartosz
4
aspx parece ser compilado sob demanda, debuging assim informação está disponível apenas depois que a página aspx é necessária
aeroson
Também para o UnitTesting - você precisa esperar alguns segundos e, em seguida, ele é atingido.
David Refaeli
Acho @aeroson comentário é o que eu encontrei. Uma página carregava pontos de interrupção, outra não. Tentei todos os tipos de coisas a partir das respostas aqui e atualizei a página e os pontos de interrupção carregados.
goodeye
obrigado ... cavando em torno de meia hora e só percebi que o ponto de interrupção ainda recebe hit ...
Kyle Huang
39

Verifique se o seu arquivo .pbd está ausente na sua pasta bin / Debug. Se for, vá para "Propriedades" do seu projeto, selecione "Construir" e depois "Avançado" na parte inferior. Escolha "completo" em "Informações de depuração" na nova janela que apareceu. Esse foi o meu problema e o resolvi para mim.

Mostrando onde encontrar a configuração

Arne H. Bitubekk
fonte
Eu sugeriria que alguém viesse a esta página para garantir que o pdb estivesse sendo gerado, pois esse era o problema para mim.
precisa saber é o seguinte
Obrigado! "pdb-only" (em vez de cheio) foi suficiente. Além disso, "Avançado" é um botão na parte inferior do Build.
Greg Little
onde os pdbs devem ser gerados?
ylka
1
Obrigado, isso foi corrigido depois que eu fiz novas transformações no Web.config e excluí as configurações padrão (como Web.Debug.config) fornecidas pelo VS 2017.
Ken Palmer
1
Tentei várias outras opções (perdi quase 2 horas) Esta opção "completa" corrige meu problema. Obrigado!
SoftSan
29

No meu caso, "Otimizar código" foi verificado nas propriedades do meu projeto. Isso fez com que o VS visse meu assembly como "não meu código" e, por sua vez, não carregava símbolos para ele.

A solução foi desmarcar isso. Caixa de seleção Localização do código de otimização

Sandra
fonte
2
Esse também era meu problema e eu passei por todas as soluções acima, uma por uma, nada funcionou.
Antikbd 3/06
Desmarquei esta opção, solução limpa, solução reconstruída, etc ... O VS estava sempre considerando o módulo como "Otimizado". A única maneira que encontrei para forçar o VS a atualizar as informações de depuração foi aumentar a versão de montagem do módulo.
alphanoch
A única solução que funciona para mim, um # para você (# = ++++), mas eu só pode votar uma vez
Luis Lopez
27

Basta verificar se sua solução está no modo de liberação.

Tino Jose Thannippara
fonte
1
Demorou quase 4 horas para descobrir esse problema. obrigado
Null Pointer
23

Tente executar o visual studio como administrador no Windows.

Andy
fonte
1
Acabei precisando executar o msvsmon como administrador na máquina remota.
Bill Hoag
Esta não é uma solução que as pessoas devem seguir. Se isso resolver o problema, você deve se concentrar no porquê de precisar de direitos de administrador para que o VS possa ler o conteúdo do arquivo .pdb do seu projeto.
Jazimov
@Jazimov Eu discordo. Embora eu adorasse passar um tempo investigando isso, no meu caso isso resolveu meu problema e me permitiu continuar trabalhando, como tenho certeza de que também aconteceu com os outros. Se você quiser analisar e melhorar esta resposta, fique à vontade, é para isso que existe.
Andy
Para deixar claro: eu entendo que o problema foi corrigido com o Visual Studio, não era isso que eu estava contestando. Estou contestando a recomendação de que outras pessoas aceitem executar o IDE como a solução, em vez de uma solução simples . Se a execução do IDE como administrador corrigir o problema, essas informações deverão ser usadas para solucionar a causa raiz real, para que o IDE não exija privilégios de administrador para funcionar corretamente.
Jazimov 13/09/17
21

No meu caso, estou tentando depurar no modo relase. Depois de alterá-lo para o modo de depuração. Está funcionando

Adithya Sai
fonte
15

Você precisa habilitar "Gerar informações de depuração" nas configurações do compilador

DS.
fonte
1
Onde deveria estar?
MushyPeas
10
É o mesmo como a resposta da jufo - Projeto> Propriedades> Construir> Avançado> Debug Info> completa (ou APO-only)
Jeremy Thompson
Ouça Jeremy Thompsen. Corrigiu o problema para mim.
Thorkil Værge
12

->Opções de depuração ->Geral ->Desmarque a opção " Enable Just My Code"

Isso funcionou para mim.

abdallah mahmoud
fonte
1
Parece que pode ser uma configuração padrão que vale a pena verificar se estiver atualizando o VS para uma versão mais recente (como havia acontecido comigo).
Agamemnon
10

Encontramos a causa do nosso problema. Esse código estava usando o atributo "CodeBehind" na diretiva Page do arquivo .aspx, em vez do atributo "CodeFile" (ASP.NET 2.0 e posterior). Após dias de desespero, uma simples busca e substituição resolveu o problema.

cjo30080
fonte
10

A opção "Iniciar depuração, depuração + Windows + módulos" não existe na edição do Microsoft Visual Studio Express 2013.

Desmarcar "Usar modo de compatibilidade gerenciada" em Ferramentas Opções de depuração corrige isso.

Andrus
fonte
10

Verifique sua Solution Configurationlista suspensa. Certifique-se de selecionar Debug, não Release.

zs2020
fonte
Obrigado @ zs2020 #
Shakeel Hussain Mir
9

Eu tentei de tudo mencionado acima, mas nada funcionou. [Solução limpa e verifique arquivos PDB etc.]

Mesmo publicar a mesma solução não resolveu o problema.

Depois voltei ao que costumo fazer para resolver (enganar esse teimoso Visual Studio)

Tudo o que fiz foi fazer uma alteração deliberada no código e publicar a solução. Então eu reverti a alteração e publiquei novamente.

Voila [arquivos PDB livram-se de maus espíritos] .. Não é uma resolução inteligente, mas funcionou ..: - |

Mahesh
fonte
7

Apenas aplicativos da Web (IIS Express):

  • Clique com o botão direito do mouse em Bandeja do IIS Express e feche o IIS.
  • Solução Limpa

Bandeja do IIS

Christian Gollhardt
fonte
Tentei muitas das outras sugestões em outras respostas, muitas das quais me ajudaram no passado, mas hoje essa ajudou. No meu caso, tenho várias ramificações e acho que o IIS Express estava de alguma forma preso em uma ramificação diferente e não estava atualizando com a ramificação que estava tentando depurar, apesar das minhas inúmeras tentativas de Limpar e Reconstruir.
Chris H
6

Nenhuma dessas respostas resolveu meu problema. Tentei outra coisa com base no fato de que o projeto com a parada não era, na realidade, o projeto carregado. Descobri, como Hans Passant, que o arquivo .dll em que eu quero parar o depurador e os arquivos .pdb associados, copiados perto do arquivo .exe. Esses arquivos tiveram uma data mais antiga, então eu pensei que eles não foram atualizados no tempo de execução. Eu os excluí manualmente, o Visual Studio cria outro par E coloca esse novo par perto do .exe. Agora o breakpoins funciona!

Talvez o Visual Studio não possa copiar e substituir arquivos existentes (.dll e .pdb) perto do .exe, pois há outro lá. Portanto, se eu excluísse manualmente, o VS poderia criar um novo próximo ao .exe.

Eu acho que outras alterações (verificações e assim por diante - das outras respostas) acionaram algo e o Visual Studio copiou e substituiu a dll e o pdb da pasta do projeto para a pasta perto do exe, de modo que foi uma solução.

Eu acho que a causa raiz do problema é que o Visual Studio usa outro arquivo em tempo de execução, não o arquivo do projeto, com a parada.

Talvez esta resposta ajude alguém!

Tratak
fonte
6

Pontos a serem verificados para ficar claro: verifique se a configuração está definida como 'Debug' e não 'Release'. Você pode depurar o projeto de inicialização no modo 'Release', mas não uma biblioteca de classes referenciada.

Sai Chakradhar Sana
fonte
6

Propriedades do projeto (selecione sua configuração de compilação)> Guia Compilação> Avançado ...> Informações sobre depuração (suspenso)

Defina como 'all' ou 'pdb-only' e depois reconstrua

Sinaesthetic
fonte
i fez pdb_only, também limpa e reiniciar o navegador
Jason
6

Em vez de fazer todas essas coisas apenas

Feche e reabra

a solução irá corrigir o problema

kselva
fonte
Trabalhou para mim no Microsoft Visual Studio 2013 em: Arquivo> Fechar solução e, em seguida, Arquivo> Abrir solução (deve ser pré-carregado com a mesma pasta em que estava). Os pontos de interrupção passaram da bandeira amarela para o vermelho circular instantaneamente. Então obrigado.
Zargold
OMG gênio! Obrigado!!!
AresDev 26/03
6

Eu tive um problema semelhante e fiz o seguinte: Depuração => Opções => Geral => Remova a marca de seleção "Ativar apenas meu código" Isso funcionou para mim ..

Muhamed Krasniqi
fonte
isso também funciona para mim
mohammed elshoraky
6

Demorei um pouco para tentar outras opções acima e, por algum motivo estranho, a depuração parou de funcionar.

Ferramenta -> Opções -> Depuração -> Geral -> (desmarque) "Exigir que os arquivos de origem correspondam exatamente à versão original"

tfa
fonte
6
  1. Solução limpa e reconstruir
  2. Verifique se a configuração está definida como Debug
  3. Verifique se o arquivo PDB está na pasta Debug próprio
  4. No menu Debug, clique em Enable All Break points
Bimal
fonte
6

Verifique as duas configurações a seguir no Visual Studio:

Clique com o botão direito do mouse no projeto de teste, vá para Propriedades, guia Compilar e veja o Destino da plataforma

Os meus estão todos definidos como "Qualquer CPU", então x64

insira a descrição da imagem aqui

Na barra do menu principal, vá para Teste, Configurações de teste, Arquitetura padrão do processador

O meu foi definido como X86

insira a descrição da imagem aqui

Alterar isso para X64 para corresponder à configuração acima fez com que o menu “Debug Test (s)” do Visual Studio funcionasse e atingisse pontos de interrupção que eram ignorados anteriormente com a mensagem “O ponto de interrupção não será atingido no momento. Nenhum símbolo foi carregado para este documento ”.

Atualizar:

Para o Visual Studio 2019, os menus foram movidos um pouco: insira a descrição da imagem aqui

Mike
fonte
5

Sei que estou atrasado anos, mas pensei que tinha feito algo errado e segui as etapas acima, então percebi que definiria a configuração da solução como 'Liberar' por engano :)

Neil Walker
fonte
1
Posso votar 10 mil vezes? O pior de tudo é que acho que já procurei isso no google há 10 vezes e sempre é o mesmo erro estúpido. Talvez a Microsoft possa sugerir isso ao usuário?
Tfrascaroli