Наши соотечественники в Microsoft
Apr 12, 2007 · CommentsMicrosoft Наши соотечественники в Microsoft - статья в PC Week.
По умолчанию служба “Problem reports and solutions” в Vista настроена так, что при аварийном завершении приложения у пользователя есть выбор из двух вариантов: посылать или не посылать отчет на сервер Microsoft. Это довольно логичный выбор в случае если за компьютером сидит “средний” пользователь, которого негоже пугать отладчиком. Однако отнимать у разработчика возможность загрузить любимый отладчик нехорошо. :-) Чтобы исправить ситуацию достаточно просто выключить Problem reporting.
Read On →Бывает так, что легче всего воспроизвести ту или иную проблему запустив код в «боевых» условиях. Попытки имитировать реальность в пробирке, т.е. на машине разработчика, требуют либо многочасовой установки и конфигурирования нужных компонент, либо написания кучи вспомогательного кода. В таком случае проще и быстрее инструментировать код (калька с английского «to instrument code») - добавить логику, которая будет обнаруживать ошибочное состояние и сообщать о найденной проблеме тем или иным образом.
Read On →В позапрошлую пятницу я поучаствовал в одном интересном обсуждении. В общих чертах, речь шла о том, как нужно и как не нужно проверять параметры функции. В частности же, были окончательно затоптаны и преданы анафеме бренные останки функций IsBadReadPtr и IsBadWritePtr.
Если вы читали «Should I check the parameters to my function?» в блоге Larry Osterman, и являетесь сторонником второго подхода – можете дальше не читать. :-)
Read On →Порой исправление даже самых очевидных ошибок может буксовать из-за особенностей человеческой психологии. Свежий пример: компонент A передаёт компоненту B набор параметров, в том числе текстовые строки. Строки передаются в виде UNICODE_STRING, т.е. как текстовые строки, не требующие завершающего нулевого символа. Не смотря на это, компонент A передавал строки с завершающим NULL (упакованные в UNICODE_STRING), а компонент B проверял приходящие строки на наличие нуля. Так они и работали, пока между ними не вклинился третий компонент X.
Read On →