Кстати, об assert-ах... (+)
(«Телесистемы»: Конференция 'Микроконтроллеры и их применение')

миниатюрный аудио-видеорекордер mAVR

Отправлено ReAl 09 июня 2004 г. 19:11
В ответ на: про всякие assert макросы очень хорошо расписано у Роббинса в книге "Отладка приложений" отправлено bialix 09 июня 2004 г. 17:10

Люблю я это дело.
Причём с выдачей хоть немного осмысленной диагностики, а не просто светодиодом помигать. Поскольку на 7-сегментный светодиодный индикатор не сильно напечатаешь *имя* файла, это делаю так:

utils.h


/* создаём такой енумчик - по номеру на каждый файл */
enum { MAIN_C = 1, UTIL_C, FMEM_C, METER_C, CONFIG_C, MODEMIO_C };

#define CURFILE 0 /* 0 на случай, если забудется задать */

#ifdef USE_ASSERT
#define assert(p) { if( !(p) ) AssertHalt( CURFILE, __LINE__ ); }
void AssertHalt(u8 fil, u16 line);
#else
#define assert(p)
#endif


AssertHalt рисует на 7-сегментном индикаторе буквочки AF, выводит
fil и line как числа и делает Halt(), который, в свою очередь, гасит всё, что можно и крутится в бесконечном цикле.

Ну и в каком-нибудь config.c


#undef CURFILE
#define CURFILE CONFIG_C

...
assert(paramnum <= CONFIG_MAX_PAR);
...



Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru