Смывайте за собой
Пришлось в студенческую бытность поработать аутсорсером. Работали совместно с парой приятелей; в итоге оттуда я ушёл на хорошо оплачиваемую работу, а вот приятели остались работать в той же сфере.
Как-то разбудил меня звонок часа в два ночи: мол, спасай. Хорошо, идти недалеко: захватил банку кофе, пару пива и отправился. Прихожу, вижу трёх человек в состоянии, близком к неадекватности: красные глаза и так далее. Три дня до дедлайна — понимаю. Писалось всё в спешке, потому часть кода была позаимствована на просторах паутины. Проблему описали быстро:
— Смотри: вот сокет.
— Угу.
— Вот этот отправляет, вот этот принимает.
— Угу.
— А теперь компилим. Запускаем — ошибка.
— И?
— Cтавим брейк, пошагово выполняем — работает.
Разбирались до утра. Курили матчасть, MSDN зачитали до дыр. Вроде всё правильно, но при выполнении программы неизменный error. Пошагово — как по маслу.
Ошибка нашлась, когда психическое здоровье было под угрозой. Буфер не передавал данные, пока не заполнялся полностью; чтобы передать неполный, нужно было вызвать метод flush(). При дебаге же по истечении определённого времени его вызов шёл автоматом.
Любая мистика при тщательном разборе мистикой быть перестаёт. Простите уж, верующие в духов в машине.