TRACE DE EXE

ANGELOATA 02/08/2017 09:55:01
#475581
Alguem sabe dizer como faço para gravar tipo um arquivo de auditoria das execuções de exe. pois estou com um problema de travamento quando o usuario clica no menu e somente nesse cliente, e precisaria tipo rastrear o que o esta ocorrendo e o ponto exato.

Alguem teria alguma ideia de como fazer isso?
KERPLUNK 02/08/2017 10:03:25
#475582
Está falando de log? Essa é uma das razões para usar blocos Try...catch. Toda vez que você tiver uma exception, você deve gravá-la em algum lugar, incluindo todo o StackTrace da exception.
ANGELOATA 02/08/2017 10:09:13
#475583
tem os blocos try catch, so que quando clica em um botao por exemplo para abrir um menu algo assim, praticamente nao tem codigo nenhum o exe trava, precisaria saber exatamente o que o exe esta fazendo naquele momento... pq se desse uma mensagem de erro seria facil, mas o exe trava mesmo.

Exemplo, utilizo a os componente dotnetbar, e uso um botao que tem submenus.... o simples fato do cliente clicar para acessa esse submenu esta travando... Assim tenho 20 clientes todos usam o mesmo sistema e somente nesse trava...

Queria saber se sem como rastrear isso... para poder checar onde esta o problema e trabalhar efetivamente para chegar numa conclusao.
KERPLUNK 02/08/2017 10:51:40
#475589
Então é uma incoerência do componente com o sistema operacional. Faça um projeto contendo somente esse componente. Se o mesmo problema acontecer, você já sabe a causa. Com isso em mãos, você tenta reproduzir, criando uma máquina o mais parecida possível com a do cliente e rodando. Você poderia usar ferramentas como o ILSpy mas nem sempre você vai achar a causa com isso.
ANGELOATA 02/08/2017 10:55:08
#475590

entao... ja fiz isso tbem... ja criei o ambiente... e nada... somente na maquina dele... eu to quase pra por uma maquina minha la pra ver ...
OCELOT 02/08/2017 11:22:14
#475591
Resposta escolhida
Alguma exception deve estar ocorrendo, o motivo pode ser por alguma diferença que existe neste PC para outros, que pode ser versão do Windows, ter ou não atualizações do Windows instaladas, versão do .Net instalado, programas de segurança como Antivirus e outros, guardiões de segurança de bancos, ou até mesmo o PC estar infectado por algum malware.

Existe uma forma de se pegar a exception que está ocorrendo, que é para isso que o AppDomain possui um evento chamado UnhandledException, que no caso do VB.Net a forma mais simples de tratar este evento é indo nas propriedades do projeto e na aba [Ô]Application[Ô] deve ter um botão chamado [Ô]View Application Events[Ô], que cria um arquivo [Ô]ApplicationEvents.vb[Ô] no projeto caso ele não exista, que permite tratar alguns eventos específicos do Application Framework do VB.Net, e um deles é o UnhandledException.

Ali através do parâmetro [Ô]e[Ô] você pode pegar a propriedade [Ô]Exception[Ô] e salvar um arquivo com o erro que ocorreu. Detalhe, não se preocupe em salvar a mensagem ou outras propriedades da exception, use simplesmente um [Ô]e.Exception.ToString()[Ô] pois ele inclui todas as informações da exception, inclusive o StackTrace se estiver disponível, o que pode facilitar muito a encontrar onde o erro ocorreu.
ANGELOATA 02/08/2017 11:32:43
#475592
OCELOT obrigado, to pesquisando aqui na internet inclusive achei um artigo do Macoratti, apos a sua dica para usar UnhandledException....muito obrigado mesmo

http://www.macoratti.net/08/05/net_log1.htm
http://www.jorgepaulino.com/2008/07/vbnet-dicas-de-programao-7.html
Tópico encerrado , respostas não são mais permitidas