Мы используем все методы, о которых вы говорите, постепенно, начиная с самого простого и заканчивая более сложным.
Однако вы забываете, что иногда неисправна аппаратура. Например, память может работать со сбоями, и некоторый вычислительный код будет вести себя странно, вызывая исключения со странной диагностикой. Конечно, это работает на вашей машине, так как у вас нет неисправного оборудования.
Требуется опыт, чтобы выявлять такие ошибки и настаивать на том, чтобы клиент пытался установить программу на другой компьютер или проверял оборудование. Одна вещь, которая очень помогает, это хорошая обработка ошибок - когда ваш код генерирует исключение, он должен предоставлять подробности, а не просто указывать, что что-то плохое. С хорошим указанием ошибок легче идентифицировать такие подозрительные проблемы, связанные с неисправным оборудованием.