Normalmente, não uso um depurador, talvez uma vez a cada duas semanas, mas não é a primeira coisa que vou.
A ferramenta mais importante no meu trabalho é tão onipresente que quase me esqueci de mencioná-la - empilhar rastreamentos. Mais de 90% dos problemas que encontro podem ser resolvidos examinando um rastreamento de pilha. Essa ferramenta nem sempre é muito útil, dependendo do seu idioma, mas quando eles são implementados bem por um idioma, você pode economizar uma quantidade incrível de tempo.
Acho que a segunda maneira mais comum de detectar problemas simples é que provavelmente é o código que acabei de alterar. Eu executo testes de unidade com frequência, então geralmente sei o que acabei de quebrar.
Para desenvolvimento e depuração mais complexos, posso adicionar algumas instruções de log no nível de depuração ou rastreamento. Considero os problemas de desenvolvimento um bom guia para me ajudar a colocar informações de log de rastreamento / depuração da produção, o que me leva a:
Você nem sempre tem um depurador à mão. Na produção, pode ser impossível executar um depurador (Heck, pode ser impossível acessar as máquinas de produção, exceto os logs, dependendo da segurança da sua empresa). Também existem idiomas nos quais conectar um depurador leva muito tempo ou talvez não haja bons depuradores disponíveis.
Se você estiver codificando o tempo todo usando o log de nível de lógica e depuração / rastreamento, pode ser simplesmente o caso de examinar suas excelentes instruções de log (possivelmente aumentando o nível de log) para descobrir o problema sem acessar o hardware.
Embora eu ache que os depuradores são uma ferramenta poderosa, não permita que eles sejam a única ferramenta na sua caixa de ferramentas!