Page 1 of 2

FDO (formatted debug output)

Posted: Fri Nov 10, 2006 7:08 am
by mike.dld
Вроде где-то уже писал, но найти не смог.

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

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

Примеры из краткой справки:

Code: Select all

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)

Posted: Sat Feb 17, 2007 6:22 pm
by mike.dld
Уж и не знаю, почему ответов не последовалою В любом случае, я исправил один небольшой баг, даже не буду упоминать, в чём он заключался. Ссылки те же.

Также, я опробовал возможность использования FDO в исходниках ядра. Получается очень удобно, *намного* удобнее существующего способа вывода отладочных сообщений. Плюс, используя FDO можно моментально включать/исключать отладочную информацию.
Итак, как внедрить FDO в ядро (ревизия 357):
1. kernel.asm.diff

Code: Select all

--- 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

Code: Select all

--- 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

Posted: Sun Feb 18, 2007 8:23 am
by Serge
mike.dld
Я не понял, ты уже подключил макросы в ядро или нет?

Posted: Sun Feb 18, 2007 4:20 pm
by mike.dld
Serge
Нет, оставил выбор за основными разработчиками :)

Posted: Sun Feb 18, 2007 5:05 pm
by Serge
mike.dld
Так добавь, ты же знаешь что надо сделать.

Posted: Sun Feb 18, 2007 11:22 pm
by mike.dld
Сказано - сделано

Re: FDO (formatted debug output)

Posted: Mon Apr 18, 2011 8:46 pm
by Gluk
прошу прощения, но ссылки устарели... где можно взять эти файлы (или аналоги)?

Re: FDO (formatted debug output)

Posted: Tue Apr 19, 2011 8:39 am
by Mario
SVN?

Re: FDO (formatted debug output)

Posted: Tue Apr 19, 2011 9:59 am
by Gluk
а можно ссылку, пожалуйста? у меня на телефоне нет копии репозитория

Re: FDO (formatted debug output)

Posted: Tue Apr 19, 2011 10:50 am
by Mario
Точную ссылку не дам, но относительная ссылка например programs/system/board/trunk/debug.inc
Хотя возможно это не последняя версия. У меня сейчас нету под рукой репозитория, смотрел через redmine.kolibrios.org

Re: FDO (formatted debug output)

Posted: Tue Apr 19, 2011 12:00 pm
by Serge
В исходниках ядра, fdo.inc

Re: FDO (formatted debug output)

Posted: Tue Apr 19, 2011 12:24 pm
by Mario
Я так понял, что Артему нужно то что работает на уровне приложений.

Re: FDO (formatted debug output)

Posted: Tue Apr 19, 2011 1:13 pm
by mike.dld
programs/network/zeroconf/trunk/debug-fdo.inc

Были ещё какие-то фиксы в транковой версии.

Re: FDO (formatted debug output)

Posted: Tue Apr 19, 2011 3:46 pm
by Gluk
большое спасибо!

Re: FDO (formatted debug output)

Posted: Fri Jun 14, 2013 9:40 am
by Mario_r4
Так и не понял из описания - может ли макрос выводить ASCII строки с завершающим нулем, например полный путь к файлу. В примерах только специально заранее заготовленные строки, ограниченные кавычками. Сам разобрать макрос не смог, уж больно он мудреный.

З.Ы. Эту информацию нужно перенести на wiki, а у меня нет полного доступа к wiki.