Finalmente descobri o enigma do debug.
Uma coisa que foi sempre esquecida.
No clipper, pra compilar um módulo era:
del programa.obj
clipper programa -b
No harbour, com hbmk2, só isso não basta.
É que sempre esquecemos que tem um .C no meio do caminho.
Aqui sempre joguei meus lixos pro \temp
uso no hbp: -inc -workdir=d:\temp
Então pra debuggar um módulo:
del \temp\p0010.*
hbmk2 jpa -b
Se não usar pasta temporária, a saída vai ser alterar o PRG pra forçar recompilar.
Só hoje percebi esse detalhe do C. Por isso tinha hora que funcionava, e tinha hora que não.
Debug de um módulo no Harbour
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Debug de um módulo no Harbour
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7929
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Debug de um módulo no Harbour
Ola!
Você postou sobre isso no grupo em inglês.
Ele fez essas correções:
Saudações,
Itamar M. Lins Jr.
Você postou sobre isso no grupo em inglês.
Ele fez essas correções:
Não sei se tem a ver com essa situação.* src/debug/dbgentry.c
! added additional protection against recursive debugger activation.
It should fix problem reported by Rafa.
* src/rtl/copyfile.c
! reset error object between different RTE calls in __copyFile()
! copy file attributes only on *nix platforms.
In Cl*pper __copyFile() does not copy attributes so maybe also
in *nixes we should make the same.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Debug de um módulo no Harbour
Não, essa foi outra, quando se usa o inkeyfilter.
O que mencionei é pra debugar somente um módulo.
Eu apagava o obj e recompilava com -b, e não aparecia o debug.
Acabava sempre recompilando tudo com -b.
E com classe e multithread, deixou de funcionar, e parei de usar de vez.
o detalhe é que sempre esquecemos que a compilação Harbour envolve Harbour e compilador C.
Então tem que apagar o obj e o .c, ou então alterar o PRG pra atualizar a data, e forçar recompilar o .c.
Eu uso compilação incremental, e uso a pasta \temp como pasta de arquivos temporários (lá ficam .obj/.o e .c)
hbmk2 jpa
isso compila normal, sem debug
del \temp\p0010.*
isso apaga os temporários do fonte p0010
hbmk2 jpa -b
isso vai compilar somente o p0010, que foi o apagado, e vai permitir o debug somente do p0010
lembrando que eu uso -inc no hbp, pra compilar somente o que foi alterado, ou o que faltar.
eu detesto aqueles arquivos escondidos do Harbour, .hbmk, que o Windows esconde e fica em tudo que é pasta.
por isso meu hbp tem -workdir=d:\temp
se alguém quiser fazer igual, cuidado: ao trocar de projeto, precisa apagar d:\temp, porque senão vai usar compilados de um projeto para outro.
No clipper meu gerenciador de compilação já verificava se eu tinha trocado de projeto, e apagava minha pasta \temp
No harbour, só se eu chamar por bat, e chamar um programa antes do hbmk2. (não sei se dá pra fazer algo no hbmk2)
O que mencionei é pra debugar somente um módulo.
Eu apagava o obj e recompilava com -b, e não aparecia o debug.
Acabava sempre recompilando tudo com -b.
E com classe e multithread, deixou de funcionar, e parei de usar de vez.
o detalhe é que sempre esquecemos que a compilação Harbour envolve Harbour e compilador C.
Então tem que apagar o obj e o .c, ou então alterar o PRG pra atualizar a data, e forçar recompilar o .c.
Eu uso compilação incremental, e uso a pasta \temp como pasta de arquivos temporários (lá ficam .obj/.o e .c)
hbmk2 jpa
isso compila normal, sem debug
del \temp\p0010.*
isso apaga os temporários do fonte p0010
hbmk2 jpa -b
isso vai compilar somente o p0010, que foi o apagado, e vai permitir o debug somente do p0010
lembrando que eu uso -inc no hbp, pra compilar somente o que foi alterado, ou o que faltar.
eu detesto aqueles arquivos escondidos do Harbour, .hbmk, que o Windows esconde e fica em tudo que é pasta.
por isso meu hbp tem -workdir=d:\temp
se alguém quiser fazer igual, cuidado: ao trocar de projeto, precisa apagar d:\temp, porque senão vai usar compilados de um projeto para outro.
No clipper meu gerenciador de compilação já verificava se eu tinha trocado de projeto, e apagava minha pasta \temp
No harbour, só se eu chamar por bat, e chamar um programa antes do hbmk2. (não sei se dá pra fazer algo no hbmk2)
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Debug de um módulo no Harbour
Bom dia José...
Acabei de compilar minha aplicação harbour. No xharbour eu tentei fazer isso e não funcionou...veja só
Tenho alguns arquivos usados em todo o sistema tipo controle de tela, de menu, getsys.. e quando vai debugar é uma confusão porque o debug mostra todos eles, então toda vez que passa num read chama mostra o getsys linha por linha...
Tentei criar um lib compilando os arquivos sem o -b e depois compilando o resto da aplicação com -b. Teoricamente deveria mostrar no debug só os compilados com -b, mas as mostrava os prg dos arquivos que foram incluidos na lib, sem conteúdo nas linhas só com as numerações. Isso no xharbour.
No harbour se fizer como voce falou ele vai ignorar os prg que não foram compilados com -b e mostra só os que foram compilados com -b?
Obrigado
Rubens
Acabei de compilar minha aplicação harbour. No xharbour eu tentei fazer isso e não funcionou...veja só
Tenho alguns arquivos usados em todo o sistema tipo controle de tela, de menu, getsys.. e quando vai debugar é uma confusão porque o debug mostra todos eles, então toda vez que passa num read chama mostra o getsys linha por linha...
Tentei criar um lib compilando os arquivos sem o -b e depois compilando o resto da aplicação com -b. Teoricamente deveria mostrar no debug só os compilados com -b, mas as mostrava os prg dos arquivos que foram incluidos na lib, sem conteúdo nas linhas só com as numerações. Isso no xharbour.
No harbour se fizer como voce falou ele vai ignorar os prg que não foram compilados com -b e mostra só os que foram compilados com -b?
Obrigado
Rubens
"Eu e minha casa servimos ao Senhor e você
"
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Debug de um módulo no Harbour
Sempre que uso o debug, somente no módulo a debugar é que uso -b, e somente este é que aparece no debug.
Para os outros (sem -b) simplesmente não para no debug, igual sempre foi no Clipper.
Aliás... se não tiver um GET ou algo parecido, não para nem no módulo compilado com -b.
É que nessa "parada" detectando "apertar tecla" é que o debug é ativado.
Para os outros (sem -b) simplesmente não para no debug, igual sempre foi no Clipper.
Aliás... se não tiver um GET ou algo parecido, não para nem no módulo compilado com -b.
É que nessa "parada" detectando "apertar tecla" é que o debug é ativado.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Debug de um módulo no Harbour
Só Completando a informação:
no meu hbp defino pasta de trabalho e incremental. Se usar o default, tem pasta diferente pra cada caso
-workdir=d:\temp
-inc
- Compilar normal
hbmk2 jpa.hbp
- Apagar o compilado do fonte a debugar (talvez o EXE também)
del d:\temp\teste001.*
del jpa.exe
- Compilar novamente, somente o módulo vai ser compilado com -b porque o resto já está compilado
hbmk2 jpa.hbp -b
Teclando Alt-D, o debug só vai mostrar alguma coisa se estiver executando alguma linha de teste001.prg
Supondo que o debug abriu no GET:
Cada F8 vai mostrar uma linha dessas e nada mais, a não ser que o fonte de Rotina1() esteja em um fonte compilado com -b.
Nota:
uso um c.bat pra menos digitação, onde apago o EXE, não sei se poderia fazer diferença.
e com debug c -b
no meu hbp defino pasta de trabalho e incremental. Se usar o default, tem pasta diferente pra cada caso
-workdir=d:\temp
-inc
- Compilar normal
hbmk2 jpa.hbp
- Apagar o compilado do fonte a debugar (talvez o EXE também)
del d:\temp\teste001.*
del jpa.exe
- Compilar novamente, somente o módulo vai ser compilado com -b porque o resto já está compilado
hbmk2 jpa.hbp -b
Teclando Alt-D, o debug só vai mostrar alguma coisa se estiver executando alguma linha de teste001.prg
Código: Selecionar todos
@ 1, 0 GET x
READ
Rotina1()
? x + 3
Cada F8 vai mostrar uma linha dessas e nada mais, a não ser que o fonte de Rotina1() esteja em um fonte compilado com -b.
Nota:
uso um c.bat pra menos digitação, onde apago o EXE, não sei se poderia fazer diferença.
Código: Selecionar todos
del jpa.exe
hbmk2 jpa.hbp %1 %2 %3 %4 %5 %6
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/