Hai test appropriati (inclusi, ma non solo, test unitari) per il sistema? Sembra che tu non lo faccia, nel qual caso vorrei iniziare aggiungendo test sufficienti per assicurarti che l'applicazione si comporti come previsto (poiché non soddisfa i requisiti per il momento, se capisco bene la tua domanda).
Quindi lo scopo della documentazione è di introdurre il codice al nuovo sviluppatore che non sa nulla dell'architettura della base di codice esistente. Significa che la documentazione non è in realtà destinata a trovare dove si è verificato un problema.
Quando il codice si comporta in modo imprevisto, spesso inizi a leggere il codice, non la documentazione vera e propria, che può essere obsoleta o semplicemente totalmente sbagliata o fuorviante . In pratica, quando i sistemi che ho eseguito il debug avevano la documentazione, era obsoleto o sbagliato sempre (relativo al punto di debug). Nessuna eccezione. O la documentazione è stata scritta dai requisiti e l'errore è stato introdotto nel codice, senza riflettere la documentazione, o l'errore è stato la conseguenza di lievi modifiche a livello di codice, mentre la documentazione è rimasta la stessa.
Seguendo i commenti, vedo che ho leggermente frainteso la tua domanda, che è più su "Come ho capito il codebase esistente che non ha alcuna documentazione". Dipende. Nel mio caso, ad esempio, generare diagrammi di classe è qualcosa di prezioso. Questa è la prima cosa che faccio prima di iniziare a lavorare sul codice di qualcun altro, e talvolta l'unica cosa. Ma conosco anche persone che non si preoccupano di generare quei diagrammi, perché lo trovano del tutto inutile.