Не хочу, грубить, но иногда у такого бедняги бывает своих проблем полный рот. Вы его отвлекаете на минуту, а он потом полчаса назад в свою проблему вникает…
Вы наверно часто этим беднягой и являетесь, впрочем как и я)
Отношусь к подобному context switch, как разминке для ума, да и на чужой код полезно смотреть.
У меня в качестве такого бедняги 4 маленьких стеклянных ежика перед монитором. Пока всем 4ём расскажу — обязателньо находится баг. Отладка методом «резиновой уточки» :)
Рекомендую почитать Джоэла Спольски — у него очень хорошо написано о том, почему нельзя программистам работать одновременно над двумя задачами, и сколько стоит отвлечь другого программиста от работы, вместо того, чтобы поискать ответ самому :)
Существует — профильные сообщества в том же livejournal.com или тематические форумы.
Обычно там отвечают на вопросы, правда будет много «шума», но если фильтровать его — ответ можно найти.
А для необнаружимых багов рекомендую обратить внимание на следующие пункты:
1. Компьютер всегда работает так, как ему сказано. Если что-то глючит — значит ошибки в собственном коде. Осталось их найти.
2. Чтобы освежить голову надо отвлечься и отдохнуть — попить чай, поспать, полностью переключиться хотя бы на час. Многие проблемы решаются при свежем взгляде на проблему.
3. Есть такая книга «Как не надо программировать на С», рекомендую к прочтению.
Если код нельзя запостить в несколько строчек, то в этом «дерьме», извиняюсь, никто кроме Вас копаться не будет. Попробуйте локализовать ошибку до 5-10 строчек. В этой проблеме Вы сами все найдете. А также попробуйте Unit-тестирование и ТДД, зачастую этот способ позволяет избегать «мистических» багов.
Локализованная проблема, как правило, дает решение. Найти строчку я, допустим, нашел. Я не могу понять почему код работает не так, как я себе это представляю. В этом и заключается мистика.
В таком случаен ответ на ваш вопрос — репозитории кода вроде Google Code или GitHub. Но без своего сообщества разработчиков никто там ваш код просматривать конечно не будет :)
Баг я нашел. Достаточно дурацким он был. Какими, наверное, окажутся большинство багов после их нахождения. Все баги в голове у программиста (не считая сторонних библиотек).
А мне интересно что это за прога для универа, которая настолько большая, что её нельзя выложить? По своей памяти помню, что у нас в универе никогда не было очень больших проектов. Может вы просто не совсем представляете что значит действительно большой проект?
Обычно, чтобы исправить более-менее серьезную багу, надо знать структуру программы. На форуме этого так просто не объяснишь, или получится длинная колбаса кода, которую большинство будет просто игнорировать.
Bohr bug или Bohrbug (названы в честь боровской модели атома) — в отличии от Гейзенбагов никуда не исчезают и не мутируют по мере анализа причины рождения. Их просто-напросто невероятно тяжело найти и пофиксить на этапе использования. Скорее даже, они никогда не будут исправлены, но если перегрузить программу или компьютер, или отменить операцию и не подходить к компьютеру до тех пор, пока не сядет батарейка в БИОСе, то жук, наверняка, уберется восвояси… до следующей нескорой вылазки. Причина же возникновения Борбага кроется скорее во входе программы в невероятно редкие состояния.
Уважаемый georgthegreat, такого сервиса нет и, видимо, не будет. Публичный (видимо подразумевается бесплатный) дебаггинг — fail по определению. Если же Вам за деньги, то фрилансеры тут недалеко.
Частенько ловлю «мистические баги» в чужом коде. Обычно в таких случаях программист допустивший баг либо не до конца понимает как работает та или иная функция, либо он просто тупит. Я как бы намекаю что «мистических багов» как таковых не существует.
Как правильно здесь заметили про OpenSource я, например, в этих программах ковыряюсь только если мне мешает какой-нибудь баг этой программы или нехватает функционала.
Рад что свой баг Вы-таки нашли.
в си++ такие баги обычно вызваны проблемами с памятью которые могут проявиться а могут и не проявиться.
к примеру
bool b; в большистве случаев будет true но в одном из 255 будет false;
добавили в код новую переменную. Компилятор по-другому расположил данные, и тут ваша b становится false.
Борьба с багами