Usando CLD - Instruções básicas

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

evolver
Membro Master
Membro Master
Mensagens: 189
Registrado em: 28 Ago 2004 01:02
Localização: Cruz Alta - RS
Contato:

Usando CLD - Instruções básicas

Mensagem por evolver »

Usando o CLD para restrear BUGS

Uma das melhores maneiras de se rastrear um problema num progama em clipper é usar o CLD, o Clipper Debugger, esse programa utiliza de uma função do próprio sistema operacional, onde um programa pode executar uma função de debug através de uma interrupção do sistema.


Mas porque estou dizendo isso? Algum de vocês já notou que apenas os programas compilados com a opção /b permitem o debug e aqueles onde não botamos essa opção a gente pode esquecer?


Pois é, o parâmetro /b faz com que o compilador CLIPPER insira um comando de interrupção de debug a cada conjunto de códigos equivalente a um comando em clipper. Assim quando lincarmos o programa esses comandos de interrupção podem parar o programa e fazer com que seja passado o comando para o CLD.


Infelizmente existe um problema nesse caso pois existem diversos programas que tambem se utilizam dessa interrupção para executar funções próprias e acabam interferindo no bom funcionamento do CLD. Entre eles estão os programas da Symantec (famosos Norton qualquercoisa), programas de depuração do C, Pascal, assembler e todo tipo de programa que permita depurar um programa linha por linha de código (algo similar ao debug do dos). Aparentemente apenas os Windows NT, 2K e XP são imunes a esse problema por causa de sua mais completa separação entre as tarefas do MS-Dos assim cada chamada ao prompt de comando é gerenciada separada das demais. Para se usar o CLD nos Windows 9x e ME é necessário desinstalar qualquer aplicativo Symantec e depuradores de programa online.


Como usar o CLD.


Primeiramente precisamos compilar todos os arquivos com a opção /b, mais ou menos dessa forma CLIPPER PROGRAMA.PRG /B, assim será colocada a interrupção a cada linha de código do programa. Depois é só linkar normalmente e pronto.


Executamos o CLD da seguinte forma: CLD [/43|/50 /S] PROGRAMA.EXE parametros do programa


Temos algumas opções extra que podem ser bem interessantes quando temos um monitor VGA ou SVGA a mão (só não vale EGA ou CGA). Todas começando com CLD /opções PROGRAMA.EXE opções_do_programa


/43 - Inicia o CLD em modo 43 linhas


/50 - Inicia o CLD em modo 50 linhas


/S - Quando usamos monitores VGA e nosso programa é todo feito para usar 25 linhas ele muda para o modo de tela de 50 linhas (se disponível), divide a tela ao meio executando o programa na parte de cima e o cld na parte de baixo.


Iniciando o Uso do CLD


O CLD é um programa cuja versatilidade é muito grande e se torna cada vez mais poderoso quanto mais o sabemos aproveitar.


Podemos inciar em um roteiro básico e aproveitar para utilizar ele em nossos programas para debugarmos erros. Para isso precisamos inicialmente conhecer poucos comandos.


F5 - Roda o programa de forma contínua até que seja pressionado ALT+D
F8 - Executa um programa linha por linha
F7 - Executa o programa até encontrar o marcador de linha
TAB - Muda entre as janelas



Quando iniciamos o CLD temos disponíveis temos tres janelas:


MONITOR WINDOW - Monitora o estado das variáveis e permite alterá-las em tempo real
PROGRAM WINDOW - Monitora o andamento do programa e permite visualizar o código do mesmo
COMMAND WINDOW - Essa é a janela mais versátil pois permite executar comandos


Como dito acima a Command Window permite executar comandos e dentre eles está o comando ? que é o mesmo que o ? do Clipper permitindo assim exibir o valor de variáveis e com a experiência você podera usar até conjuntos condicionais e teste de comandos do programa para debugar de maneira mais eficiente. Para usar a Command Window e você está na Program Window não é necessário mudar para essa janela, basta digitar o comando e pressionar ENTER. Aqui vão alguns exemplos de como usar o comando ?.


? variavel_1
? campododbf2
? extenso(variavel) ***Nota: a função extenso tem que existir dentro do programa compilado***
? iif(variavel="N",2,3)


Temos tambem a tecla F6 que abre a janela de bancos de dados. Nela obtemos informações de todos os bancos de dados abertos, índices, banco de dados em uso no momento, dados do registro atual, a única coisa que falta para essa janela é um bom editor de arquivos DBF pois em questão de visualização ela é super completa. Para mudar entre as janelas da janela de DBF basta pressionar a tecla TAB.


Com essas teclas e comandos básicos já podemos iniciar o debug do nosso programa em Clipper e tenho certeza que a maioria dos erros são descobertos apenas com esse roteiro que eu criei.
Sergio "Evolver" Fagundes

CURVE-SE DIANTE DE MIM SER INSIGNIFICANTE, POIS EU SOU ROOT
Só respondo em PVT perguntas relativas ao que eu faço. Qualquer outra dúvida favor postar no fórum.
Peço aos veteranos que antes de responder a uma pergunta repetida dêem uma pesquisada e instruam a quem perguntou a fazer o mesmo.
moacirponti
Usuário Nível 1
Usuário Nível 1
Mensagens: 8
Registrado em: 15 Mar 2005 10:37

Como usar com RMAKE

