Atualização de 22 de fevereiro de 2013 : A entrada do Microsoft Connect tem uma observação de Alok Shriram (gerente de programa, bibliotecas de classes básicas, .NET Framework) que o problema deve ser resolvido agora. A entrada do Connect está marcada como Resolvido (Fixo) :
Este problema agora deve ser corrigido. Publicamos uma atualização para fontes de referência. Informe-nos caso seu problema ainda não tenha sido corrigido.
Ano e meio.
Links de bônus
Vote para que esse bug seja corrigido no Microsoft Connect .
Tópico no Microsoft Social que está acontecendo há um ano e meio, perguntando quando será consertado .
Questão Original
Como habilito a revisão de origem do .NET Framework no Visual Studio 2010?
Nota : esta questão é uma parte de um todo maior:
- .NET 2.0 WinForm: Suportando DPI e alterações de fonte padrão
- Os controles do WinForms não escalam durante o ScaleControl
- VS2010: Como habilitar "Enable .NET Framework source stepping"?
- Visual Studio 2010 Professional: Como acessar a janela Módulos?
- Visual Studio 2010: Propriedades. Configurações quebradas após redirecionar o projeto para .NET Framework 3.5
O Visual Studio 2010 vem com um novo recurso:
- Ferramentas, opções, depuração, geral, habilitar revisão de origem do .NET Framework
Seguindo as instruções na página MSDN How to: Debug .NET Framework Source :
Para habilitar a depuração de fonte .NET Framework
No menu Ferramentas , clique em Opções .
Na caixa de diálogo Opções , clique na categoria Depuração .
Na caixa Geral , marque as seguintes caixas de seleção:
- Habilitar revisão de origem do .NET Framework
- Habilitar suporte ao servidor de origem
Eu faço isso:
Observação : você notará, como a página do MSDN observa, e como eu percebi, que a seleção de Ativar revisão de origem do .NET Framework desmarcará automaticamente ** Ativar apenas meu código (somente gerenciado). Também habilitei as mensagens de diagnóstico do suporte ao servidor de origem.
A ativação dessas opções define automaticamente um local de download do cache de símbolos para mim:
Nota : A entrada do Microsoft Symbol Server já está presente (e não pode ser removida).
A página do MSDN diz para carregar os símbolos:
Para carregar símbolos do Framework usando a janela Módulos
Na janela Módulos , clique com o botão direito em um módulo para o qual os símbolos não foram carregados. Você pode saber se os símbolos estão carregados ou não olhando a coluna Status dos símbolos .
Aponte para Carregar Símbolos de e clique em Servidores de Símbolos da Microsoft para baixar os símbolos do servidor de símbolos públicos da Microsoft ou Caminho do Símbolo para carregar de um diretório onde você tenha armazenado símbolos anteriormente.
Eu tento isso:
e então todos os símbolos são carregados:
Eu estou sentado em um ponto de interrupção, que está prestes a chamar o código do .NET Framework:
protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
{
base.ScaleControl(factor, specified);
Empurrar F11faz com que o depurador simplesmente pule para a próxima linha:
protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
{
base.ScaleControl(factor, specified);
//Record the running scale factor used
this.scaleFactor = new SizeF(
this.scaleFactor.Width * factor.Width,
this.scaleFactor.Height * factor.Height);
Como habilito a revisão de origem do .NET Framework no Visual Studio 2010?
Estou sentado em um ponto de interrupção no meu código. Tento clicar duas vezes em uma função mais acima na pilha de chamadas. Isso, espero, me permitiria pular para o código .NET:
Exceto que não funciona: o Visual Studio me diz que não há nenhuma fonte disponível:
Como habilito a revisão de origem do .NET Framework no Visual Studio 2010?
Se eu mudar para a visualização de desmontagem antes de tentar entrar no código .NET ( Depurar -> Windows -> Desmontagem ), poderei ver um call
no código .NET:
E quando o faço, acabo depurando uma desmontagem de System.Windows.Forms.ScaleControl
:
O que não é o mesmo ou tão útil quanto ser capaz de entrar no código-fonte do .NET Framework.
Como habilito a revisão de origem do .NET Framework no Visual Studio 2010?
O caminho de cache de símbolo configurado em meu computador contém arquivos de cache de símbolo:
Portanto, ele está baixando pdb
arquivos de símbolo, mas se recusando a usá-los.
Como habilito a revisão de origem do .NET Framework no Visual Studio 2010?
Leppie sugeriu que eu verificasse o Debug
log (com a janela de log de depuração aberta; caso contrário, ele não registra nada):
Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl'
Anteriormente no log, eu o vejo carregando símbolos para System.Windows.Forms.dll
:
Loaded 'C:\Windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll', Symbols loaded.
Portanto, ele está encontrando meus símbolos, mas alegando que não conseguiu encontrá-los.
Como habilito a revisão de origem do .NET Framework no Visual Studio 2010?
Um cara da Microsoft Itália sugere desativar Exigir arquivos de origem para corresponder exatamente à versão original :
Isso não resolveu.
Como habilito a revisão de origem do .NET Framework no Visual Studio 2010?
Foi sugerido que há um bug no servidor de origem da Microsoft para .NET Framework 4.0 . Seguindo essa sugestão, mudei o projeto para o .NET Framework 3.5 de destino :
Isso não resolveu.
Como habilito a revisão de origem do .NET Framework no Visual Studio 2010?
Alguém em algum lugar se perguntou se outra pessoa com o mesmo problema estava usando a versão de 64 bits do depurador . Agora, não existe uma versão de 64 bits do Visual Studio, mas eu tentei mudar meu projeto de AnyCPU para x86 (estava sendo JITed para x64), caso a Microsoft não suporte processadores de 64 bits:
Isso não resolveu:
Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl'
Como habilito a revisão de origem do .NET Framework no Visual Studio 2010?
Veja também
- Configurando o Visual Studio para depurar o código-fonte do .NET Framework
- Não é possível depurar o código do .NET Framework no VS2010
- A revisão da fonte do .NET framework não funciona apesar das opções definidas
- Configurando o Visual Studio 2010 para entrar no código-fonte do Microsoft .NET
- Depuração de código-fonte do Visual Studio 2008 SP1 .NET Framework
- Sem Depurar> janela Módulos no Visual Studio 2008 Versão 9.0.21022.8 RTM
fonte
Respostas:
Os PDBs para percorrer o código-fonte são publicados apenas para RTM e Service Packs. Como tal, quando a atualização de segurança é lançada e modifica a dll que você está tentando depurar, ela fará com que a revisão da fonte não funcione (ou seja, você obterá a mensagem "Nenhuma fonte disponível" com um esmaecido "Navegar para encontrar a fonte ").
No entanto, depois de fazer todas as configurações apropriadas, você pode usar a seguinte solução alternativa. A solução alternativa é essencialmente localizar as atualizações de segurança que causaram a alteração da dll e removê-las. Isso tem a desvantagem óbvia de ter essas atualizações de segurança removidas de sua máquina.
Gambiarra
site:support.microsoft.com/kb System.Windows.Forms.dll 4.0.30319.269
http://support.microsoft.com/kb/2604121
, então KB2604121, é o que nos interessa.Você precisará fazer isso para cada dll dentro da estrutura .NET na qual deseja depurar.
Depois de fazer isso, defina um ponto de interrupção na fonte .net (por exemplo, vá para a guia Breakpoints, diga New-> Break at Function e digite System.Windows.Forms.Form.Form) ou entre em um dos .net métodos nessa dll.
fonte
Embora, infelizmente, haja um problema com um Microsoft, como Leppie apontou (e eu obtive o mesmo resultado, veja
deve-se notar que sua tentativa falharia de qualquer maneira, já que você referiu:
ao invés de:
referencesource.microsoft.com/symbols
Consulte a seção Perguntas frequentes / solução de problemas de Configurando o Visual Studio para depurar o código-fonte do .NET Framework
fonte
Eu encontrei a resposta, eu acho.
Rastreei o que estava acontecendo no Fiddler. Parece que apenas os símbolos estão disponíveis no momento, e nenhuma fonte.
Quando o VS tenta carregar os símbolos do servidor de 'fonte de referência', ele falha (404). Como isso falha, acho que não é possível mapear os arquivos de origem nesse servidor.
http://referencesource.microsoft.com/symbols/mscorlib.pdb/ED96A7F38A2940F39B9CA7AD9BC5CB671/mscorlib.pdb
Após a falha acima, ele tenta algum servidor chamado 'msdl' onde encontra o PDB real (mas parece que este não tem informações de código-fonte).
http://msdl.microsoft.com/download/symbols/mscorlib.pdb/ED96A7F38A2940F39B9CA7AD9BC5CB671/mscorlib.pd_
Ao todo, parece ser um problema (temporário) da Microsoft com seus servidores.
Tenho certeza de que tinha algum código-fonte há algum tempo. Mas agora não está funcionando.
Editar:
Tentei com várias versões do .NET, todas com o mesmo resultado. :(
fonte
Por enquanto, não está funcionando se você tiver o SP1 instalado. Aqui estão alguns comentários sobre o formulário de problema MS: http://social.msdn.microsoft.com/Forums/en-US/refsourceserver/thread/41388c7b-582b-4e3f-8178-3d38a3c99639
fonte
No meu caso, eu estava depurando um aplicativo WinForms antigo do .NET 2.0 e recebi a mensagem "Fonte não disponível" . Tentei todas as configurações recomendadas.
Por fim, reconstruí o aplicativo para ter como alvo temporariamente o .NET 4.5 e consegui fazer a revisão de origem funcionar. Talvez meu aplicativo seja muito antigo para revisão de origem. Meio que anula o propósito, eu sei, mas para testes rápidos e sujos, funciona. O bug que tenho ainda está presente no .NET 4.5 . :)
fonte
Você pode encontrar a fonte de referência aqui, disponível para download:
Fonte de referência do .NET Framework 4.0
As fontes para WCF, WF e até 4.5 Beta / RC e muitos mais podem ser encontradas lá também:
Microsoft Referencesource NetFramework
fonte
Aqui estão as instruções oficiais https://referencesource.microsoft.com/setup.html
fonte
se você deseja depurar código-fonte aberto (como o pacote nuget), você pode adicionar este url à sua lista de servidor de símbolo
http://srv.symbolsource.org/pdb/Public
fonte