TRATAMENTO DE ERRO NÃO FUNCIONA COM OFUSCADOR

LUIS.HERRERA 20/02/2017 09:49:26
#471812
Bom dia!

Minha rotina de tratamento de erro funciona perfeitamente (antes e após ofuscar o programa). Porém após ofuscar o StackTrace não exibe mais a linha e coluna exata do erro, ficando Zero em ambas.

Alguém sabe como resolver esse Problema?

Nota: Ela ainda consegue pegar o Nome do método que chamou e seu form, apesar de outros métodos da tread estarem ofuscados, o que não atrapalha, pois consigo achar o método de origem na cadeia, só não consigo saber a linha. Assim se o método tiver várias linhas fica trabalhoso achar, principalmente se a descrição é genérica como de costumo no Windows..
DS2T 22/02/2017 15:50:41
#471876
Boa tarde!

Dúvida interessante, tô pensando em começar a usar obfuscator ... aí dei uma lida.
Parece que isso varia de ferramenta pra ferramenta... Aparentemente, Obfuscators costumam prejudicar um pouco o debug mesmo.

http://stackoverflow.com/questions/23808138/obfuscation-e-stacktrace-unreadable

Me indica algum?

Abraços!
LUIS.HERRERA 22/02/2017 16:26:53
#471878
Uso o Crypto Obfuscator for Net.2011 pois meu VS é 2008. Foi o que achei melhor e mais prático, apesar de ter recursos que não dá para usar, dependendo do seu código. Quando se usa reflector, Link, Lambda entre outras coisas, tem que tomar cuidado e achar as configurações corretas.

Não entendo muito, mas depois da algumas tentativas, solucionei todos os problemas que consegui detectar. Hoje não tenho mais nenhum problema. Só esse de não informar a linha, pois minha rotina de Log fica [Ô]capenga[Ô] e tenho mais dificuldade de encontrar alguns erros.

Isso até pode ser alguma configuração do ofuscador, que podeira desativar, mas nem tenho ideia de qual seria, se é que há alguma.
GUIMORAES 22/02/2017 16:41:42
#471879
LUIS HERRERA,

Em produção, com o seu executável em release, o stacktrace não aparece mesmo, até quando o código não é ofuscado.
Já tive muitos problemas com ofuscador, principalmente em serialização de classes, então cheguei a conclusão que não vale a pena.
KERPLUNK 22/02/2017 17:05:53
#471880
Ofuscando seu código, o resultado pode se transformar em apenas uma ou duas linhas de código. Além disso, ao compilar seu código e publicar em modo release, toda a informação de debug é perdida. Erros devem ser tratados de forma específica, um simples bloco try...catch lançando uma exception genérica, não ajuda em praticamente nada. O que você pode fazer é um log de atividades, antes e depois de cada ação importante e suscetível à erro. Assim, você pode saber exatamente onde está o erro, mesmo sem informações de debug.
LAMPIAO 22/02/2017 18:34:53
#471883
Citação:

:
LUIS HERRERA,

Em produção, com o seu executável em release, o stacktrace não aparece mesmo, até quando o código não é ofuscado.
Já tive muitos problemas com ofuscador, principalmente em serialização de classes, então cheguei a conclusão que não vale a pena.



GUIMORAES123

Rapaz, também abandonei isso, surgia uns problemas que confundia, ai comecei a comparar o executável normal com o obfuscado,
testei com outros obfuscadores e os erros variavam de um para o outro, partes do aplicativo funcionava bem, outras não.

Minha conclusão é que funciona para coisas simples, mas quando se tem coisas mais elaboradas, ai começa a
surgir coisas que faz a gente pensar que é mesmo o aplicativo, quando na verdade é o resultado do código obfuscado.

E tem outro detalhe, os problemas variam de máquina para máquina, de versão de S.O, isso faz com que vc fique procurando erro que não existe.

GUIMORAES 23/02/2017 08:43:23
#471896
Citação:

:
:
LUIS HERRERA,

Em produção, com o seu executável em release, o stacktrace não aparece mesmo, até quando o código não é ofuscado.
Já tive muitos problemas com ofuscador, principalmente em serialização de classes, então cheguei a conclusão que não vale a pena.

GUIMORAES123

Rapaz, também abandonei isso, surgia uns problemas que confundia, ai comecei a comparar o executável normal com o obfuscado,
testei com outros obfuscadores e os erros variavam de um para o outro, partes do aplicativo funcionava bem, outras não.

Minha conclusão é que funciona para coisas simples, mas quando se tem coisas mais elaboradas, ai começa a
surgir coisas que faz a gente pensar que é mesmo o aplicativo, quando na verdade é o resultado do código obfuscado.

E tem outro detalhe, os problemas variam de máquina para máquina, de versão de S.O, isso faz com que vc fique procurando erro que não existe.



Pois é lampião, esbarrei no mesmo problema anos atrás. Para aplicações simples, o ofuscador vai bem, mas cá entre nós, é necessário ofuscar um aplicativo com uma simples finalidade? Acho que não.
Em fim, a intenção do tópico não é esta, mas sim o stacktrace que não funciona, e não irá funcionar do mesmo.
NILSONTRES 23/02/2017 09:27:28
#471897
Realmente depois de compilado se perde o StackTrace, uma pena.
LUIS.HERRERA 23/02/2017 09:37:03
#471898
Para finalizar o tópico deixo só uma reflexão sobre a Microsoft, por mais que façam muita coisa para evoluir, parecem que gostam de ter a imagem e ações de sempre perder coisas boas ao substituir uma tecnologia por outra.

Não há como comparar o Dot.Net em relação ao VB6, mas que nosso velho e fiel VB tinha coisas muito melhores, isso tinha, mas porque não continuar usando?

Dois exemplos rápidos:
1) A identificação da Linha do erro era precisa e não se perdia com a compilação; Achar um erro no VB6 era brincadeira de criança, no C# (aff)
2) A compilação nativa era outra excelência, usando em conjunto com UPX ficava maravilhoso, seguro, arquivos pequenos e muito mais rápido.

Bem, como não podemos ficar no passado, vamos em frente e segurar as pontas.... Bom carnaval para todos!
Tópico encerrado , respostas não são mais permitidas