Página 1 de 1
Debug de um módulo no Harbour
Enviado: 04 Mar 2014 17:34
por JoséQuintas
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
Enviado: 05 Mar 2014 14:08
por Itamar M. Lins Jr.
Ola!
Você postou sobre isso no grupo em inglês.
Ele fez essas correções:
* 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.
Não sei se tem a ver com essa situação.
Saudações,
Itamar M. Lins Jr.
Debug de um módulo no Harbour
Enviado: 05 Mar 2014 18:54
por JoséQuintas
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)
Debug de um módulo no Harbour
Enviado: 07 Nov 2014 11:26
por rubens
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
Debug de um módulo no Harbour
Enviado: 07 Nov 2014 12:01
por JoséQuintas
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.
Debug de um módulo no Harbour
Enviado: 07 Nov 2014 12:24
por JoséQuintas
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