Número de linhas de exibição no rastreamento de pilha para o assembly .NET no modo de versão

Existe uma maneira de exibir as linhas no rastreamento de pilha para o .NET assembly compilar / implantado no modo Release?

ATUALIZAR:

Meu aplicativo é dividido em três projetos de biblioteca de classs e um projeto “website” do ASP.NET. O erro que estou tentando rastrear está em um dos três projetos de biblioteca de classs. Eu só implantei o arquivo pdb para o projeto de biblioteca de classs que está gerando o erro “Referência de object não definida para uma instância de um object”.

Os números de linha ainda não estão aparecendo no rastreamento de pilha. Preciso implantar os arquivos pdb de todos os projetos para obter os números de linha no rastreamento de pilha?

Solução de trabalho

A implantação do arquivo pdb para cada aplicativo corrigiu o problema do número de linha.

  • Vá para a janela Propriedades do projeto onde você deseja ver números de linha de rastreamento de pilha.
  • Clique na aba “Construir vertical”.
  • Selecione a configuração “Release”. Verifique o parâmetro da constante DEBUG.
  • Desmarque o parâmetro “Otimizar código” para evitar o problema ocasional de rastreamento com código embutido (essa etapa não é essencial).
  • Pressione o botão Avançado … e escolha Saída -> Informações de Depuração -> Somente pdb.
  • Implante o arquivo .pdb gerado com o assembly.

Implementado com o comentário abaixo:

  • Uma outra coisa a verificar é na seção “Pacote / Publicar Web” que a checkbox de seleção “Excluir símbolos de debugging gerados” também está desmarcada.

No VS2012, você precisa desmarcar “Excluir símbolos de debugging gerados” na seção Pacote / Publicar Web das propriedades também.

Minha solução

Copie o arquivo pdb na mesma pasta desse arquivo executável.

Agora eu posso ver o número da linha quando executar o arquivo exe.

isso é razão

http://msdn.microsoft.com/pt-br/library/ee416588%28v=vs.85%29.aspx

Eu me deparei com problemas no passado, onde eu sinto a necessidade de implantar arquivos PDB com uma compilation de lançamento, a fim de rastrear um erro. A razão é que, como você disse, a exceção ocorreu em um método que era muito grande e eu não conseguia identificar com precisão onde estava acontecendo.

Isso pode ser uma indicação de que o método precisa ser refatorado em methods menores e mais granulares. Não é uma resposta única para todos, mas essa abordagem me serviu bem no curto prazo (eu sempre encontrei o bug durante a refatoração) e no longo prazo.

Apenas um pensamento.

Inclua símbolos de debugging no seu pacote de compilation / implantação.

No VS 2008 Express, encontrei-o em Propriedades do Projeto -> Compilar -> Opções Avançadas de Compilação.

Isso funciona toda vez. Você só precisa substring a mensagem de rastreamento de pilha. Muito fácil! Além disso, em vb.net você precisa fazer o “Show All Files” e include o pdb.

'Err is the exception passed to this function Dim lineGrab As String = err.StackTrace.Substring(err.StackTrace.Length - 5) Dim i As Integer = 0 While i < lineGrab.Length If (IsNumeric(lineGrab(i))) Then lineNo.Append(lineGrab(i)) End If i += 1 End While 'LineNo holds the number as a string 

Versão c #:

 string lineGrab = error.StackTrace.Substring(error.StackTrace.Length - 5); int i = 0; int value; while (i < lineGrab.Length) { if (int.TryParse(lineGrab[i].ToString(), out value)) { strLineNo.Append(lineGrab[i]); } i++; }