Ferramentas indispensáveis

Um bom profissional tem uma caixa de ferramentas que o acompanha onde quer que vá e também possui outras em sua oficina ou local de trabalho que não podem ser carregadas, mas são igualmente indispensáveis.

O profissional programador normalmente possui uma biblioteca de sua confiança que pode ser comparada à caixa de ferramentas portátil. Entretanto quando temos que mudar de plataforma, estas ferramentas devem ser “recalibradas” ou mesmo substituídas.

Um grande passo a ser dado, para se ter esta compatibilidade à disposição é utilizar um conjunto de ferramentas versáteis e padronizadas.

Por estas e outras, tenho estudado algumas bibliotecas existentes e apanhado algumas idéias para uso em meus desenvolvimentos.

Ainda não consegui a tal caixa de ferramentas portátil (a.k.a portável) de modo que eu possa levar a qualquer lugar, mas estou próximo de algumas que são bastante úteis. Descrevo-as aqui, além das triviais, as que não são de uso freqüente e que normalmente me fazem perder tempo procurando ou lembrando de seus nomes. Observem-se que as man pages e os apropos ajudam, mas nem sempre trazem a resposta que você procura na hora certa.

Da próxima vez que forem analisar um código, e esta é uma boa prática, feito por gurus, utilize estes facilitadores. Tenho tido muito sucesso com eles ao ler códigos complexos que você pode baixar diretamente dos repositórios Linux. Na verdade eles também ajudarão se por acaso você tiver acesso aos “exemplos” (código fonte nem em sonho) que acompanham os outros produtos que se vêem por aí. Basta copiar a codebase fornecida para um Linux perto de você ou usar os famigerados Msys/MingW ou Cygwin.

gcc Simplesmente “o” compilador, não preciso dizer nada sobre ele, o manual é bem completo.
vim Este é “o” editor. Dispensa comentários.
indent Este funciona na linha de comandos, mas o vim dá conta dele muito bem com o gg=G, explicado pelo Fred em outra ocasião
cflow Acompanha o gcc e imprime de vários modos as chamadas e chamadores de um programa
cscope É uma ferramenta interativa que permite navegar pelos fontes (.c .h ) buscando por elementos específicos e mostra na tela suas referências, lembre-se de “periscópio” e entenda. Serve para quickies do tipo quantas vezes a rotina xyz é usada, onde foo aparece.
ctags As exuberantes tags do c. Gera um arquivo tags no diretório onde foi rodado (podendo ser usado recursivamente) contendo os símbolos do programa e serve para o vim fazer saltos diretos via ctrl-] e ctrl-t
splint Este é o tirano do bem. Não tem jeito de convencer o splint a ser carinhoso. Se seu código contiver erros ele nem começa. Quando vocẽ pensa que não tem erros aí ele te mostra a quantidade de caca. Se tentar fazer tudo que ele pede, será mais fácil ler, se o código estiver em braille.
objdump Quando o fred falar em assembly, basta usar esta ferramenta no programa já compilado e obter a listagem para por a mão na massa
ldd Imprime a lista de bibliotecas que um programa depende, útil também para reparar problemas no linux e checar dependências
nm Imprime a lista de símbolos – as rotinas que você ou outro – incluiu nas bibliotecas ( lib***.so) dinâmicas, bom para ver os pontos de chamadas das rotinas da lib.
strings Este é bem legal… Localiza as strings dentro de um “executável” e com outra ferramenta “hexedit” podemos corrigir erros de português ou trocar ‘ficheiro’ por ‘arquivo ‘ dentro destes programas
sum Um checksum rápido para saber se dois fontes ou mesmo executáveis são de versões diferentes
strace/ltrace Matadores – traça as chamadas, ponteiros, contadores, etc. Requer leitura atenta do manual.
gdb Gnu debbuger – sem comentários
file Ajuda a descobrir o tipo de arquivo (elf, data, etc..)
gprof Depois de compilar o seu programa com a chave -p e rodá-lo, perceba que é gerado um arquivo gmon.out no mesmo diretório. Sobre este arquivo gerado o gprof irá obter as estatísticas do seu programa.
time Rode seu programa com time myprog e veja quanto tempo gastou
clock Esta é uma rotina interna do standard c e serve para contar o tempo gasto nas rotinas
Anúncios

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s