Mensagem por moacirponti »

Olá.
Como usar o debugger se uso o rmake, ou seja, não consigo compilar apenas CLIPPER XXX.PRG /B...
Spitzer
Usuário Nível 2
Usuário Nível 2
Mensagens: 60
Registrado em: 15 Ago 2003 04:56
Localização: Nova Fátima - PR

Mensagem por Spitzer »

Olá!

Não uso o Rmake, mas creio que desta forma também funcionará:
No prompt de comando, antes de compilar e linkar, alimente a variável de sistema "clippercmd" com "b", digitando:

set clippercmd=/b

Isto fará com que todos os programas sejam compilados com a opção "/b".
Feito isto, compile e link o sistema.
Com o programa em execução, no momento que quiser ativar o debug, pressione Alt+D.
Ou então, imediatamente antes da linha do programa que você quer a "parada", digite a função:

AltD()

Compile e link.

Não esqueça que antes de compilar e linkar, você deve colocar a seguinte linha no arquivo .lnk:

FILE cld.lib

Lembrando, uso o Clipper 5.2e.
Creio que para versões anteriores à 5.x haja alguma diferença.
Abraços,
Ademir Spitzer
evolver
Membro Master
Membro Master
Mensagens: 189
Registrado em: 28 Ago 2004 01:02
Localização: Cruz Alta - RS
Contato:

Mensagem por evolver »

Spitzer escreveu:Olá!
FILE cld.lib
Ná verdade não é file cld.lib e sim

lib cld.lib
Sergio "Evolver" Fagundes

CURVE-SE DIANTE DE MIM SER INSIGNIFICANTE, POIS EU SOU ROOT
Só respondo em PVT perguntas relativas ao que eu faço. Qualquer outra dúvida favor postar no fórum.
Peço aos veteranos que antes de responder a uma pergunta repetida dêem uma pesquisada e instruam a quem perguntou a fazer o mesmo.
Spitzer
Usuário Nível 2
Usuário Nível 2
Mensagens: 60
Registrado em: 15 Ago 2003 04:56
Localização: Nova Fátima - PR

Mensagem por Spitzer »

Evolver, não lembro de onde tirei ou quem me passou para fazer assim (não tenho certeza, mas acho que foi o Júnior, de Bragança).
Até procurei no NG para o Clipper 5.2e mas não encontrei nenhuma referência ao arquivo .lnk. Aliás, na documentação do debug não tem nada a ver com nossa prática, pois lá ainda afirma que deve-se chamar a aplicação com CLD.EXE:
CLD [[/43 | /50 | /S] [@<scriptFile>]
<exeFile> [<argument list>]]).


De qualquer forma, desde que migrei para o Clipper 5.2e faço assim (FILE cld.lib) e sempre deu certo.
Mas para tirar mesmo a dúvida, comentei a linha FILE cld.lib e criei a linha LIB cld.lib.
Não deu nenhum erro na linkagem, porém, a aplicação não deu a mínima bola quando pressionei ALT+D.

Desculpe, mas diante disto, posso afirmar que é FILE cld.lib.
Abraços,
Ademir Spitzer
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Caro Sergio,

Eu utilizo o CLD, evidentemente que é a melhor ferramenta para depurar errors dos sistemas nos códigos-fontes. Mas eu não estou conseguindo executar em WIN98, mesmo desativando o meu Norton antivirus. Sempre conseguó executar legal quando inicializo o meu WIN98 em "Modo de segurança".

Poderiam me ajudar a encontrar uma saída melhor do que estar ligando/desligando...

Um clip-abraço :)Pos
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Pablo César escreveu:Mas eu não estou conseguindo executar em WIN98, mesmo desativando o meu Norton antivirus.
Desativar o Norton, pelo que me lembro (já tive esse problema) não resolve. O que vai resolver é desinstalar. E um detalhe: desinstalar o Norton não é fácil. Não basta usar o painel de controle. Há uma série de procedimentos que precisam ser executados. Se quiser, tenho um roteiro ainda da época em que desinstalei esse "monstro" da minha máquina. Depois disso, passei a usar o AVG.
Sempre conseguó executar legal quando inicializo o meu WIN98 em "Modo de segurança".
Justamente. Em modo de segurança o Norton não é carregado.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Obrigado Maligno por responder. Pensei que só comigo isto acontecia...

E vou passar a utilizar outro anti-virus. Por acaso Maligno, você não tem problemas de utilizar o CLD com o AVG ?

Um clip-abraço :)Pos
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Com o AVG tudo funciona perfeitamente.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Só para registrar....eu uso o AVAST e não tenho problemas em usar o CLD...

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

De fato. Me parece, pelos comentários que já vi, que o Norton é o único que realmente atrapalha o CLD. Com os demais, ou pelo menos na maioria, o CLD funciona normalmente. Portanto, a escolha de algum outro anti-vírus vai mais da preferência pessoal.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Mensagem por clodoaldomonteiro »

Olá pessoal!
Tôo tentando usar o CLD e tá dando o seguinte erro num sistema linkado com o exospace:
Fatal CLD/100 2 Ex ESTO
Vocês poderia me dar algumas dicas de como usar o CLD?

Qual linkador eu posso usar, blinker, exospace ou rtlink?

Valeu a atenção
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

BLinker é sempre melhor. Esse erro eu nunca tinha visto até agora. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder