DEBUG Com o harbour

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

DEBUG Com o harbour

Mensagem por asimoes »

Senhores,

Alguém teria algum exemplo de como gerar um programa e que seja possível usar o debug.
Estou executando assim: hbmk2 dbftst.hbm
O dbftst.exe é gerado mas não consigo debugar

dbftst.hbm
----------------------------
-odbfteste
-inc
-lhbct+funcoes
-lhbdebug
-rebuild
-b
dbftst.prg
-----------------------------
dbftst.prg

Código: Selecionar todos

FUNCTION MAIN
   SET EXCLUSIVE OFF
   //SETCANCEL(.T.) JÁ VI QUE NÃO FUNCIONA (ALT-C)
   REQUEST DBFCDX
   altd() //NÃO FUNCIONA, PASSA BATIDO
   CLS
   cArq:=FileSeek("*.dbf")
   aArq:={}
   Do While !Empty(cArq)
      If FileDate(cArq) == Date()
         Aadd(aArq,cArq)
      EndIf
     cArq := FileSeek()
   EndDo
   @02,00 SAY aArq[len(aArq)]+" "+Hora() //A função hora() está em uma lib que eu criei e está funcionando
   USE TESTE EXCLUSIVE VIA "DBFCDX"
   ZAP
   nSecIni:=Seconds()
   FOR I:=1 TO 100000
      @10,00 SAY STRZERO(I,10)
      APPEND BLANK
      FIELD->CODIGO:=STRZERO(I,10)
   NEXT
   nSecFim:=Seconds()
   @12,00 SAY TSTRING(nSecFim-nSecIni)
RETURN NIL
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: DEBUG Com o harbour

Mensagem por sygecom »

Procure nos arquivos do Grupo da Hwgui no Yahoo que o Vailton postou um exemplo de como proceder com o DEBUG. Veja se ajuda, se não posta aqui e tentamos resolver.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: DEBUG Com o harbour

Mensagem por asimoes »

Olá Sygecom,

Eu estou registrado no grupo hwguibr é este?



