FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour [HBMAKE / xHarbour 1.3.2] Perda de captura de log de erros para arquivo (Notepad) após atualização
Posts: 21
Joined: Wed Nov 08, 2023 02:58 PM

[HBMAKE / xHarbour 1.3.2] Perda de captura de log de erros para arquivo (Notepad) após atualização

Posted: Wed Sep 02, 2026 07:27 PM

Olá a todos !

Gostaria de pedir a ajuda ou ideias dos colegas em relação a uma mudança de comportamento no hbmake após atualizarmos a versão do xHarbour.

1. Descrição do Problema
Na versão xHarbour 1.2.3, ao realizar a compilação utilizando o hbmake (script .bc), sempre que ocorria qualquer erro de compilação ou linkagem, a ferramenta gerava automaticamente um arquivo com o relatório do erro e o abria direto no Notepad (Bloco de Notas).

Porém, ao atualizar para o xHarbour 1.3.2 Intl. (SimpLex) (Build 20260818), isso parou de funcionar. O erro é exibido apenas na tela/console (ou o processo simplesmente não gera/abre o log em arquivo).

O que já tentei (sem sucesso)
Redirecionamento de saída no terminal/script batch (> e 2>):
Tentamos capturar tanto a saída padrão quanto os erros:

DOS
hbmake meu_projeto.bc > erro.log 2>&1

Resultado: O arquivo erro.log fica vazio ou captura apenas o cabeçalho do hbmake, mas não captura as mensagens do compilador C / linkador chamados internamente pelo hbmake.

Flags de compilação do xHarbour (/p, /w, /q):
Testei usar a flag /p para gerar o arquivo .ppo e depurar expansões de macros, além de tentar ajustar o nível de warning (/w1 .. /w3).

Resultado: O .ppo é gerado normalmente, mas o log de erros geral da compilação continua sem ser gravado/aberto no Bloco de Notas.

Direcionamento de saída com a opção /o:

Usamos a opção /o<caminho> para direcionar os arquivos objeto/C gerados para uma pasta específica.
Resultado: Organiza os arquivos compilados na pasta de destino, mas não altera o comportamento do log de erro.

Existe algo que estou deixando de fazer?

Segue arquivo:

#BCC
VERSION=BCB.01
!ifndef CC_DIR
CC_DIR = $(MAKE_DIR)
!endif

!ifndef HB_DIR
HB_DIR = $(HARBOUR_DIR)
!endif

RECURSE= NO
EDITOR=EDIT
SHELL =
COMPRESS = NO
EXTERNALLIB = NO
XFWH = YES
FILESTOADD = 10
WARNINGLEVEL = 0
USERDEFINE =
USERINCLUDE =
EDITOR = Notepad
FWH = C:\fwh
GUI = YES
MT = NO

CLA = CLASSES
SRC = SOURCE
OBJ = obj

PROJECT = WTESTE.EXE $(PR)
OBJFILES = $(OBJ)\CONECT.obj //
$(OBJ)\FUNC001.OBJ $(OBJ)\FUNC002.OBJ $(OBJ)\FUNC003.OBJ $(OBJ)\FUNC004.OBJ $(OBJ)\FUNC005.OBJ $(OBJ)\FUNC006.OBJ $(OBJ)\FUNC007.OBJ $(OBJ)\FUNC008.OBJ $(OBJ)\FUNC009.OBJ $(OBJ)\FUNC010.OBJ $(OBJ)\FUNC011.OBJ //
$(OBJ)\DISPLAY.OBJ $(OBJ)\FUNCXLS.OBJ $(OBJ)\FUNCDBS.OBJ //
$(OBJ)\TCRW.obj $(OBJ)\t7zip.obj //
$(OBJ)\TCALENDA.obj $(OB)

PRGFILES = $(SRC)\CONECT.PRG //
$(SRC)\FUNC001.PRG $(SRC)\FUNC002.PRG $(SRC)\FUNC003.PRG $(SRC)\FUNC004.PRG $(SRC)\FUNC005.PRG $(SRC)\FUNC006.PRG $(SRC)\FUNC007.PRG $(SRC)\FUNC008.PRG $(SRC)\FUNC009.PRG $(SRC)\FUNC010.PRG $(SRC)\FUNC011.PRG //
$(SRC)\DISPLAY.PRG $(SRC)\FUNCXLS.PRG $(SRC)\FUNCDBS.PRG //
$(SRC)\TCRW.PRG $(CL7)\t7zip.PRG //
$(CLA)\TCALENDA\TCALENDA.PRG $(PS)

