PplWare Mobile

Introdução ao debugging de software

                                    
                                

Este artigo tem mais de um ano


Autor: Marisa Pinto


  1. Xplouder says:

    Dos melhores artigos que por aqui passaram. Parabéns.

  2. Sergio J says:

    Para mim programador que não sabe usar um debuger não é programador. Obviamente estou a exagerar.

    Na nossa empresa faz-nos muita confusão quando aparece um programador que não usa ferramentas de debug.

    Em sistemas de baixo nível é vital a utilização de ferramentas de depuração.

  3. Manuel Borges says:

    Uma pequena mensagem de agradecimento pelo verdadeiro “serviço público” que têm vindo a fazer com estes tutoriais.
    Além das noticias e artigos de opinião, este modelo de tutoriais que tem vindo a promover cada vez mais é muito positivo e de grande utilidade.
    Um grande obrigado.
    Abraços.

  4. CaptianObvious says:

    Parabéns pelo artigo!

  5. Pedro says:

    Muito bom artigo, Parabéns.

    Sei que sai fora do ambito deste mesmo artigo mas o debugg de microcontroladores é um outro mundo. Comparando o debugg destas linguagens de alto nível com o dos microcontroladores, este último torna-se bem mais interessante devido à componente de hardware associada ao software e a necessidade de corrigir erros, às vezes, mesmo no hardware, o que não são tão fáceis de detectar.

  6. sakura says:

    debug , pacht == crak windows, office keys…..
    em C# e raro chegar ao asm.
    ultimo degug apple wifi, herdware faill. patch in new MS,soft.
    deguger que + uso -> colega do lado.

  7. Flaviano Daniel Vitorino says:

    Artigo bem construído e muito construtivo(“cheio de polpa”). Vai muito além do bitaite:”Usem SEMPRE debug porque senão não são programadores.”

  8. Fernando says:

    “Se debugging é o processo de remover bugs de software, a programação deve ser o processo de inserí-los”

    – Edsger Dijkstra

  9. lmx says:

    Luis Soares,

    Parabéns pelo artigo, está muito bom 😉

    “Redução de dependências (ex. de tecnologias, de pessoas, do S.O.);”

    Aqui depende, acho que aqui pensas-te mais do ponto de vista da Portabilidade…

    Depende muito!
    Tenho trabalhado com colegas que preferem usar e inventar alternativas a funções do SO, mas estas funções chegam a ser mais de 1000 vezes mais lentas…tudo porque não querem depender do SO, mas na prática o SO é linux e SEMPRE será… :S

    Para quebrar essa lógica marado propus, uma API abstrata, que faz a verificação de qual SO está por baixo, e propus implementar o código necessário a usar funcionalidades do SO(para ser “Blazing Fast”), no meu caso linux(os que acham que a app pode em sonhos ser usada em Windows, que a implementem..)…

    Tudo para dizer que depende muito do que estiveres a fazer, se velocidade for um requisito, então obrigatoriamente tens que usar as funcionalidades do SO!

    Se a velocidade não for relevante, bem ai que se esqueça as Funcionalidades do SO, e opta por portabilidade, mas sempre salvaguardando uma API de acesso enxuta, e que futuramente te permita mais facilmente usares o SO..

    • Luís Soares says:

      Olá lmx,

      Sim concordo. Julgo que as boas práticas não devem ser ambicionadas de forma cega e extremista (como no exemplo que deste). Devem haver equilíbrio e ponderação.

      Quando falei em “redução de dependências” referia-me não só à portabilidade mas também à independência e autonomia de um projeto. Por exemplo: quão fácil é para um novo programador pegar no mesmo e corrê-lo? Quantos problemas tem de resolver? Com quantas pessoas tem de falar? Quantas alterações tem de fazer?

      A ver se escrevo um artigo sobre independência de projetos. Já o fiz para independência de GUIs: http://luissoares.com/uma-interface-independente/

  10. sakura says:

    linux é linux mas em windows…… 1ª vm?
    “””Generally, C# and Java can be just as fast or faster because the JIT compiler a compiler that compiles your IL the first time it’s executed can make optimizations that a C++ compiled program cannot because it can query the machine. It can determine if the machine is Intel or AMD; Pentium 4, Core Solo, or Core Duo; or if supports SSE4, etc.”””
    http://www.codeproject.com/Articles/584743/Programming-Xlib-with-Mono-Deve

    • lmx says:

      Sim o jit compiling é uma boa coisa 😉

      O problema do JIT compiling, é mesmo na faze de warmup, e mesmo posteriormente, porque a faze de warmup é defenida por ti!
      Tu podes decidir em que faze é que consideras a optimização a estar a determinado nivel de performance…
      E claro a partir dessa faze, a optimização se existir é minima…
      MAS durante o warmup, a APP quase nem se mexe!!!!
      Gastas imenso cpu e memoria a potes para obter bons niveis de performance!

      O Jit Compiling APENAS é bom para aplicações server side, e se for uma app que está em constante desenvolvimento…é uma desgraça por causa dos warmup times…necessarios a cada alteração que fazes.

      O java ou C# podem ser mais rápidos que c++ em tarefas repetivas, como por exemplo alocar arrays de determinado tipo de objectos, etc…usando a memoria da VM…e que for previamente desalocada pelo Garbage colector(…será que ja foi desalocada…????pois é… a thread do GC é uma thread de baixa prioridade!!!!!!!Mais uma coisa a ter em atenção!!..para tarefas rápidas…esta teoria pode cair por terra…).

      Depois no que toca a Funçôes do SO, não ha nada mais rápido que a própria API so SO, ou então uma API abstracta por cima(enxuta) que consoante o SO usa funções do SO onde vai ser executada!
      Não te esqueças que a VM java ou .net é um processo que corre tal como qualquer outro..

      Estamos a falar de coisas diferentes…eu estou a falar de interação entre a app e o SO , ficheiros, shared memory,etc…tu estas a falar da velocidade do código da propria app, mas não nestas fazes muitas das vezes cruciais.

      Certamente se tens milhões de pedidos para analizar o tamanho de um ficheiro no disco, ou o tipo, etc…não o vais fazer em java…porque caso contrario vais “atascar” o cpu com processamente desnecessario, sendo que o tamanho dos ficheiros varia, o seus inodes no disco variam , os seus nomes variam, etc, etc, etc……………..
      se fores profissional, vais criar uma API de abstração minima em C, que chama funções proprias do SO que foram desenvolvidas ao longo de décadas para serem “Blazing fast”…caso contrario estas a criar um Bottleneck!

      No entanto se apenas tiveres meia duzia de ficheiros, aqui já depepnde…vais escrever muito e ler deles?
      Se sim usa funções optimizadas para o efeito, se não epah usa aquilo que quiseres, porque não é muito relevante.

      Cada caso é um caso..

  11. sakura says:

    100% de acordo n

  12. Luís Soares says:

    Obrigado pelos comentários! vou tentar continuar a escrever 🙂

  13. Adriano Martins says:

    Excelente artigo! Parabéns e obrigado pelo trabalho desenvolvido em benefício daqueles que desejam aprimorar seus conhecimentos.

Deixe um comentário

O seu endereço de email não será publicado.

You may use these HTML tags and attributes: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste site ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. A administração deste site reserva-se, desde já, no direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação do seu autor (nome completo e endereço válido de email) também poderão ser excluídos.