ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
5 декабря
110096
Evgeny_CD, Архитектор (13.01.2008 20:22, просмотров: 47820)
Изящная идея по отладке систем с малыми ресурсами Сделали мы некий аццкий девайс. Маленький, батареный. Например, какой-нибудь радиоканал. Ставим его на тестирование - например, неделю. Для полноты картины кам надо иметь некий отладочный механизм, который отлавливает внутренние сбои и ошибки в программе (тонкие, который не приводят к полному зависону). Pfintf не поможет: * куда принтфать будем? Памяти мало * его включение может сильно исказить временные характеристики кода Делаем так. В нужном месте программы ставим @@@_debug("в этом месте программа облажалась в модуле Х") В файле стоит inclide хидер, который макрос @@@_debug() "раскрывает" в пробелы. (дабы компиляции не мешало). Есть специально отведеная структура, в которой каждый бит - это факт "печати" такого сообщения. Есть некая утилита, например на Пытоне. Она сканирует все файлы проекта, находит такие мессаги, и сразу после макроса вставляет операцию по взведению бита в структуре. Т.е. все выглядит как include debug.h //тут живут раскрыватели макросов struct debug_struct debug_struct; @@@_debug("в этом месте программа облажалась в модуле Х") debug_struct.field111=1; // это сгенерировано программой на пытоне. Программа на пытоне также делает текстовую базу данных, какому биту какой матюк соотвествовал. Ставим наш двайс на тестирование. Считываем структуру. И смотрим, что же там случилось. (при помощи "ответной части" той же утилиты на пытоне). Метод можно модифицировать. Например, ввести счетчик ошибок для важных мест, даже мини-дамп важных переменных в отвественных местах. Емкость. 128 байт=1024 "матерные мессаги". Весьма информативно. Преимущества: * очень экономно по памяти * очень экономно по времени - "запись" мессаги - это 3 команды проца (считать, &&, записать) Кто что скажет по поводу?