Pergunta

Existe uma maneira para exibir as linhas no rastreamento de pilha para a construção assembly .NET / implantado no modo de versão?

UPDATE:

Meu aplicativo é dividido em três projetos de biblioteca de classe e um projecto ASP.NET "website". O erro que eu estou tentando rastrear está em um dos três projetos de biblioteca de classe. Eu só implantou o arquivo PDB para o projeto de biblioteca de classe que está a gerar o "Referência de objeto não definida para uma instância de um objeto" de erro.

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

Solução de Trabalho

Implementando o arquivo pdb para cada aplicação corrigiu o problema número da linha.

Foi útil?

Solução

  • Vá para a janela Propriedades para o projeto onde você quiser ver os números de linha de rastreamento de pilha.
  • Clique no Build "guia vertical".
  • Selecionar configuração "Release". Verifique o parâmetro DEBUG constante.
  • Desmarque o parâmetro "código Otimizar" para evitar o problema traço ocasional com código embutido (este passo não é essencial).
  • Pressione o botão Avançadas ... e escolha de saída -> Debug Info -> APO-only.
  • Implantar o arquivo PDB gerado com a montagem.

Implementado com o comentário abaixo:

  • Uma outra coisa a verificar é na "Caixa / Web Publish" seção que a opção "Excluir símbolos de depuração geradas" também está desmarcada

Outras dicas

Em VS2012 você precisa desmarcar a opção "Excluir símbolos de depuração geradas" no pacote / publicar seção Web das propriedades também.

A minha solução

arquivo PDB de cópia em mesma pasta que arquivo executável.

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

Esta é a razão

http://msdn.microsoft. com / en-us / library / ee416588% 28v = VS.85% 29.aspx

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

Isto pode ser uma indicação de que as necessidades do método a ser reformulado em métodos mais pequenas, mais granulares. Não é um one size fits all resposta, mas esta abordagem tem me servido bem no curto prazo (Eu sempre achei o bug durante a refatoração) e no longo prazo.

Apenas um pensamento.

Incluir símbolos de depuração com a sua construção pacote / implantação.

No VS 2008 Express, eu encontrei-o sob Propriedades do projeto -> Compile -.> Opções Advanced Compile

Isso funciona cada vez. Você só precisa substring a mensagem de rastreamento de pilha. Real fácil! Além disso, em vb.net você precisa fazer para fazer o "Mostrar todos os arquivos" e incluem o APO.

'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

C # versão:

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++;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top