Список форумов meos.sysbin.com meos.sysbin.com
Портал моей оси!
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

FDO (formatted debug output)

 
Начать новую тему   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов meos.sysbin.com -> Кодинг
Предыдущая тема :: Следующая тема  
Автор Сообщение
mike.dld



Зарегистрирован: 08.08.2004
Сообщения: 417
Откуда: Belarus, Minsk

СообщениеДобавлено: Fri Nov 10, 2006 4:08 am    Заголовок сообщения: FDO (formatted debug output) Ответить с цитатой

Вроде где-то уже писал, но найти не смог.

FDO (formatted debug output) - набор макросов для повышения удобства отладки приложений. Работает подобно функции printf(), выводя на доску отладки форматированные сообщения.

Использовать обычно нужно только DEBUGF, хотя доступны также и DEBUGS, DEBUGD, DEBUGH.

Примеры из краткой справки:
Код:
Available format specifiers are: %s, %d, %u, %x (with partial width support)

To be defined within your sources:
  __DEBUG__ equ 1
  __DEBUG_LEVEL__ equ 5

Examples:
  DEBUGF 1, "%s - %d (%x)", eax, 123, ch
  DEBUGF 1, "%d.%d.%d.%d", [ip+0]:1, [ip+1]:1, [ip+2]:1, [ip+3]:1
  DEBUGF 1, <"function ", __FNAME__, ": %s - %x - %u">, "text here", [var]:5, [esp+16]

  DEBUGF 1, "[%d][%d][%d][%d][%d]\n", al, ax, ebx, [eax], [eax]:1
  DEBUGF 2, "[%u][%u][%u][%u][%u]\n", al, ax, ebx, [eax], [eax]:1
  DEBUGF 3, "[%x][%x][%x][%x][%x]\n", al, ax, ebx, [eax], [eax]:1
  DEBUGF 4, "[%s][%s][%s][%s][%s][%s][%s]\n", "string":4, eax, eax:5, [ebx]:5, eax:ecx, eax:[ecx], eax:byte[ecx]

Widths:
  for %s - any number, register, or in-memory variable
  for %d - 1, 2, 4 (only for in-memory arguments)
  for %u - 1, 2, 4 (only for in-memory arguments)
  for %x - 1 .. 8

Скачать: (7z|zip)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора MSN Messenger
mike.dld



Зарегистрирован: 08.08.2004
Сообщения: 417
Откуда: Belarus, Minsk

СообщениеДобавлено: Sat Feb 17, 2007 3:22 pm    Заголовок сообщения: Ответить с цитатой

Уж и не знаю, почему ответов не последовалою В любом случае, я исправил один небольшой баг, даже не буду упоминать, в чём он заключался. Ссылки те же.

Также, я опробовал возможность использования FDO в исходниках ядра. Получается очень удобно, *намного* удобнее существующего способа вывода отладочных сообщений. Плюс, используя FDO можно моментально включать/исключать отладочную информацию.
Итак, как внедрить FDO в ядро (ревизия 357):
1. kernel.asm.diff
Код:
--- kernel.asm   2007-02-17 17:09:42.802942200 +0200
+++ kernel.asm__   2007-02-17 17:12:42.818567200 +0200
@@ -167,6 +167,10 @@
 
 include 'unpacker.inc'
 
+__DEBUG__ fix 1
+__DEBUG_LEVEL__ fix 1
+include 'debug-fdo.inc'
+
 iglobal
   boot_memdetect    db   'Determining amount of memory',0
   boot_fonts        db   'Fonts loaded',0
@@ -5012,6 +5016,10 @@
   syslang    dd 0x1
 endg
 
+if __DEBUG__ eq 1
+  include_debug_strings
+end if
+
 IncludeIGlobals
 endofcode:
 IncludeUGlobals

2. debug-fdo.inc.diff
Код:
--- fdo\debug-fdo.inc   2007-02-17 16:50:42.818567200 +0200
+++ debug-fdo.inc   2007-02-17 17:21:44.271692200 +0200
@@ -228,24 +228,22 @@
 debug_func fdo_debug_outchar
 debug_beginf
         pushad
-        mov     cl,al
-        mov     ebx,1
-        mov     eax,63
-        int     0x40
+        movzx   ebx,al
+        mov     eax,1
+        call    sys_msg_board
         popad
         ret
 debug_endf
 
 debug_func fdo_debug_outstr
 debug_beginf
-        mov     eax,63
-        mov     ebx,1
+        mov     eax,1
   .l1:  dec     esi
         js      .l2
-        mov     cl,[edx]
-        or      cl,cl
+        movzx   ebx,byte[edx]
+        or      bl,bl
         jz      .l2
-        int     0x40
+        call    sys_msg_board
         inc     edx
         jmp     .l1
   .l2:  ret
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора MSN Messenger
Serge



Зарегистрирован: 08.03.2006
Сообщения: 1010

СообщениеДобавлено: Sun Feb 18, 2007 5:23 am    Заголовок сообщения: Ответить с цитатой

mike.dld
Я не понял, ты уже подключил макросы в ядро или нет?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
mike.dld



Зарегистрирован: 08.08.2004
Сообщения: 417
Откуда: Belarus, Minsk

СообщениеДобавлено: Sun Feb 18, 2007 1:20 pm    Заголовок сообщения: Ответить с цитатой

Serge
Нет, оставил выбор за основными разработчиками Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора MSN Messenger
Serge



Зарегистрирован: 08.03.2006
Сообщения: 1010

СообщениеДобавлено: Sun Feb 18, 2007 2:05 pm    Заголовок сообщения: Ответить с цитатой

mike.dld
Так добавь, ты же знаешь что надо сделать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
mike.dld



Зарегистрирован: 08.08.2004
Сообщения: 417
Откуда: Belarus, Minsk

СообщениеДобавлено: Sun Feb 18, 2007 8:22 pm    Заголовок сообщения: Ответить с цитатой

Сказано - сделано
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора MSN Messenger
Quick Reply
Показать сообщения:   
Начать новую тему   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов meos.sysbin.com -> Кодинг Часовой пояс: GMT
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by www.phpbb.com