вторник, 16 августа 2011 г.

Боевой отладочный косинус

Операции с использованием размера буфера (копирование, перемещение, и т.п.) традиционно являются больным местом всех и всея и занимают почетные первый места в рейтинге самых распространённых багов 1, 2. Ну и мы как все. Редкий код взлетает без отладки подобных вещей.

Как-то исторически так сложилось, и возможно в связи со спецификой решаемых задач, что наилучшим и наиболее быстрым (а иногда и единственным) способом отладки является заполнение буфера непрерывным гармоническим сигналом, в простонародье косинусом (некоторые говорят, что значения синуса подходят куда более лучше, но мы-то же знаем кто на самом деле прав).

Дальнейшие действия думаю понятны. Исследуемый код дополняется правильной инициализацией буферов, потом следуют обычные манипуляции, отладка которых и есть наша цель, ну по их завершению или в любой произвольно выбранной контрольной точке содержимое буфера скидывается в файл и анализируется (например глазами в Origin).

Пример весьма запущенного случая

Ну и как резюме сказанного кратко плюсы метода:
  • в буфере находится некие осмысленные данные, а не не инициализированный мусор или нули;
  • ошибки обрыва, наложения буферов хорошо видны при анализе в Origin;
  • возможна автоматизация поиска редких ошибок. Вычисляя значение производной возможно по резкому скачку определить место разрыва.

Из минусов можно отметить только прижившийся для этих целей Origin, еще то глюкало, которое ни как не хватает времени заменить самописным кодом на Python, например.

Update: Частично Origin можно заменить Kst.

Комментариев нет: