Página 1 de 1

Usando CLD - Instruções básicas

Enviado: 24 Mai 2005 12:48
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.

Como usar com RMAKE

Enviado: 19 Jul 2005 14:55
por moacirponti
Olá.
Como usar o debugger se uso o rmake, ou seja, não consigo compilar apenas CLIPPER XXX.PRG /B...

Enviado: 20 Jul 2005 00:28
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.

Enviado: 22 Jul 2005 01:58
por evolver
Spitzer escreveu:Olá!
FILE cld.lib
Ná verdade não é file cld.lib e sim

lib cld.lib

Enviado: 22 Jul 2005 20:29
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.

Enviado: 18 Mai 2007 09:53
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

Enviado: 01 Jun 2007 14:57
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.

Enviado: 02 Jun 2007 08:19
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

Enviado: 02 Jun 2007 11:16
por Maligno
Com o AVG tudo funciona perfeitamente.

Enviado: 02 Jun 2007 12:46
por sygecom
Só para registrar....eu uso o AVAST e não tenho problemas em usar o CLD...

Abraços
Leonardo Machado

Enviado: 02 Jun 2007 13:28
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.

Enviado: 22 Set 2007 00:49
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

Enviado: 22 Set 2007 03:22
por Maligno
BLinker é sempre melhor. Esse erro eu nunca tinha visto até agora. :)