Caramba cara que projeto legal! E muito util de fato. Como você desenvolveu isso qual foi processo linguagem e etc. Estou muito interessado para saber, eu sempre vejo a galera aqui desenvolvendo projetos assim e sempre fico curioso sobre o processo.
Muito top parabens pelo projeto e sucesso meu irmão! Se for possível falar sobre como aconteceu esse desenvolvimento e o que você usou vou agradecer dms.
Obrigado pelo comentário! Então, eu uso Windows com WSL e é uma dor utilizar o Xdebug nesse setup. Toda vez que preciso remontar o container, tenho que configurar tudo de novo. O Xdebug funciona muito bem quando está tudo na sua máquina local e estável, mas quando falamos de containers a história muda completamente.
Além disso, debugar algo não é apenas colocar breakpoints e ver valores de variáveis — ainda mais em 2026. Precisamos pensar fora da caixa e usar todas as ferramentas ao nosso alcance, como IA. Foi com essa mentalidade que desenvolvi o DDLess: primeiro para ajudar quem tem dificuldade com o Xdebug, e segundo para quem já conhece o processo de debug mas quer algo mais simples e poderoso, com ferramentas que vão além do breakpoint tradicional.
O processo de desenvolvimento foi cheio de pivôs. Comecei tentando resolver o debug usando o phpdbg como ponte de comunicação. Mas senti que estava colocando uma barreira no DDLess, porque a pessoa precisava ter o phpdbg instalado no PHP — algo que deveria vir compilado por padrão, mas nem sempre vem. Cada amigo que testava reclamava, cada teste feito eu sentia que o processo era doloroso demais. Foi um retrocesso.
Então pensei: vou usar regex com instrumentação de arquivos. Basicamente, eu copio os arquivos que vão ser debugados, insiro minhas funções globais nas linhas onde o breakpoint deve atuar, e pronto — funciona sem nenhuma dependência. Mas aí veio outro problema: regex é outra dor. O programador PHP escreve a sintaxe de diversas maneiras diferentes e não dá pra esperar que todo mundo siga a PSR. Cada edge case quebrava algo.
Então fui para outro nível: removi o regex e passei a usar AST parsing (nikic/PHP-Parser). Isso matou o problema de vez. Pode parecer um mini compilador, mas é o que garante que a instrumentação funciona independente de como o código foi escrito.
Eu utilizei electronJS, reactjs, php como base da comunicação com o projeto.
Fluxo de Debug:
- Dev seta breakpoint → Electron escreve breakpoints.json
- Dev envia request → Electron executa PHP com DDLESS_DEBUG_MODE=true
- PHP carrega debug.php → instrumenta código via AST
- PHP executa → atinge breakpoint → escreve breakpoint_state.json
- PHP fica em loop (polling breakpoint_command.json)
- Electron detecta breakpoint_state.json (polling 100ms)
- UI mostra variáveis, stack, waterfall
- Dev clica Continue → Electron escreve breakpoint_command.json
- PHP lê comando → retoma execução
Caramba cara muito top!! Muito sucesso pra você e seu projeto!!