Skip Navigation Links



Translate this page now :



»Programação
»Programação.NET
»Banco de Dados
»Webdesign
»Office
» Certificações Microsoft 4
»Treinamentos4
»Programação 4
»Webdesign«
»Office & User Tips«
»Grupos de UsuĆ”rios
»CĆ©lulas AcadĆŖmicas«
intcontpiada : 118
Os 3 Porquinhos
Você já está cadastrado e participa do grupo de usuários de sua cidade ? Se não, comente o porque.
 
 
FaƧa um pequeno teste com 10 questƵes de VB
.:.
Teste seus conhecimentos em Visual Basic, SQL Server e ASP 3.0 com nossas provas on-line
.:.
Aprimore seus conhecimentos em programaĆ§Ć£o com nosso treinamento on-line de lĆ³gica de programaĆ§Ć£o
.:.
Veja nosso calendƔrio de treinamentos
Gostou da PƔgina?
Então

para um amigo!

Pesquisa personalizada
Pesquisar Dicas:

 






Metodologias de depuração em 10 passos

O momento em que um programador se depara com uma mensagem de erro complexa é, com certeza, frustrante. Se você tem uma mensagem de erro, então você está com meio caminho andado, podendo seguir estes 10 passos. Se não tem, se a aplicação simplesmente não faz o que você deseja, nesse caso precisará se utilizar de uma técnica de depuração conhecida como Chinês. O Chinês é a análise, linha a linha, da aplicação para verificar se ela realmente está realizando a tarefa desejada. Você pode encontrar mais informações sobre ele em nosso treinamento on-line de lógica de programação

Vejamos então os 10 passos para depuração da aplicação :

1o Você tem certeza que entendeu a mensagem ?

Nenhuma linguagem é carrasca (ou quase nenhuma) a ponto de simplesmente dizer "Deu erro bobão !" . Todas procuram explicar que tipo de erro ocorreu. Porém existe uma distância entre o núcleo da linguagem e o código produzido por você que faz com que algumas mensagens sejam difíceis de compreender.

O 1o passo então é : Você entendeu a mensagem ? Saber inglês, nesse ponto, é requisito básico, portanto se tem dificuldade com a lingua inglesa compre um dicionário ou se adapte ao uso de sites de tradução on-line.

Vejamos o exemplo de algumas mensagens e suas respectivas soluções :

Item not found in the collection :

As linguagens que se utilizam de objetos trabalham com um tipo de objeto chamado "Coleção". É um objeto que contém outros objetos ou outras informações. Exemplos de coleções :

  • Form do objeto request
  • Querystring do objeto Request
  • Fields do objeto RecordSet
  • Parameters do objeto Command

Form e Querystring são coleções fáceis de manipular : Se você utilizar um nome de variável que não existe nelas elas não dão erro, apenas retornam vazio. Fields e Parameters não. Se tentar acessar um campo ou um parâmetro de um command e este não existir verá a mensagem de erro acima, informando que o item que você está tentando acessar não existe na referida coleção.

As mensagens de erro, como vê, supõem que você conheça a estrutura da linguagem com a qual esteja trabalhando, para assim poder identificar o que é uma coleção, qual coleção está utilizando, qual item está tentando acessar e, enfim, achar o erro.

No value suplied for one or more required parameters

Mas uma vez o programador precisa conhecer a estrutura da linguagem/ambiente no qual está trabalhando para poder entender essa mensagem.

O ADO, de uso comum no ASP e no VB, permite que sejam inseridos parâmetros dentro de uma instrução SQL e tais parâmetros sejam substituidos pelos valores informados através da coleção Parameters do Command.

Então quando o ADO não reconhece um nome que deveria ser um nome de campo na sua instrução SQL ele de imediato pensa que aquilo é um parâmetro e que você irá informar o valor depois. Quando você dá um Execute sem informar o valor, ele gera esta mensagem, dizendo que você não informou os valores dos parâmetros de sua instrução SQL. Ou seja : Você digitou algum nome de campo errado (ou algo parecido) em sua instrução SQL.

