Símbolos de carregamento do Visual Studio

166

Estou trabalhando em um projeto ColdFusion há algum tempo e o Visual Studio começou a se comportar de forma estranha, pelo menos para mim.

Observei que quando iniciei a depuração, ele construiu o projeto, iniciou a implantação e a implantação terminou e estava começando a carregar símbolos para o meu projeto.

Mas foi muito lento e não sei por que começou a dar esse passo. O que posso ter feito?

Este passo de carregamento do símbolo é necessário? Como posso desabilitá-lo?

Na caixa de diálogo Ferramentas -> Opções -> Depuração -> Símbolos, não há nenhum local de arquivo de símbolo (.pdb) adicionado. E apontei no diretório de depuração do meu projeto no campo abaixo e marquei a caixa de seleção "Pesquisar no diretório acima apenas quando os símbolos estiverem ....". Como devo configurar esta caixa de diálogo para desativar o carregamento de símbolos?

Olhei na janela Módulos quais símbolos estão carregados, mas isso não diz nada para mim. Qual é o problema?

insira a descrição da imagem aqui

Arnoldino
fonte
3
Eu tentei todas as respostas do tópico sem sorte.
precisa saber é o seguinte
3
Geralmente, os símbolos devem ser armazenados em cache e levar pouco ou nenhum tempo para carregar, a única vez em que você notará que o carregamento de símbolos é lento é se os símbolos estão sendo carregados dos servidores de símbolos da Microsoft, o que é muito muito lento, por exemplo (nem sempre é muito lento, mas nenhum é lento) menos), portanto, uma boa maneira de tentar corrigir esse problema é excluir o cache de símbolos, basta ir para Debug -> Options -> Debugging -> Symbols e clicar no cache de símbolos vazio, se isso não funcionar. poderia ser outro problema completamente, espero que isso beneficie alguém, já que a pergunta tem 3 anos (:
daniel

Respostas:

266

Depuração -> Excluir todos os pontos de interrupção ( http://darrinbishop.com/blog/2010/06/sharepoint-2010-hangs-after-visual-studio-2010-f5-debugging ) Depois disso, você pode usá-los novamente, mas faça-o uma vez. Ele também removerá algum tipo de ponto de interrupção "inválido" e o carregamento dos símbolos será rápido novamente. Eu estava perseguindo esse problema há dias :(.

peterfoldi
fonte
4
Os usuários do Visual Web Developer 2010 Express podem pressionar CTRL + SHIFT + F9 e o prompt "Deseja excluir todos os pontos de interrupção?" vai aparecer. Você precisa de pelo menos um ponto de interrupção ativo (não tenho certeza se o (s) ponto (s) de interrupção problemático (s) em segundo plano contam como um). Obrigado! Muito mais rápido agora ...
Cymen
Que estrela! Muito obrigado.
user489998
Na verdade, isso funciona! Incrível! Alguém já relatou esse bug óbvio à Microsoft?
real_yggdrasil 12/09
Você é um começo, isso tem me deixado louco por dias. Graças um milhão!
markpcasey
Bem, isso foi inesperado! Isso realmente funcionou. Você salvou meu dia, muito obrigado!
tmatuschek
132

Outro motivo para carregamento lento é se você desabilitou "Ativar apenas meu código" nas opções de depuração. Para habilitar isso, vá para:

Tools -> Options -> Debugging -> General -> Enable Just My Code (Managed Only) 

Verifique se isso está marcado.

nietras
fonte
A opção "Apenas meu código" não está disponível na caixa de diálogo Opções em algumas versões do Express Studio do Express (embora esteja no Visual C # 2010 Express), mas pode ser alterada por outros meios: Como desabilitar 'Apenas meu código no Visual Basic 2005 Express? .
Peter Mortensen
3
Foi o que o corrigiu para mim ... não a resposta "Excluir todos os pontos de interrupção".
precisa
Essa é a pior opção no Visual Studio. É muito melhor desativar o carregamento do símbolo, para que você ainda possa ver lançamentos de exceção e empilhar quadros que simplesmente estão faltando símbolos. (Apenas alguns números difíceis de ler em vez de um nome). Obviamente, eu normalmente trabalho no código do site, então existe um monte de IIS embaixo de mim que pode falhar. Normalmente, apenas desmarcar os servidores de símbolos da Microsoft (e todos os remotos) como fonte de dados funcionará.
ebyrob 14/04
Você salvou meu meio dia ...! : D
Vaibhav Deshmukh
43

Configure em Ferramentas, Opções, Depuração, Símbolos.

Você pode assistir a janela de saída (exibição, saída) para ver o que está fazendo normalmente. Se for realmente lento, provavelmente significa que ele está atingindo um servidor de símbolos, provavelmente da Microsoft, para baixar os símbolos ausentes. São necessários três acessos HTTP para cada arquivo que não é encontrado em todas as inicializações - às vezes você pode vê-lo na barra de status na parte inferior ou, por exemplo, no Fiddler. Você pode ver quais módulos carregaram símbolos em Debug, Windows, Modules enquanto estiver depurando.

Os símbolos significam que você obtém informações úteis de rastreamento de pilha em montagens de terceiros e de sistema. Você definitivamente precisa deles para o seu próprio código, mas acho que eles são carregados independentemente. Sua melhor aposta é desativar todas as fontes de símbolos não locais nesse menu e, se você estiver carregando muitos símbolos para assemblies de sistema nos quais não precisa depurar, poderá desativar temporariamente o carregamento deles para acelerar o início da depuração - mas geralmente são úteis para carregar.

Rup
fonte
3
Na caixa de diálogo Ferramentas -> Opções -> Depuração -> Símbolos, não há nenhum local de arquivo de símbolo (.pdb) adicionado. E apontei no diretório de depuração do meu projeto no campo abaixo e marquei a caixa de seleção "Pesquisar no diretório acima apenas quando os símbolos estiverem ....". Não sei como configurar esta caixa de diálogo para desativar o carregamento de símbolos.
Arnoldino 31/07/10
1
Hmm, eu não sei então. Você precisa carregar símbolos para seu próprio código para depurá-lo, para que eu não queira desativá-lo totalmente. Eu acho que então eu olhava a janela Módulos para ver quais símbolos carregavam, calculava quais você realmente precisa e, em seguida, talvez exclua os .pdbs do cache de símbolos para os que você não deseja?
Rup
1
Verifique o 'usar servidor de símbolos da microsoft', execute seu código uma vez e todos os símbolos estão no cache. Agora você pode desmarcar a caixa para aumentar a velocidade.
john ktejik
1
Desativar o Microsoft Symbol Server em Ferramentas -> Opções -> Depuração -> Símbolos corrigiu isso para mim. Antes eu estava esperando 30 segundos para iniciar a depuração. Agora é só mais um segundo.
Mike Chamberlain
41

Só tive esse problema.

Corrigi-o navegando para:

Ferramentas -> Opções -> Depuração -> Símbolos

Em seguida, desmarque todas as fontes não locais dos locais dos arquivos Symbol (.pdb)

por exemplo, Microsoft Symbol Servers e msdl.microsoft.com/download/symbols

JohnMcC
fonte
23

Eu enfrentei um problema semelhante. No meu caso, eu configurei _NT_SYMBOL_PATH para fazer o download dos Servidores Microsoft para uso no WinDbg e parece que quando definido, o Visual Studio o usará sem nenhuma maneira de ignorá-lo. A remoção dessa variável de ambiente resolveu meu problema.

jcarle
fonte
Isso também resolveu o problema para mim (acho que o baixo número de votos positivos se deve ao baixo número de pessoas que definiram essa variável ...) Obrigado!
Aasmund Eldhuset
O mesmo aqui. Eu pensei que poderia simplesmente desmarcá-lo dos símbolos, mas não, o env var deve ser removido / renomeado.
codekaizen
16

Você pode tentar a seguinte resposta para a depuração / carregamento do Visual Studio muito lentamente :

  1. Vá para Ferramentas -> Opções -> Depuração -> Geral

  2. Marque a caixa de seleção ao lado de "Ativar apenas meu código".

  3. Vá para Ferramentas -> Opções -> Depuração -> Símbolos

  4. Clique no botão "..." e crie / selecione uma nova pasta em algum lugar do computador local para armazenar símbolos em cache. Chamei meu de "cache de símbolo" e coloquei em Documents -> Visual Studio 2012.

  5. Clique em "Carregar todos os símbolos" e aguarde o download dos símbolos nos servidores da Microsoft, o que pode demorar um pouco. Observe que o botão Carregar todos os símbolos está disponível apenas durante a depuração.

  6. Desmarque a marca de seleção ao lado de "Microsoft Symbol Servers" para impedir que o Visual Studio consulte remotamente os servidores da Microsoft.

  7. Clique OK".

Tente também excluir todos os pontos de interrupção (Depurar> Excluir todos os pontos de interrupção),

Consulte também : Visual Studio 2015 RC1 trava no modo de depuração ao carregar símbolos

H'H
fonte
6

Para mim, parece relacionado a pontos de interrupção, conforme indicado na resposta aceita. No entanto, encontrei duas soluções alternativas que não envolviam a exclusão de todos os pontos de interrupção:

  • Reiniciar o Visual Studio pareceu corrigi-lo temporariamente.
  • Clicar no botão "X" para fechar o Visual Studio durante a depuração faz com que a mensagem "Deseja parar a depuração?" caixa de mensagem para aparecer; enquanto esta caixa de mensagem estiver aberta, os símbolos carregam em velocidades comuns. Depois que todos os símbolos estiverem carregados, você pode clicar em "Não" para cancelar o fechamento.
Cameron
fonte
3
obrigado por esta solução alternativa maluca (com a mensagem 'você deseja parar a depuração'). Tentei as outras respostas primeiro, mas até agora apenas o "X" vermelho e o truque 'você quer ...' estão ajudando. obrigado, eu estava perdendo a minha sanidade mental ...
pestophagous
2
@que: Heh, de nada! Eu descobri isso por acidente. Parece que VS tem um loop de mensagem separada que ele vai para para esse diálogo modal, então sempre que ele está sendo lento sem motivo popping o diálogo às vezes ajuda :-)
Cameron
6

Acabei de encontrar esse problema. A exclusão de pontos de interrupção não funcionou, ou pelo menos não por si só. Após esta falha, fui a Ferramentas> Opções> Depuração> Símbolos e "Empty Symbol Cache"

e depois limpou a solução e reconstruiu.

Agora parece estar funcionando corretamente. Portanto, se você tentar todas as outras coisas listadas e ainda assim não fizer diferença, essas informações adicionais poderão ajudar ...

SteveL
fonte
2

No meu caso, o Visual Studio procurava PDBs de terceiros em caminhos que, na minha máquina, faziam referência a uma unidade óptica. Sem um disco na bandeja, o Windows demorou cerca de 30 para falhar, o que, por sua vez, diminuiu o Visual Studio ao tentar carregar os PDBs daquele local. Mais detalhes estão disponíveis em minha resposta completa aqui: https://stackoverflow.com/a/17457581/85196

Mike
fonte
2

Eu tive o mesmo problema e, mesmo depois de desligar o carregamento do símbolo, o carregamento do módulo no Visual Studio era terrivelmente lento.

A solução foi desativar o software antivírus (no meu caso, NOD32) ou, melhor ainda, adicionar exceções a ele, para que ele ignore os caminhos dos quais seu processo está carregando assemblies (no meu caso, é a pasta GAC ​​e o ASP temporário) Pasta Arquivos .NET).

duas flores
fonte
2

Meus 2 centavos,

Eu estava tendo um problema semelhante ao tentar obter um relatório de diagnóstico (Visual Studio 2013) no modo de versão x64 (amostragem da CPU) e enquanto os símbolos dos arquivos DLL necessários estivessem carregados, os símbolos do meu executável não seriam carregados.

Não mudei nada no menu Símbolos. Em vez disso, fiz algumas alterações nas Páginas de propriedades do encadeamento do meu executável no Solution Explorer, a saber

Propriedades de configuração / Geral / Habilitar compilação incremental gerenciada para SIM

Propriedades de configuração / depuração / ambiente de mesclagem para NO

Propriedades de configuração / C / C ++ / Ativar informações de navegação para SIM (/ FR)

Propriedades de configuração / Vinculador / Ativar link incremental para SIM (/ INCREMENTAL)

EDIT: Este último faz o truque

....

Propriedades de configuração / Vinculador / Depuração / Gerar informações de depuração para Sim (/ DEBUG)

....

Depois disso, funcionou e carregou bem os símbolos. Tenho certeza de que um ou mais dos itens acima fez o truque para mim (embora não tenha certeza exatamente qual) e só quero que os outros saibam e tente fazer isso ..

Paz

user3374479
fonte
1

Tente clicar com o botão direito do mouse em um dos pontos de interrupção e escolha 'Localização'. Em seguida, marque a caixa de seleção 'Permitir que o código fonte seja diferente da versão original'

Jeremiah Anthony
fonte
1

Opções de "aceleração" do símbolo de depuração do Visual Studio 2017, supondo que você ainda não tenha enlouquecido com a personalização de opções:

  1. Em Tools -> Options -> Debugging -> Symbols
    um. Habilite a opção "Microsoft Symbol Server"
    b. Clique em "Empty Symbol Cache"
    c. Defina seu cache de símbolos como um local fácil de encontrar, como C:\dbg_symbolsou%USERPROFILE%\dbg_symbols
  2. Depois de executar novamente o Debug, deixe-o carregar todos os símbolos uma vez, do início ao fim ou o máximo possível.

1A e 2 são as etapas mais importantes. 1B e 1C são apenas alterações úteis para ajudá-lo a acompanhar seus símbolos.

Depois que o aplicativo carregar todos os símbolos pelo menos uma vez e a depuração não terminar prematuramente, esses símbolos deverão ser carregados rapidamente na próxima vez em que a depuração for executada.

Percebi que, se eu cancelar uma execução de depuração, preciso recarregar esses símbolos, pois acho que eles serão "limpos" se forem introduzidos novamente e cancelados repentinamente. Entendo o raciocínio central desse tipo de fluxo, mas neste caso parece mal pensado.

kayleeFrye_onDeck
fonte
0

Desmarcar "Ativar depuração de JavaScript para ASP.NET (Chrome e IE)" em Ferramentas-> Opções-> Depuração-> Geral resolveu meu caso com indisponibilidade para iniciar o depurador VS2017 com pontos de interrupção predefinidos.

Angel_D
fonte
0

A única coisa que funcionou para mim foi mudar o tipo de código.

Na janela Anexar ao processo , alterei a seleção Anexar para: para determinar automaticamente o tipo de código a ser depurado , e meus pontos de interrupção foram atingidos.

Eu anteriormente tinha apenas o código nativo selecionado.

apohl
fonte
0

Eu tive um problema semelhante em que o visual studio continua carregando o símbolo e ficou preso.

Acontece que adicionei alguns "argumentos de linha de comando" nas opções de depuração e um dos parâmetros é inválido (devo passar alguns valores). insira a descrição da imagem aqui

Depois de remover o parâmetro extra, ele começa a funcionar novamente.

Hainan.Z
fonte