OBJCFILES = $(OBJ)\SEVENZIP.obj $(OBJ)\wchar2str.obj $(OBC)
CFILES = $(CL7)\SEVENZIP.C $(VRT)\wchar2str.C $(CF)
RESFILES =
RESDEPEN =
TOPMODULE = CONNECT.PRG
LIBFILES = $(FWH)\lib\fivehx.lib $(FWH)\lib\fivehc.lib $(FWH)\lib\libmysql.lib $(FWH)\lib\pgsql.lib $(FWH)\lib\libpq.lib //
C:\LIBS\BROWSE17\LIB\TWBRWX32.LIB //
lang.lib vm.lib rtl.lib rdd.lib macro.lib pp.lib dbfntx.lib dbfcdx.lib dbffpt.lib common.lib gtgui.lib codepage.lib ct.lib tip.lib pcrepos.lib //
hsx.lib hbsix.lib zlib.lib hbcc.lib libmisc shell32.lib uxtheme.lib hbzip.lib hbmzip.lib sevenzip.lib png.lib //
C:\Bcc77\Lib\PSDK\MSIMG32.LIB C:\Bcc77\Lib\PSDK\PSAPI.LIB C:\Bcc77\Lib\PSDK\iphlpapi.LIB C:\Bcc77\Lib\PSDK\odbc32.Lib

EXTLIBFILES =
DEFFILE =
HARBOURFLAGS = -w -a -m -q0
CFLAG1 = -OS $(SHELL) $(CFLAGS) -d -c -L$(HB_DIR)\lib;$(FWH)\lib
CFLAG2 = -I$(HB_DIR)\include;$(CC_DIR)\include
RFLAGS =
LFLAGS = -L$(CC_DIR)\lib\obj;$(CC_DIR)\lib;$(HB_DIR)\lib -Gn -M -m -s -Tpe -x -aa -L$(FWH)\lib
IFLAGS =
LINKER = ilink32

ALLOBJ = c0w32.obj $(OBJFILES) $(OBJCFILES)
ALLRES = $(RESDEPEN)
ALLLIB = $(LIBFILES) import32.lib cw32.lib
.autodepend

#DEPENDS

#COMMANDS
.cpp.obj:
$(CC_DIR)\BIN\bcc32 $(CFLAG1) $(CFLAG2) -o$* $**

.c.obj:
$(CC_DIR)\BIN\bcc32 -I$(HB_DIR)\include $(CFLAG1) $(CFLAG2) -o$* $**

.prg.obj:
$(HB_DIR)\bin\harbour -DEXPORT -n -go -I$(HB_DIR)\include $(HARBOURFLAGS) -I$(FWH)\include -o$* $**

.rc.res:
$(CC_DIR)\BIN\brcc32 $(RFLAGS) $<

#BUILD

$(PROJECT): $(CFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE)
$(CC_DIR)\BIN\$(LINKER) @&&!
$(LFLAGS) +
$(ALLOBJ), +
$(PROJECT),, +
$(ALLLIB), +
$(DEFFILE), +
$(ALLRES)
!

Posts: 8716
Joined: Tue Dec 20, 2005 07:36 PM

Re: [HBMAKE / xHarbour 1.3.2] Perda de captura de log de erros para arquivo (Notepad) após atualização

Posted: Wed Sep 02, 2026 07:49 PM

Você adicionou o C:\FWH\SOURCE\FUNCTION\ERRSYSW.PRG, no SCRIPT.BC? Talvez, seja isso.

ou:

// Força a abertura do Bloco de Notas caso o error.log exista no diretório atual
IF File( "error.log" )
   // Opcional: apaga o log anterior para não acumular se preferir, 
   // mas para capturar o erro atual, o ideal é monitorar o ErrorBlock.
ENDIF

// Para garantir o comportamento clássico, declare a substituição do Errosys:
#include "FiveWin.ch"

FUNCTION Main()
   

   // Seu código inicial...

RETURN NIL

// Sobrescreva ou intercepte o comportamento padrão adicionando esta função ao seu projeto
PROCEDURE ErrorLink()
RETURN

// Caso queira customizar a chamada do bloco de notas ao fechar o sistema por erro:
EXIT PROCEDURE ErroFinal()
   IF File( "error.log" )
      WinExec( "Notepad.exe error.log", 1 )
   ENDIF
RETURN

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341

Continue the discussion