Resultado : Muitas vezes identificando-se o significado da mensagem descobre-se que o erro foi causado por algum erro de digitação no código e encontra-se o erro facilmente.

Concluindo este item, vemos que um programador que não tenha conhecimento da estrutura da linguagem na qual está trabalhando terá mais dificuldade para depurar código do que um programador que conheça a linguagem a fundo. Por isso um treinamento adequado sempre prepara melhor um desenvolvedor do que informações adquiridas de forma autodidata.

2o - O erro é da sua aplicação ou do ambiente ?

Permission Denied, por exemplo, é um erro típico de ambiente e não da sua aplicação. Nesse caso cabe a você checar questões de ambiente tal como permissões NTFS, permissões na conta do usuário, permissões de rede, etc,etc.

Resultado : Se o erro for de ambiente, não há necessidade de continuar este processo.


3o - Você sabe onde ocorreu o erro ?

Antes de continuar na depuração o programador precisa saber exatamente em que linha o erro ocorreu.

Em uma linguagem como Visual Basic não há desculpas para o programador não saber isso : Com recursos como depuração passo-a-passo, utilização de break points, break points condicionais, entre muitos outros, é facílimo descobrir a linha exata em que o erro ocorreu.

Porém em linguagens de script, tal como ASP ou JavaScript, descobrir a linha em que um erro ocorreu é mais complicado. Pela mensagem de erro e pelo que foi executado até o momento que o erro ocorreu o programador pode chegar perto. A partir dai é necessário recorrer a um velho recurso de depuração : Inserir no código várias exibições de mensagens "Passou aqui", identificando-as numericamente, claro. Assim sendo, ao executar novamente o script que deu erro o programador se aproximará cada vez mais da linha que deu erro, até identificar exatamente a linha com problema.

Resultado : Vendo a linha em que o erro ocorreu ele pode ser solucionado (as vezes trata-se de pequenos erros de digitação) ou pelo menos se descobrirá a natureza do erro, ou seja, exatamente do que se trata.

4o - Funcionava antes ? Já funcionou alguma vez ?

Se a resposta a qualquer uma dessas perguntas for sim, o caminho da depuração muda. Avalie as seguintes questões :

Você mudou alguma coisa

Se mudou, então foi sua mudança que causou o erro. Desfaça a mudança e teste novamente. Funcionando, você já sabe exatamente o que está causando erro, facilitando assim a depuração.

Você não mudou nada

O erro pode estar sendo causado, neste caso, por um conjunto de dados nunca antes testado em sua aplicação. Por exemplo, será que não é a 1a vez que um usuário digita um nome tão grande que ultrapassa o limite do tamanho do campo e gera um erro ?
Nesse caso a sequencia de solução do problema muda. Veja :

  • Testar dados comuns, com os quais a aplicação funcionava antes
  • Alterar, campo a campo, os dados comuns para os novos dados e testar a cada alteração
  • Quando ocorrer o erro, você saberá qual campo está com problemas.


Sabendo a informação problematica, o erro pode ser de lógica ou de ambiente. Se você faz algum processamento lógico sobre a informação (trata homens e mulheres de forma diferenciada no código, por exemplo) então analise seu algorítimo. Faça um chinês para descobrir o que está acontecendo em seu algorítimo.

Mas se nenhum processamento lógico é feito com a informação, então pode ser um problema de ambiente : O tipo do campo está correto ? O tamanho do campo é adequado ?

5o - Você sabe o valor de suas variáveis ?

Se nunca funcionou, continuamos com a depuração checando o valor das variáveis no código.

É muito comum que o erro seja causado por um valor errado em uma variável no momento em que a linha que deu erro é executada. Assim sendo, tendo descoberto a linha errada deve-se verificar o valor das variáveis no momento da execução da linha.

