Board.KolibriOS.org

Official KolibriOS board
It is currently Sat Jan 18, 2020 1:17 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 17 posts ]  Go to page 1 2 Next
Author Message
PostPosted: Fri Nov 10, 2006 7:08 am 
Offline
Site Founder
User avatar

Joined: Sun Aug 08, 2004 8:55 am
Posts: 689
Вроде где-то уже писал, но найти не смог.

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

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

Примеры из краткой справки:
Code:
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)

_________________
in code we trust


Top
   
 Post subject:
PostPosted: Sat Feb 17, 2007 6:22 pm 
Offline
Site Founder
User avatar

Joined: Sun Aug 08, 2004 8:55 am
Posts: 689
Уж и не знаю, почему ответов не последовалою В любом случае, я исправил один небольшой баг, даже не буду упоминать, в чём он заключался. Ссылки те же.

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

_________________
in code we trust


Top
   
 Post subject:
PostPosted: Sun Feb 18, 2007 8:23 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
mike.dld
Я не понял, ты уже подключил макросы в ядро или нет?


Top
   
 Post subject:
PostPosted: Sun Feb 18, 2007 4:20 pm 
Offline
Site Founder
User avatar

Joined: Sun Aug 08, 2004 8:55 am
Posts: 689
Serge
Нет, оставил выбор за основными разработчиками :)


Top
   
 Post subject:
PostPosted: Sun Feb 18, 2007 5:05 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
mike.dld
Так добавь, ты же знаешь что надо сделать.


Top
   
 Post subject:
PostPosted: Sun Feb 18, 2007 11:22 pm 
Offline
Site Founder
User avatar

Joined: Sun Aug 08, 2004 8:55 am
Posts: 689
Сказано - сделано


Top
   
PostPosted: Mon Apr 18, 2011 8:46 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
прошу прощения, но ссылки устарели... где можно взять эти файлы (или аналоги)?

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Tue Apr 19, 2011 8:39 am 
SVN?


Top
   
PostPosted: Tue Apr 19, 2011 9:59 am 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
а можно ссылку, пожалуйста? у меня на телефоне нет копии репозитория

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


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


Top
   
PostPosted: Tue Apr 19, 2011 12:00 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
В исходниках ядра, fdo.inc


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


Top
   
PostPosted: Tue Apr 19, 2011 1:13 pm 
Offline
Site Founder
User avatar

Joined: Sun Aug 08, 2004 8:55 am
Posts: 689
programs/network/zeroconf/trunk/debug-fdo.inc

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

_________________
in code we trust


Top
   
PostPosted: Tue Apr 19, 2011 3:46 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
большое спасибо!

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Fri Jun 14, 2013 9:40 am 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Так и не понял из описания - может ли макрос выводить ASCII строки с завершающим нулем, например полный путь к файлу. В примерах только специально заранее заготовленные строки, ограниченные кавычками. Сам разобрать макрос не смог, уж больно он мудреный.

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

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 17 posts ]  Go to page 1 2 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited