Archive for the ‘c++’ Category.

Рецепты отладки. Потеряный малок.

Эта история будет интересна в большей степени программистам под игровые консоли, хотя и тру-писишники, думаю, смогут подчерпнуть из нее несколько полезных советов.

Начиналась эта история с обычного, не предвещавшего ничего плохого, запуска игры на PS2. Однако после первого заезда и попытки перезагрузки уровня обнаружилось, что оперативная память кончилась. Так началась еще одна длительная история отладки приложения.

Continue reading ‘Рецепты отладки. Потеряный малок.’ »

Рецепты отладки. Четырехмесячный дебаг.

Еще один из случаев, произошедших достаточно давно, не может использоваться как иллюстрация того, как можно быстро и эффективно поймать ошибку, но, тем не менее, является хороший примером с далеко идущими последствиями. Речь идет о четырехмесячном и неудачном дебаггинге.

Continue reading ‘Рецепты отладки. Четырехмесячный дебаг.’ »

Рецепты отладки. Return в пустоту.

Сегодня речь пойдет про отладку некоторых проблемных событий, на которые я получаю частый ответ типа “а хз где сдохло, висим на нулевом адресе, stack frame нету, сделать ничего не могу”.
Continue reading ‘Рецепты отладки. Return в пустоту.’ »

E.T. as in SDET

Третьего дня занимался понятным нечастым кодом.
Занятие оказалось неожиданно показательным.
Хорошо показывает, чем SD отличается от SDET, и почему последних особенно мало.
Консилиум решил, что пример годен для наружного употребления.
Continue reading ‘E.T. as in SDET’ »

ООП: А мой identity – больше твоего.

Наткнулся на незабавный класс багов. Использование указателей объектов как ключей в хеш-таблице/бинарном дереве поиска.
Адреса которые выдаёт менеджер памяти – зависят от всего, включая на каком компьютере запускаем, от порядка предыдущих выделений/освобождений памяти, в многопоточной программе – от того что делают другие потоки и шедулера OS.
Соответственно, порядок объектов при итерации по таблице – тоже от всего этого зависит.
Continue reading ‘ООП: А мой identity – больше твоего.’ »

Best tools noone uses: autoexp.dat

Не прошло и полугода, как родилось продолжение к пилотной серии про underdog tools. Очередной отличный инструмент, которым регулярно не пользуются, это autoexp.dat.

Continue reading ‘Best tools noone uses: autoexp.dat’ »

Говнокод как вид саботажа

Еще один из занятных блогов на любимом DTF был посвящен болезни, как виду саботажа. Блог был интересный, срач в каментах – тоже отменный. Впрочем, разговор не про это. Можно тихо ненавидеть/завидовать человеку, который весело отметил воскресенье и по этому поводу задержался на час, а можно заняться более серьезной оптимизацией рабочего процесса. Как показывает практика, в отечественной компании из 5 программистов потери на отладке могут достигать 5 человеко/дней (это именно потери, а не общее время, затраченное на debugging).

Итак – вот сидят 5 программистов, над которыми находится лид с кнутом и пряником. Что-то кодают, отлаживают, программа семимильными (или не очень) шагами продвигается к заветному майлстоуну. О чем здесь надо думать лиду?

Continue reading ‘Говнокод как вид саботажа’ »

Theora глазами имплементирующего.

Пришло время имплементировать видеокодек в движок. Выбрали Theora/Vorbis/Ogg как бесплатную со всех сторон. Расскажу о процессе….

Continue reading ‘Theora глазами имплементирующего.’ »

Best tools no one uses: gperf

В природе есть масса отличных инструментов, которые мало кто использует. Очередной раз применив в бою один из таких, решил начать про них рассказывать. Сегодня на повестке программа с обманчивым именем gperf – GNU is not Unix, and gperf is not a performance profiler.

Continue reading ‘Best tools no one uses: gperf’ »

Coffee break

«Ctrl-Alt-F7» и курящие закурили, а некурящие пошли выпить чашечку йаду.

Когда-то мой rule of tumb был такой: “если оно компилится+линкуется больше 5 минут с нуля или больше 30 секунд от изменений, то надо что-то менять”. Иначе можно и сандали откинуть – табак убивает, а кофе вредный.

Continue reading ‘Coffee break’ »