Novamente, com linguagens de alto nível como Vb, é moleza : janela Immediate, Locals, ou simplesmente usando o mouse - pode-se até escolher qual o mais fácil. Mas com linguagens de script novamente será necessário recorrer a instruções da linguagem para exibir os valores das variáveis na tela/página antes que a linha que contém o erro seja executada.

Neste tópico existe uma questão especialmente importante : Quando estamos trabalhando com uma linguagem que está gerando código de outra, tal como a geração de instruções SQL pelo VB ou ASP, os erros de concatenação de strings são muito comuns. Nestes casos é especialmente importante que a instrução gerada seja exibida como um todo antes de ser executada. Se você estava gerando a instrução na própria linha da execução, onde ocorreu o erro, mude : Crie uma variável gere a instrução dentro da variável e antes da execução exiba o valor da variável. Se o valor exibido não for uma instrução válida na outra linguagem (ex.: uma instrução SQL válida) ou se não for a instrução que você quer, tá explicado o erro.

Resultado : Descobrindo que o valor de uma de suas variáveis está errado, então você descobrirá que a linha com erro não é a linha em que o erro ocorreu, mas a linha que atribuiu o valor errado na variável. Descobrindo que linha é essa, você poderá descobrir porque o valor errado foi atribuido e achar o erro. Aqui muitas vezes é necessário a realização de um chinês.

6o - Volte ao passo 2 se necessário

São poucos os erros que sobrevivem até o 6o passo. Neste 6o passo é hora de verificar se o erro está realmente no código.

Por exemplo, se você está recebendo a mensagem "No values given for one or more required parameters" mas toda a instrução SQL está escrita certa, será que não são os nomes dos campos no banco que estão errados ?

Avalie todo o ambiente em volta da aplicação para verificar se o erro não poderia estar fora do códiogo.

7o Formule uma dúvida

Se você não solucionou o problema até agora, pelo menos já isolou o problema de uma forma tal a poder formular uma dúvida. Tente formulá-la de forma menos específica possível, fazendo uma pergunta em relação a linguagem, ao invés de em relação ao seu programa especificamente. Desta forma encontrará mais facilmente a solução.

8o Leia o Help

Se não sabe inglês, entre em um curso. Se não tem o Help, instale. Mas leia o Help. O MSDN da Microsoft é muito, mas muito completo mesmo. Se não bastasse isso o Books on line do SQL Server tem tudo que você possa querer saber sobre o SQL Server. Portanto é improvavel que você saia de uma leitura do help sem encontrar o que deseja.

Observe que a formulação da dúvida no item 7 ajudará você com o item 8, 9 e 10.

9o Pesquise na Internet

Vá ao site da Microsoft. O volume de informação é muito grande. Na própria página principal você encontra no menu um recurso de Search que permite você procurar por informações técnicas. Marque apenas as opções relativas a desenvolvimento.

Procure utilizar palavras difíceis ligadas ao seu problema. Quanto mais ligadas especificamente ao seu problema forem as palavras, mais facilmente achará a resposta.

Procure também em ferramentas de busca, como o AltaVista, e em sites sobre programação, como o nosso.

10o - Peça ajuda

