Допустим есть приложение и в нем есть баги (если нет то будут).
Мы его оттестируем, прогоним всякими унит тестами и прочими, натравим толпу тестеров, год будем вылизывать и зальем на продакшен (допустим это сервер)
и допустим раз в два месяца будем иметь злую но невоспроизводимую ошибку (да на практике сервер просто ребутнут и сделают вид шо так и було)
теперь вопрос: как на этапе проектирования архитектуры предусмотреть механизмы улова таких ошибок(языки и софт любой, нужны примеры)
в моей практике в десктопный софт мы просто встроили js-коносоль (java), а чужой глючносервер пришлось в продакшене месяц держать под отладчиком чтобы в момент глюка подцепиться и посмотреть (да помоголо, но это не дело)
ps.навеяно личным опытом, кучей страшных историй и этим постом (хотя тут воспроизводимость 100%, но этож везение)