[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: DEBUG Com o harbour

Mensagem por asimoes »

Sygecom,

Já achei o exemplo do Vailton, mas não serve, o que eu estou procurando é um pra usar com o hbmk2.
Já tentei de várias formas e necas.

[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: DEBUG Com o harbour

Mensagem por sygecom »

Veja o que diz o Help do HBMK2, talvez lhe ajude:
Harbour Make (hbmk2) 2.0.0beta3 (Rev. 12423)
Copyright (c) 1999-2009, Viktor Szakats
http://www.harbour-project.org/
Translation (pt-BR): Vailton Renato, (vailtom@gmail.com)

Sintaxe:

hbmk2 [opções] [<script>] <src[.prg|.c|.obj|.o|.rc|.res|.po|.pot|.hbl|@.clp]>

Opções
-o<outname> nome de arquivo de saida
-l<libname> linkar com a biblioteca <libname>. <libname> deve omitir
path, extensão e o prefixo 'lib' (… menos que faça parte do nome-de-arquivo).
-L<libpath> path adicional para pesquisar por bibliotecas
-i<p>|-incpath=<p> paths adicionais para pesquisa de arquivos headers
-static|-shared linkar com biliotecas est ticas/compartilhadas
-mt|-st linkar com suporte multi ou single-thread na HVM
-gt<name> link with GT<name> GT driver, can be repeated to link with
more GTs. First one will be the default at runtime
-hblib criar biblioteca est tica
-hbdyn criar biblioteca dinamica

-gui|-std criar um execut vel GUI/console
-main=<mainfunc> sobrescreva o nome da função/procedimento inicial
-fullstatic linkar com todas as bibliotecas est ticas
-[full|fix]shared create shared Harbour binaries without/with absolute dir
reference to Harbour library (default: 'fullshared' when
Harbour is installed on system location, 'fixshared'
otherwise) (fix/full option in *nix only)
-nulrdd[-] linkar com o nulrdd
-[no]debug adicionar/excluir informações de debug do compilador C.
Para compilar com Harbour utilize a opção -b como de
costume.
-[no]optim alterna as optimizações do compilador C (ativado por
padrão)
-[no]cpp[=def] forçar compilação em modo C/C++ ou reseta para o modo
padrão
-[no]map criar (ou não) o arquivo map
-[no]implib create (or not) an import library (in -hbdyn mode)
-[no]strip strip (ou não) arquivos bin rios
-[no]trace exibir os comandos executados
-[no]beep ativa (ou desativa) um beep simples em caso de sucesso ou
um beep duplo em caso de erro
-[no]ignore ignore errors when running compiler tools (default: off)
-nohblib[-] não usar bibliotecas est ticas do n£cleo do Harbour quando
linkar
-nolibgrouping[-] disable library grouping on gcc based compilers
-nomiscsyslib[-] don't add extra list of system libraries to default
library list
-traceonly exibir os comandos … serem executados, mas não execute-os
-[no]compr[=lev] comprime o execut vel/biblioteca dinanica (necessita de
UPX)
<lev> pode ser: min, max, def
-[no]run executar/não executar o aplicativo gerado.
-vcshead=<file> gera um arquivo .ch com informações do repositorio local.
SVN, CVS, Git, Mercurial e Bazaar estão entre as
ferramentas atualmente suportadas. O arquivo gerado
conter  a diretriva _HBMK_VCS_TYPE_ com o nome do VCS
detectado e _HBMK_VCS_ID_ com o unique ID do reposit¢rio
local
-tshead=<file> gerar cabe‡alho .ch com informações de data/hora. Cabeçalho
gerado conter  as macros _HBMK_BUILD_DATE_,
_HBMK_BUILD_TIME_, _HBMK_BUILD_TIMESTAMP_ com a data/hora
de criação do arquivo.
-icon=<file> set <file> as application icon. <file> should be a
supported format on the target platform (experimental)
-instpath=<path> copiar o alvo para <path>. Se <path> for um diretorio,
deve terminar com separador de path. Podem ser
especificadas multiplas vezes.
-nohbc não processar arquivos .hbc no diretorio atual
-stop interromper sem executar nada
-echo=<text> ecoa texto na tela

-bldf[-] herdar flags do Harbour: todos/nenhum (padrão)
-bldf=[p][c][l] herdar todos os flags .prg/.c/linker (ou nenhum) provindos
do Harbour
-inctrypath=<p> Pasta adicional para localização automatica dos cabeçalhos
.c
-prgflag=<f> especifica flags para o Harbour
-cflag=<f> especifica flags para o compilador C
-resflag=<f> especifica flags para o compilador de recursos (apenas
windows)
-ldflag=<f> especifica flags para o lineditor (executavel)
-aflag=<f> passa flag para o linkeditor (lib est tica)
-dflag=<f> informar flags para o linkeditor (biblioteca dinanica)
-runflag=<f> argumentos … serem passados ao execut vel gerado quando
-run for utilizado
-jobs=<n> dispara <n> threads de compilação (apenas plataformas
multiprocessadas)
-inc habilita o modo de compilação incremental
-[no]head[=<m>] controla a an lise de cabeçalhos (no modo de compilação
incremental)
<m> pode ser: full, partial (padrão), off
-rebuild Recompilar tudo (em modo de compilação incremental)
-clean compilação limpa (em modo de compilação incremental)
-workdir=<dir> diretorio de trabalho para o modo de compilação
incremental
(default: .hbmk/plat/comp)

-hbl[=<output>] Nome-de-arquivo .hbl resultante. A macro %{hb_lng} ‚
aceita no nome-de-arquivo.
-lng=<languages> lista de idiomas … serem substituidos nas macros %{hb_lng}
nos arquivos .pot/.po e nos nomes de arquivos de saida
.hbl/.po. Lista separada por virgula:
-lng=en-EN,hu-HU,de
-po=<output> criar/atualizar arquivo .po … partir dos fontes. Se um
arquivo .po com o mesmo nome existir, o arquivo ser 
mesclado.
-[no]minipo Adicionar (ou não) a referência do numero da versão do
Harbour e o arquivo de origem ao .po (ativo por padrão)
-rebuildpo recria o arquivo .po removendo assim todas as entradas
obsoletas no mesmo

-target=<script> Especifique um novo alvo para compilação. <script> pode
ser modulo .prg (com ou sem extensão) ou .hbm (somente
para linha de comando)
-target marca o in¡cio de opções pertencentes … um novo alvo
(disponivel apenas em linha de comando)
-alltarget denota o in¡cio de opções comuns pertencentes … todos os
alvos (disponivel apenas em linha de comando)

-hbrun executar alvo
-hbraw interromper apos executar o compilador Harbour
-hbcmp|-clipper interromper apos criar os arquivos objetos
criar um link ou copiar o hbmk2 para hbcmp/clipper
resultar  no mesmo efeito
-hbcc interromper apos criar os arquivos objetos e processa-los
com o compilador C
criar um link ou copiar o hbmk2 para hbcc resultar  no
mesmo efeito
-hblnk parametros especificos do linkeditor.
-hb10 habilita modo de compatibilidade 'Harbour 1.0.x'
(experimental)
-xhb habilitar modo 'xHarbour' (experimental)
-hbc ativa modo C puro (experimental)
-exospace emula o comportamento de um linkeditor compativel com
clipper
criar um link ou copiar o hbmk2 para
rtlink/blinker/exospace resultar  no mesmo efeito

--hbdirbin exibe o diretorio dos binarios do Harbour
--hbdirdyn exibe o diretorio das bibliotecas dinamicas do Harbour
--hbdirlib exibe o diretorio das bibliotecas estaticas do Harbour
--hbdirinc exibe o diretorio dos headers do Harbour

-plat[form]=<plat> assume uma arquitetura especifica. Semelhante … variavel
HB_PLATFORM
-comp[iler]=<comp> use o compilador C especifico. Semelhante … variavel
HB_COMPILER
Valor especial:
- bld: use a configuração original (padrão em *nix)
-build=<name> use a specific build name
-lang=<lang> Sobrepor o idioma padrão. Semelhante … variavel HB_LANG.
--version exibir somente o cabeçalho com a versão do hbmk
-pause forçar pause por uma tela em caso de erro (somente com
driver GT alternativo)
-info ativar mensagens informativas
-quiet suprimir todas as mensagens

Notas:
- <script> pode ser <@script> (no formato .hbm), <script.hbm>, <script.hbp>
(denotando um novo alvo) ou <script.hbc>.
- Multiplos parametros -l, -L e <script> são aceitos.
- Opções usadas com o compilador Harbour tambem são aceitas.
- O arquivo de configuração hbmk.cfg no diretorio do hbmk2 sempre ser
processado caso exista. Em plataformas *nix este arquivo ‚ sempre procurado
nas pastas ~/.harbour, /etc/harbour, <base>/etc/harbour, <base>/etc
(exatamente nesta ordem) antes da pasta que contem o hbmk. O formato deste
arquivo ‚ o mesmo de um .hbc.
- O script hbmk.hbm no diretorio atual ser  sempre processado se existir.
- arquivos .hbc na pasta corrente serão automaticamente processados.
- As opções em um arquivo .hbc devem estar em linhas separadas e são:
libs=[<libname>], hbcs=[<.hbc file>], gt=[gtname],
syslibs=[<libname>], prgflags=[flags do Harbour], cflags=[flags do
compilador C], resflags=[flags do compilador de recursos], ldflags=[flags
do linkeditor], libpaths=[paths], sources=[m¢dulos fontes],
incpaths=[paths], inctrypaths=[paths], instpaths=[paths],
gui|mt|shared|nulrdd|debug|opt|map|implib|strip|run|inc=[yes|no],
cpp=[yes|no|def], compr=[yes|no|def|min|max], head=[off|partial|full],
skip=[yes|no], echo=<text>
Linhas iniciadas com '#' são interpretadas como comentarios e serão
ignoradas
- Os filtros para plataformas são aceitos para cada uma das linhas de um
arquivo .hbc e possuem diversas opções.
Formato de um filtro: {[!][<arquitetura>|<compilador>|<palavra-chave>]}. Os
filtros podem ser combinados usando os operadores '&', '|' e agrupados por
parˆnteses. Ex.: {win}, {gcc}, {linux|darwin}, {win&!pocc},
{(win|linux)&!watcom}, {unix&mt&gui}, -cflag={win}-DMYDEF, -stop{dos},
-stop{!allwin}, {allpocc|allgcc|allmingw|unix}, {allmsvc},
{x86|x86_64|ia64|arm}, {debug|nodebug|gui|std|mt|st|xhb}
- Algumas op‡äes do .hbc (libs=, hbcs=, prgflags=, cflags=, ldflags=,
libpaths=, inctrypaths=, instpaths=, echo=) e seus correspondentes
parametros de linha-de-comando aceitam as seguintes macros: ${hb_root},
${hb_dir}, ${hb_name}, ${hb_plat}, ${hb_comp}, ${hb_build}, ${hb_cpu},
${hb_bin}, ${hb_lib}, ${hb_dyn}, ${hb_inc}, ${<envvar>}. libpaths= tambem
aceitam %{hb_name} que se traduz como o nome do arquivo .hbc sob pesquisa.
- Opções aceitando macros tambem suportam linhas de comando. Neste caso basta
rodeiar o comando dentro de ``, e, se o comando contiver espaço, tambem
adicione aspas duplas. i.e. "-cflag=`wx-config --cflags`", ou
ldflags={unix&gcc}"`wx-config --libs`".
- As opções default e suas caracteristicas variam de arquitetura/compilador.

Valores suportados para <comp> conforme a <plat> disponivel:
- linux : gcc, watcom, icc, sunpro
- darwin : gcc, icc
- win : mingw, msvc, bcc, watcom, icc, pocc, cygwin, xcc,
- mingw64, msvc64, msvcia64, iccia64, pocc64
- wce : mingwarm, mingw, msvcarm, poccarm
- os2 : gcc, watcom
- dos : djgpp, watcom
- bsd : gcc
- hpux : gcc
- sunos : gcc, sunpro
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

DEBUG Com o harbour

Mensagem por asimoes »

Sygecon,

Este help do Vailton já tinha lido mas não achei resposta pro problema.

É simples

Meu prg:

teste.prg
function main
altd()
? "estou debugando?"
inkey(0)
return nil

O -b é pra instruir que vai debugar
hbmk2 -b teste.prg -lhbdebug

executo o teste.exe (não abre o debug) simplesmente ignora o altd() e vai pra mensagem "estou debugando"

Nota: estou usando a versão que eu gerei da pasta trunk\

Pode ser um bug do hbmk2?

[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: DEBUG Com o harbour

Mensagem por asimoes »

Senhores,

Está resolvido, recompilei o harbour e agora está funcionando o teste acima.

[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder