Era uma vez eu costumava usar muito código de depuração. Eu estava quase totalmente mirando no Windows, então havia uma grande quantidade dessa função de saída da string de depuração que não me lembro mais como escrever, para que eu pudesse capturar o rastreamento com um programa específico.
Algum código de depuração permaneceu no lugar, coisas específicas destinadas a dar o aninhamento de chamadas. No entanto, mesmo que a coisa da string de depuração não seja visível em um sistema de produção, tudo foi feito sob compilação condicional.
A realidade é, no entanto, que todo esse código de depuração foi um grande esforço para algo idealmente tratado de uma maneira diferente - usando, é claro, um depurador. Na época, eu não estava tão impressionado com o depurador Borland C ++. As ferramentas estavam lá, mas muitas vezes deram resultados enganosos, e o uso do depurador não IDE (geralmente necessário) significava memorizar as teclas de atalho, o que significava uma distração do trabalho em questão.
A única experiência de depuração que achei pior é o GDB da linha de comando.
Ser um especialista nas ferramentas que você usa todos os dias é, obviamente, importante - mas a depuração não deve ser algo que você faz todos os dias. Se você usa o depurador com tanta frequência, não há problema em aprender dezenas de comandos e / ou atalhos de teclado, isso me parece um sinal de alerta.
No momento em que eu estava trabalhando no Visual Studio 7, estava claro que a depuração poderia ser muito prática e eficaz. Se você pode fazer sua depuração no Visual Studio (edições expressas incluídas), a depuração é fácil. Sem dúvida, se você pode encontrar o front end GUI / IDE correto, o GDB também é fácil e eficaz, embora ainda não tenha feito essa pesquisa.
Há também algo a ser dito para o teste de unidade, com a análise de cobertura usando o gcov. Quanto mais confiante você estiver no comportamento de suas bibliotecas, menor será a profundidade de depuração - e menos frequentemente você precisará do depurador em primeiro lugar. E escrever testes de unidade é razoavelmente algo que você deve fazer na maioria dos dias.
Ferramenta inesperadamente importante = cmake, uma ferramenta de construção que me permite alternar facilmente entre criar para o GCC e para VC ++, entre outras coisas. Para que eu possa fazer meus testes de unidade e cobertura baseada em gcov usando o GCC, mas mude facilmente para o VC ++ para usar o depurador.