Depurador
Um depurador (em inglês: debugger) é um programa de computador usado para testar outros programas e fazer sua depuração, que consiste em encontrar os defeitos do programa.
O código a ser examinado pode estar sendo executado sob uma máquina virtual, uma técnica que permite total flexibilidade de acesso aos estados da máquina virtual, que também é software. Mas os processadores modernos têm muitos recursos, que também facilitam o acesso a instruções do programa. Por exemplo, desde há muito tempo é possível interromper a execução de instruções do programa depurado em qualquer ponto e examinar o conteúdo de suas variáveis.
Quando o programa aborta, o depurador mostra a posição no código fonte original, se for um depurador de código fonte, ou um depurador simbólico. Caso seja um depurador de linguagem de máquina, ele mostra a linha onde ocorreu o problema através de desmontagem. Um programa é abortado quando ele usa uma instrução não disponível (inválida) na CPU, quando tenta acessar memória inexistente ou não disponível para ele, bloqueada pelo mecanismo de proteção. Ou seja: quando tenta acessar devido a defeito ou não, recursos indisponíveis para ele. Em geral, o sistema operacional é que faz com que o programa aborte.
Em geral, os depuradores também oferecem funcionalidades mais sofisticadas, como: a execução passo-a-passo de um programa; a suspensão do programa para examinar seu estado atual, em pontos predefinidos, chamados pontos de parada; o acompanhamento do valor de variáveis que podem ser usadas inclusive para gerar uma suspensão, ou ativar um ponto de parada.
Apesar da importância do uso de depuradores, é bom lembrar que um programa pode se comportar de forma diferente quando executando sob um depurador. O bom humor leva este problema a ser chamado de Heisenbug na literatura especializada, em alusão à incerteza de Heisenberg. Por exemplo, um depurador alterará a velocidade de processamento do programa, o que tanto fará surgir novos problemas de sincronização, quanto poderá mascarar aqueles já existentes. Por esta razão, mesmo os melhores depuradores existentes podem não ser eficazes na solução dos problemas de sincronização muitas vezes presentes em sistemas multitarefa ou distribuídos.
É interessante notar que as mesmas funcionalidades que tornam um depurador útil para o desenvolvedor que precisa eliminar defeitos, podem ser usadas por quem queira quebrar proteção contra cópia, ou fazer um crack de software com alguma limitação de uso.
Muitos programadores—em particular aqueles habituados ao desenvolvimento em ambientes de desenvolvimento integrado, não gostam ou têm dificuldade de trabalhar com depuradores com recursos limitados de interação, como é o caso de depuradores que oferecem apenas uma interface de linha de comando. Em vez disso, preferem usar front-ends que acrescentem funções de visualização e interação mais sofisticadas e flexíveis, principalmente através de interface gráfica com o usuário.
Depuradores e ferramentas de depuração |
- adb
Allinea Distributed Debugging Tool (DDT)- AntiC
- BDebug, parte de Barfly Assembler Development System
- Broadway
CA/EZTEST (Depurador/Testador interativo para CICS)- CodeView
- DAEDALUS
DBG, depurador e perfilador para PHP
- dbx
- ddb
- DDD
- DEBUG
- DebugDiag
Dynamic debugging technique (DDT), e sua contraparte em octal, ODT- FusionDebug, um depurador interativo para Coldfusion MX
e2dbg o ELF embarcado- Eclipse
- Etnus TotalView
GoBug, depurador simbólico para Windows
GNU Debugger (GDB)
HP Distributed Debugging Environment (DDE)[1]
HP Wildebeest Debugger (WDB)[2]
Interactive Disassembler (IDA Pro)- Java Platform Debugger Architecture
JSwat, depurador Java de código livre- ladebug
- MacsBug
MULTI[3]
NoIce, depurador para sistemas embarcados
- OLIVER
- OllyDbg
Omniscient Debugger, depurador Java- Prism Parallel Debugger
- IBM Rational Purify
Rasta Ring 0 Debugger (RR0D)- sdb
- SIMMON
- SIMON
- SoftICE
T-Bug, um depurador integrado ao Perl 5
TimeMachine[4]
- TMON
- Turbo Debugger
- WinDbg
- Valgrind
VB Watch Debugger, para Visual Basic 6.0
- Visual Studio Debugger
xDebug, depurador e perfilador para PHP
Ver também |
- Depuração
- Teste de software
- defeito de software
- Core dump
Referências
↑ HP/DDE Debugger User's Guide: HP 9000 Series 700/800 Computers
↑ HP WDB
↑ The MULTI® Integrated Development Environment
↑ TimeMachine Suite
Jonathan B. Rosenberg. How Debuggers Work. Algorithms, Data Structures, and Architecture. [S.l.]: John Wiley & Sons. ISBN 0-471-14966-7