Página 1 de 1

Ativar .log de erro

Enviado: 04 Jan 2022 10:00
por KLEBERVO
Bom dia.
Gostaria de saber se o harbour 3.2 tem a opção de gerar o arquivo error.log, quando o .exe apresenta algum problema?
Atenciosamente,

Kleber Valentim

Ativar .log de erro

Enviado: 04 Jan 2022 11:45
por Jairo Maia
Não sei se tem alguma função nativa do Harbour, mas tem na xhb.lib, que funciona no Harbour.

Coloque a função xhb_ErrorSys() no inicio de seu sistema. Quando ocorrer um erro, será gerado o arquivo: error.log.

NOTA: Se você usa um ERRORSYS.PRG personalizado, ele será desconsiderado.

Ativar .log de erro

Enviado: 04 Jan 2022 13:22
por Itamar M. Lins Jr.
Olá!
gerar o arquivo error.log
O padrão do Harbour é hb_out.log
Se não gostar de hb_out.log tem uma função para colocar o nome que desejar.

Código: Selecionar todos

 Set( _SET_HBOUTLOG[, <cFileName>] ) -> <cOldFileName>
Saudações,
Itamar M. Lins Jr.

Ativar .log de erro

Enviado: 05 Jan 2022 14:24
por KLEBERVO
Boa tarde

Muito grato, pela dica Jairo, inclui o xhb_erro.sys() e gerou o error.log, mas não aparece o processo final onde o erro realmente acontece, aparecendo até o penúltimo processo chamador...

Itamar, sem o xhb_error.sys() não gerou o hb_out.log.

Tem que habilitar alguma função?

Atenciosamente,

Kleber Valentim

Ativar .log de erro

Enviado: 05 Jan 2022 16:22
por Jairo Maia
Verdade! Testei aqui e realmente não mostra o "Trace". Mas acredito que em xHarbour funciona, em Harbour é que é diferente.

Veja aqui o fonte original: https://raw.githubusercontent.com/vszak ... xhberr.prg

Veja que na função xhb_DefError( oError ) está dessa forma:

Código: Selecionar todos

?
? "Error at...:", ProcName() + "(" + hb_ntos( ProcLine() ) + ") in module:", ProcFile()
n := 2
Precisa alterar para:

Código: Selecionar todos

n := 2
?
? "Error at...:", ProcName( n ) + "(" + hb_ntos( ProcLine( n ) ) + ") in module:", ProcFile( n )
Ai funciona o "trace". Em anexo o arquivo ERRORSYS.PRG já alterado, acrescente esse arquivo em seu script .Hbp:
ERRORSYS.rar
(5.16 KiB) Baixado 209 vezes

Ativar .log de erro

Enviado: 05 Jan 2022 17:03
por Itamar M. Lins Jr.
Ola!
Itamar, sem o xhb_error.sys() não gerou o hb_out.log.
Baixou onde o HB3.2 ? é GCC ?
Aqui não faço nada, qualquer erro tem hb_out.log até no Linux.

Saudações,
Itamar M. Lins Jr.

Ativar .log de erro

Enviado: 05 Jan 2022 17:07
por Itamar M. Lins Jr.
Olá!
Veja aqui o fonte original
Esse é do 3.4

Saudações,
Itamar M. Lins Jr.

Ativar .log de erro

Enviado: 07 Jan 2022 08:16
por KLEBERVO
Bom dia
Segue versões:
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/

25/04/2018 07:33 2.016.523 gcc.exe

Atenciosamente,

Kleber Valentim

Ativar .log de erro

Enviado: 22 Jan 2022 07:59
por prmuller
Bom dia!

Aqui no forum temos a PCTerror() que talvez te ajude.
Veja aqui: search.php?fid[]=4

Sds,

Paulo Muller

Ativar .log de erro

Enviado: 25 Jan 2022 13:29
por JoséQuintas
Passei um link, mas é de um projeto particular, só está disponível pra mim.
Removi as mensagens referentes a ele.

Ativar .log de erro

Enviado: 26 Jan 2022 14:04
por Softwhouse
Vc é moderador ?

Ativar .log de erro

Enviado: 11 Fev 2022 17:31
por faustinofaria
Itamar e pessoal, boa tarde, tudo bem?!
Estou usando o Harbour 3.2.0dev com o .hbp com as opções:
-b
-osistema
-inc
-compr=yes
-lxhb
-lhbwin
-lhbct
-debug
-gui
Porém ele não gerou o hb_out.log.
Se eu acrescento o XHB_ERRORSYS(), ele gera o ERROR.LOG.
Não tenho nenhum código específico para tratar os erros.
Também testei o Set( _SET_HBOUTLOG , "ERROR.LOG" ), mas sem sucesso.
Grato pela ajuda!

Ativar .log de erro

Enviado: 11 Fev 2022 18:44
por Itamar M. Lins Jr.
Olá!
Porém ele não gerou o hb_out.log.
Eu passei informação errada.
Na verdade eu estou estudando esse assunto.
Eu uso Hwgui, e ela já puxa o hb_out.log por isso eu achava que era padrão. Mas não é.

Saudações,
Itamar M. Lins Jr.

Ativar .log de erro

Enviado: 13 Fev 2022 11:19
por Itamar M. Lins Jr.
Olá!
Consegui entender como funciona o tratamento de erro.(acredito)
Existem dois tratamentos de erros: Os possíveis erros internos do Harbour "hb_out.log" que mudamos pela função -> Set( _SET_HBOUTLOG , "ERROR.LOG" ), e o que aparece na TELA que é o nosso erro.
Essa da tela tem que ser "DIRECIONADA" para um arquivo, senão mostra aquela mensagem PADRÃO na TELA.
Para ativar precisa direcionar o erro através da função errorblock({|e| MeuTratamentoDoErro( e, oldErr ) } )
para uma função NOSSA.

Código: Selecionar todos

PROC MAIN
xhb_errorsys()
cls
use notthere new
return

compile/ link it with:
hbmk2 jun.prg xhb.hbc 
Link explicando o assunto.
https://groups.google.com/g/harbour-users/c/RX93k4dlc78
A Hwgui tem o dela, fiz confusão pois aqui nos meus sistemas tem hb_out.log e outro em HTML que criei para mandar p/ email do erro.

Saudações,
Itamar M. Lins Jr.