debugmux : Эльфостроение : Форум

Страница 1 из 3: [1] 2 3 »

 den_po:
01.07.09, 09:15
 Эта хитрая мулька может помочь в отладке эльфов. Ну и не только эльфов =)
Запускаете логгер, подключаете телефон (хоть кабелем, хоть по bluetooth), прога определяет его, открываете print server channel. Откроется окно лога, куда будет сыпаться отладочный вывод. Параллельно логи будут сохраняться в текстовые файлы.
Ну а конкретно написанию эльфов прога может помочь, если в эльфе в нужных и не очень местах расставить вызов функции debug_printf.

Вот пример, который я публиковал на другом сайте. В нём кроме собственно вызова debug_printf используется простенький класс, использование которого позволяет контролировать вход (если объект создаётся в начале функции) и выход из функции. И ещё используются макросы, автоматически подсовывающие в вывод имена функций (можно и номера строк выводить, и дату, и вообще см. справку)
Код: 
#include "..\\include\Lib_Clara.h"
#include "..\\include\Dir.h"

class CDbgPrint
{
  char* fl;
  char* fn;
public:
  CDbgPrint(char* file,char* func){debug_printf("\nfunction enter: %s/%s\n",fl=file,fn=func);}
  ~CDbgPrint(){debug_printf("\nfunction leave: %s/%s\n",fl,fn);}
};
#ifdef NDEBUG
#define FUNCTION
#else
#define FUNCTION CDbgPrint __function((char*)__FILE__,(char*)__FUNCTION__);
#endif

u16 timer; // ID таймера
int lamp=0; // текущая яркость лампы
BOOK * HWBook;

int TerminateElf(void * ,BOOK* book)
{
  FUNCTION
  FreeBook(book);
  return(1);
}

typedef struct
{
  BOOK * book;
}MSG;

int ShowAuthorInfo(void *mess ,BOOK* book)
{
  FUNCTION
  MSG * msg = (MSG*)mess;
  MessageBox(0x6fFFFFFF,STR("Hello Wordl!\n\nExample elf.."),0, 1 ,5000,msg->book);
  return(1);
}

const PAGE_MSG HW_PageEvents[]@ "DYN_PAGE" ={
  ELF_TERMINATE_EVENT , TerminateElf,
  ELF_SHOW_INFO_EVENT  , ShowAuthorInfo,
  0,0
};

PAGE_DESC base_page ={"HW_BasePage",0,HW_PageEvents};


void elf_exit(void)
{
  kill_data(&ELF_BEGIN, (void(*)(void*))mfree_adr());
}



void onTimer (u16 unk , void * data)
{
  FUNCTION
  {
    // перезапускаем таймер
    Timer_ReSet(&timer,500,onTimer,0);
    // переключаем лампу
    SetLampLevel(lamp^=0x10);
  }
}

void onCloseHWBook(BOOK * book)
{
  FUNCTION
  if (book)
  {
    Timer_Kill(&timer);
    StatusIndication_ShowNotes(0x6FFFFFFF);
    SetLampLevel(0);
    SUBPROC(elf_exit);
  }
}

BOOK * CreateHWBook()
{
  FUNCTION
  HWBook= new BOOK;
  CreateBook(HWBook,onCloseHWBook,&base_page,"Example",-1,0);
  return(HWBook);
}




int main (void)
{
  FUNCTION
  CreateHWBook();
  // выводим текст в "заметки" на StandBy
  StatusIndication_ShowNotes(STR("Hello World!"));
  // запускаем таймер на 0.5 сек.
  timer=Timer_Set(500,onTimer,0);
  return(0);
}


Ну и собственно сам вывод:
показать: 


Да, и говорим спасибо Simri =)


Добавлено 1.7.09 09:35

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


Прикрепленный к сообщению файл:

LXA119318_R3H.ZIP LXA119318_R3H.ZIP (326.88 kb; 427 hits) Скачать файл

 Pavlus:
12.08.10, 20:09
 den_po, можно как-то заставить его читать лог с самого начала включения телефона? Или только после полного включения?

 Joker XT:
12.08.10, 20:23
 Pavlus, можно, сделай себе СЕРВИСНЫЙ КАБЕЛЬ!

 vadbga:
14.05.11, 16:32
 
4. В окне настроек следует поставить галочку напротив пункта Sony Ericsson Device USB WMC Data Modem

Где это я не вижу,как подключать телефон,в каком режиме?

[ Редактировано vadbga в 14.5.11 16:33 ]

Прикрепленный к сообщению файл:

Snimok.JPG Snimok.JPG (185.46 kb; 439 hits) Скачать файл

 toha257:
14.05.11, 16:42
 vadbga, в режиме "телефон". У меня он автоматически телефон определил

 vadbga:
14.05.11, 17:35
 toha257, режим телефон!
Ноль реакции,только комп 2 гудка произнёс и всё!

Прикрепленный к сообщению файл:

Snimok.JPG Snimok.JPG (361.06 kb; 399 hits) Скачать файл

 toha257:
14.05.11, 22:10
 vadbga, а драйвера (не прошивочные) стоят?

 vadbga:
15.05.11, 05:03
 toha257, The Gordons Gate driver
Какие ещё надо?

 mmcorp:
15.05.11, 13:21
 vadbga, нужны драйвера для обычного usb интерфейса (на диске с по должны быть, или скачай с оф. сайта се)

 IDOL1234:
31.10.11, 23:05
 Если я не ошибаюсь, эльф Save_CRD_Data сохраняет какой-то отчёт при крахе системы. Но я не понимаю его формат :-(

У меня есть 2 окна с заголовком "print server channel". Логи в них разные. В чём разница?

Можно ли "научить" программу отсеивать "лишние" сообщения?

[ Редактировано IDOL1234 в 31.10.11 22:09 ]
Страница 1 из 3: [1] 2 3 »

URL этой темы:
https://mobilefree.justdanpo.ru/newbb_plus/viewtopic.php?topic_id=4093

© 2005-2018 supertrubka.org