Ferramentas Essenciais para Desenvolvimento e Monitoramento em Linux

Compilação e Construção de Código

Compiladores C/C++ (gcc/g++)

Essenciais para compilar código C e C++. Permitem transformar código fonte em executáveis.

Gerenciadores de Build (make)

Automatizam o processo de compilação, especialmente útil para projetos com múltiplos arquivos, utilizando arquivos Makefile.

Ferramentas de Build Cruzadas (cmake)

Auxiliam na geração de arquivos de build (como Makefile) de forma independente da plataforma, ideais para projetos complexos.

Auxiliar de Dependências (pkg-config)

Simplifica a obtenção de informações de compilação e linkagem para bibliotecas instaladas.

Depuração e Análise de Programas

Depurador Padrão (gdb)

Uma ferramenta poderosa para depurar programas C/C++. Permite definir breakpoints, inspecionar variáveis e analisar o fluxo de execução.


   # Definir breakpoint em uma linha específica
   break meu_arquivo.cpp:150

   # Definir breakpoint no início de uma função
   break MinhaClasse::meuMetodo

   # Habilitar exibição formatada de variáveis
   set print pretty

   # Exibir o objeto 'this' em um método de classe
   print *this

   # Mostrar variáveis locais na pilha atual
   info locals

   # Listar chamadas de função na pilha
   backtrace
 

Analisador de Chamadas de Sistema (strace)

Rastreia as chamadas de sistema e sinais que um processo recebe ou envia. Útil para diagnosticar problemas de I/O e permissões.


   # Rastrear chamadas de sistema de um executável
   strace ./meu_programa

   # Anexar a um processo em execução pelo seu PID
   strace -p 12345

   # Filtrar chamadas de sistema específicas
   strace -p 12345 -e read,write,open
 

Framework de Testes Unitários (Google Test - gtest)

Um framework popular para escrever e executar testes unitários em C++.

Monitoramento de Processos e Sistema

Listagem e Informações de Processos

Comandos para visualizar e entender os processos em execução no sistema.


   # Listar todos os processos do usuário atual e informações detalhadas
   ps aux

   # Mostrar a hierarquia de processos em formato de árvore
   pstree -p
 

Monitoramento em Tempo Real (top)

Exibe uma visão dinâmica e em tempo real dos processos e utilização de recursos do sistema.


   # Monitorar todos os processos
   top

   # Monitorar um processo específico pelo PID
   top -p 12345
 

Monitoramento Interativo (htop)

Uma versão aprimorada do top, com interface mais amigável e recursos interativos.


   # Iniciar htop
   htop

   # Filtrar processos por nome (pressionando F4)
   # Pressionar F4 e digitar parte do nome do processo
 

Sistema de Arquivos Virtual /proc

Fornece uma interface para informações do kernel e de processos em tempo real através de arquivos virtuais.

Coleta de Dados de Desempenho (sar)

Coleta, reporta e salva dados de atividade do sistema para análise posterior.

Análise de Uso de Memória

Verificação de Memória (free)

Exibe a quantidade de memória livre e usada no sistema, incluindo swap.

Detecção de Vazamentos de Memória (mtrace)

Uma ferramenta para ajudar a identificar vazamentos de memória em programas C.

Ferramenta de Depuração de Memória (Valgrind)

Um framework de instrumentação dinâmico amplamente utilizado para detectar erros de memória e vazamentos em programas C/C++.


   valgrind \
   --leak-check=full \
   --show-leak-kinds=all \
   --track-origins=yes \
   --log-file=valgrind_report.txt \
   ./meu_executavel
 

Análise de Arquivos e Disco

Listagem de Arquivos Abertos (lsof)

Lista arquivos abertos por processos, útil para identificar qual processo está usando um determinado arquivo ou montagem.

Monitoramento de I/O (iostat)

Relata estatísticas de utilização de disco e CPU.

Busca de Arquivos (find)

Procura arquivos em uma hierarquia de diretórios com base em diversos critérios (nome, tipo, data, etc.).

Visualização em Árvore (tree)

Exibe o conteúdo de diretórios em formato de árvore, facilitando a visualização da estrutura.

Monitoramento de Rede

Gerenciamento de Rede (ip)

Ferramenta moderna para configurar interfaces de rede, rotas e outras funcionalidades de rede.

Configuração de Adaptadores de Rede (ethtool)

Permite consultar e configurar parâmetros de adaptadores de rede.

Informações de Rede (netstat)

Exibe conexões de rede, tabelas de roteamento, estatísticas de interface, etc.

Estatísticas de Rede (ss)

Uma utilidade mais rápida e moderna que o netstat para investigar sockets.

Gerenciamento de Firewall

Configuração de Regras de Firewall (iptables)

Ferramenta para configurar regras de filtragem de pacotes no kernel Linux.

Análise de Gargalos de Desempenho

Ferramenta de Profiling do Kernel (perf)

Uma suíte poderosa para analisar o desempenho do sistema e de aplicações, identificando gargalos em nível de hardware e software.


   # Analisar a frequência de chamadas de função em um processo
   perf top -p 12345

   # Gravar dados de performance para análise posterior
   perf record ./meu_programa

   # Obter estatísticas gerais de eventos de performance
   perf stat ./meu_programa

   # Gerar relatório a partir dos dados gravados
   perf report
 

Análise de Chamadas de Sistema (strace - novamente)

Pode ser usado para identificar lentidão causada por chamadas de sistema ineficientes.

Profiler de Código (gprof)

Analisa o tempo de execução de funções e a relação entre elas.

Gerenciamento de Logs

Rotação e Gerenciamento de Logs (logrotate)

Automatiza a manutenção de arquivos de log, incluindo rotação, compressão e remoção.

Agendamento de Tarefas

Agendador Padrão (cron)

Permite agendar a execução de comandos ou scripts em horários específicos.

Agendador do systemd (systemd timer)

Uma alternativa mais moderna e flexível ao cron, integrada ao sistema de init systemd.

Containerização

Plataforma de Contêineres (Docker)

Permite construir, distribuir e executar aplicações em contêineres isolados.

Comandos comuns incluem: docker pull, docker run, docker build.

Gerenciamento de Sessão de Terminal

Multiplexador de Terminal (tmux)

Permite criar e gerenciar múltiplas sessões de terminal dentro de uma única janela, além de poder desanexar e reanexar a sessões.


   # Iniciar uma nova sessão tmux
   tmux new-session -s meu_projeto

   # Alternar entre janelas
   Ctrl+b p  (anterior)
   Ctrl+b n  (próxima)

   # Dividir painel verticalmente
   Ctrl+b %

   # Dividir painel horizontalmente
   Ctrl+b "
 

Multiplexador Moderno (Zellij)

Uma alternativa moderna ao tmux com foco em usabilidade e funcionalidades avançadas.

Manipulação de Variáveis de Ambiente

Exibição e Modificação de Ambiente (env)

Utilizado para listar, definir ou remover variáveis de ambiente para a execução de comandos.


   # Listar todas as variáveis de ambiente
   env

   # Executar um comando sem herdar o ambiente atual
   env -i /bin/bash

   # Definir uma variável de ambiente temporariamente para um comando
   env MINHA_VAR=valor ./meu_script.sh

   # Adicionar um diretório ao PATH para um comando específico
   env PATH=$PATH:/novo/diretorio ./executavel_especifico
 

Comandos Úteis Diversos

Monitoramento Contínuo de Saída (watch)

Executa um comando repetidamente e exibe sua saída em tela cheia, útil para observar mudanças.


   # Observar a carga do sistema a cada 5 segundos, destacando mudanças
   watch -n 5 "top -bn1 | grep 'load average'"
 

Execução com Tempo Limite (timeout)

Executa um comando por um período determinado, encerrando-o se exceder o tempo.


   # Capturar tráfego de rede em uma porta específica por 60 segundos
   timeout 60s tcpdump -i eth0 port 80 -w captura_web.pcap
 

Tags: gcc g++ make CMake pkg-config

Publicado em 7-5 19:36