Pergunta

No momento, estamos distribuindo um aplicativo WinForms sem ficheiros.pdb ao espaço conserve nas máquinas dos clientes e banda de download. Quando chegarmos rastreamentos de pilha, estamos recebendo nomes de métodos, mas não números de linha. Existe alguma maneira de obter os números de linha, sem recorrer a distribuir os arquivos PDB?

Foi útil?

Solução

Você não pode obter um rastreamento de pilha com números de linha diretamente de sua aplicação, a menos que você unir o APO. No entanto , se você tem os arquivos PDB para a mesma versão do aplicativo que você enviar a seus clientes, e você não se importa alguns scripts luz, então você pode sua vez o rastreamento de pilha .NET e IL offsets de volta para os números de linha.

Durante o processo de compilação, use Mike Stall é pdb2xml conversor , distribuído como parte do seu excelente código gerenciado MDBG depurador , e armazená-los em algum lugar seguro (por exemplo, controle de origem). Quando você começa uma volta rastreamento de pilha do cliente, você pode consultar o IL compensados ??a partir dos dados XML para determinar o número da linha relevante. Se seus rastreamentos de pilha se submetido a um site, você pode até mesmo automatizar a conversão, para que os desenvolvedores já estará recebendo os rastreamentos de pilha totalmente detalhados no momento em que os casos de bater sua caixa de entrada.

Outras dicas

No. Os números de linha são parte da informação de depuração, o que só é armazenado no arquivo PDB. Isso é os arquivos existem razões PDB em primeiro lugar.

Nem a resposta adequada à sua pergunta, mas eu tenho uma sugestão. Você pode incorporar um mecanismo de registro e obter esses arquivos de log ao lado dos rastreamentos de pilha. Se você incluir números de linha em suas mensagens de log, você pode combinar as informações de registro com o seu rastreamento de pilha manualmente.

Se você não quer ocupar muito espaço que você pode usar arquivos de log tamanho limitados, desta forma apenas as mensagens de log mais recente será mantido.

Nós usamos biblioteca log4net para as nossas necessidades de registro, eu recomendo que você dê uma olhada.

Não, não é. Todas as informações necessárias para mapear as linhas de IL ao número arquivo de origem e linha original são armazenados dentro da APO. Não é possível obter essa informação no rastreamento de pilha sem o APO.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top