Se nenhum dos passos anteriores funcionou, chegou enfim a hora de pedir ajuda. Porém nesse momento cabe seguir diversas regras de etiqueta. Não é qualquer pedido de ajuda que deve ser postado em fóruns ou listas de discussão. Veja alguns itens que você não deve perguntar nestes locais :

  • Problemas de lógica de programação
    Faça e refaça seu chinês, mas não poste isso em um fórum. Ninguém terá tempo disponível para analisar seu código para você.
  • Perguntas específicas de ambiente
    "Na máquina X a minha aplicação não instala, alguém sabe porque?" . Ninguém tem disponibilidade para ir a seu escritório ver por que a sua aplicação não instala na máquina X.
  • Perguntas básicas
    "O que faz o MSGBOX ?". Leia o Help. Achará a resposta para essa pergunta lá.
  • Perguntas muito abertas
    "Como faço para acessar um banco de dados em rede?". A resposta desta pergunta renderia um livro. Por isso é muito provável que você não receba resposta alguma ou, se receber, será uma resposta incompleta que poderá leva-lo a erros. Portanto, não faça esse tipo de pergunta em um fórum. Compre um livro sobre o assunto e leia.
  • Perguntas muito abertas
    Inclui este item 2 vezes porque existe outro tipo de pergunta aberta que incomoda nos fóruns : "Como faço uma aplicação de controle de estoque ?" ou "Como faço uma tela de login?" . Ninguém responderá este tipo de pergunta. Você está, quase, pedindo para que façam para você. Comece a fazer e, havendo dúvidas técnicas, siga o passo-a-passo desse artigo para soluciona-las. Se não sabe por onde começar, compre um livro ou entre em um curso.

Você deve estar perguntando : "O que sobra então ?". A resposta é simples : perguntas verdadeiramente técnicas. Veja o Exemplo de algumas :

"Quais as propriedades de um item quando utilizo um for/each em uma coleção FORM no ASP ?"
"Qual o tipo de dados do VB equivalente ao INT do SQL ?"
"Como faço para colocar um form no systray ?"

Mas e se você estiver com uma dessas dúvidas que não devem ser colocadas em fórum, como resolver ?

Esses casos, que são problemas específicos da lógica de sua aplicação, não serão resolvidos em um fórum. Eventualmente você pode achar uma alma bondosa que analise seu código e corrija sua lógica, mas você não pode querer que alguém trabalhe de graça para você. Portanto, contrate uma consultoria para resolver o problema do seu código. Dependendo do que seja pode sair barato, 20 ou 30 reais para corrigir sua lógica e fazer um trecho de código para você, explicando a você como foi feito.

 

Dennes Torres
MCSD,MCSE,MCDBA





Envie seus comentįrios sobre este artigo

Nome :

E-mail :

Comentários :


Avise-me quando houverem novos comentįrios nesta pįgina

Veja abaixo os comentários já enviados :

Nome : Gustavo E-Mail : gustavo@caseli.com.br
Srs

Estou montando um sistema de calendario de a opcao de alteracao, e quando vou alterar a linha de ID da o seguinte erro

No value given for one or more required parameters.

podes me ajudar
Nome : wagner E-Mail : shugock@hotmail.com
gostei um bom artigo que reflete bem o mundo dos desenvolvedores
Nome : maycon E-Mail : mayconrex@uol.com.br
muito bom...
topico muito interessando e concordo plenamente
sobre as discussoes relativas com postagens nos
Foruns...

hehhe

inte mais..

Abracos_
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : IJTKXiyDg E-Mail : bppc0953s@mail.com
??, ?? ??? ????? ????? ??? ?? ? ???? TV ?? ?? ????. 1? 2?!!?? ?? ?? ? ?? ?? ?????No es chulo SeungKi?? jeje..El af1o pasado, cdauno estuve en Corea ese programa es uno de mis favoritos de tele. 1bak 2il..!!Que9 les parece que cantemos esa cancif3n el se1bado que viene??
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : nike outlet E-Mail : lxlrobki@gmail.com
index.php?site=

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Conheça mais sobre o nosso site :

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::



Quer saber mais?
Faça um curso na Búfalo Informática, Treinamento e Consultoria e
Prepare-se para o Mercado!
Veja o que a Búfalo tem para você.

ļæ½ BĆŗfalo InformĆ”tica, Treinamento e Consultoria - Rua Ɓlvaro Alvim, 37 Sala 920 - CinelĆ¢ndia - Rio de Janeiro / RJ
Tel.: (21)2262-1368 (21) 9240-5134 (21) 9240-7281 e-Mail:
contato@bufaloinfo.com.br