Board.KolibriOS.org

Official KolibriOS board
It is currently Sat Jul 20, 2019 3:14 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 14 posts ] 
Author Message
PostPosted: Sat Sep 14, 2013 10:23 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
SVN r. 3909 добавил вывод дампа для содержимого стека от ESP+0, до ESP+32.

Бывает полезно, например, можно вычислить кто вызвал текущую процедуру, в которой произошла ошибка. Да, и вообще полезно знать не только адрес стека, а и его содержимое.

Я не уверен на все 100% в корректности работы - всегда возможны накладки, так что если у кого будут возражения/дополнения готов выслушать и внести изменения при необходимости.

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


Last edited by Mario_r4 on Sat Sep 14, 2013 10:36 pm, edited 2 times in total.

Top
   
PostPosted: Sat Sep 14, 2013 10:28 pm 
Offline

Joined: Mon Jun 17, 2013 3:17 pm
Posts: 17
Безусловно полезно. Потестить еще не успел. Вопрос в том, как удобнее выводить - побайтно или поdwordно ?

_________________
UnКайF - это некоторое число такого же размера, как указатель. Что оно означает, знает только ядро. Драйвер может только передавать его ядру, когда хочет что-нибудь сделать. (c) CleverMouse


Top
   
PostPosted: Sat Sep 14, 2013 10:35 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
UnКайF wrote:
Вопрос в том, как удобнее выводить - побайтно или поdwordно ?

В стек заносится dword. Других размерностей не предусмотрено, потому и вывод сделал так же.

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


Top
   
PostPosted: Mon Sep 16, 2013 12:51 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Mario_r4
Надо проверять esp на возможность доступа к памяти
код из page_fault_handler. ebx содержит проверяемый адрес
Code:
        shr     ebx, 12
        mov     ecx, ebx
        shr     ecx, 10
        mov     edx, [master_tab+ecx*4]
        test    edx, PG_MAP
        jz      .fail             ;таблица страниц не создана
                                  ;неверный адрес в программе

        mov     eax, [page_tabs+ebx*4]
        test    eax, PG_MAP
        jz      .fail             ;страница не присутствует


Top
   
PostPosted: Tue Sep 17, 2013 1:02 am 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Serge wrote:
Mario_r4
Надо проверять esp на возможность доступа к памяти
код из page_fault_handler. ebx содержит проверяемый адрес

Спасибо за подсказку - добавил проверку в ревизии 3911.

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


Top
   
PostPosted: Thu Nov 01, 2018 10:11 pm 
Offline

Joined: Tue Jun 24, 2008 11:12 pm
Posts: 64
Сделал вывод символьных имён, если в корне образа присутствует файл kernel.dbg. О создании файла написано в теме про mtdbg. Сейчас он в сжатом виде занимает почти 40 кб.

Полезно или нет?
Attachment:
stacktrace.png
stacktrace.png [ 4.98 KiB | Viewed 2990 times ]


Top
   
PostPosted: Thu Nov 01, 2018 10:23 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
b00bl1k wrote:
Сделал вывод символьных имён, если в корне образа присутствует файл kernel.dbg. О создании файла написано в теме про mtdbg. Сейчас он в сжатом виде занимает почти 40 кб.

Полезно или нет?
stacktrace.png

Только сегодня делал себе.

В стеке хранится адрес возврата из функции...+5 от точки вызова.

Адрес вызываемой и точку вызова надо вычислять.

Что за имя выводится?

Стектрейс бы сделать на уровне ОС....


Top
   
PostPosted: Thu Nov 01, 2018 10:35 pm 
Offline

Joined: Tue Jun 24, 2008 11:12 pm
Posts: 64
Имя выводится, если значение из стека в пределах OS_BASE..endofcode. Само имя из файла kernel.dbg.

Siemargl wrote:
Только сегодня делал себе.

В ядре?


Top
   
PostPosted: Thu Nov 01, 2018 11:36 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
b00bl1k wrote:
Имя выводится, если значение из стека в пределах OS_BASE..endofcode. Само имя из файла kernel.dbg.

Siemargl wrote:
Только сегодня делал себе.

В ядре?

зачем мне ядро?

мне бы компилятор допилить...в либе


Top
   
PostPosted: Thu Nov 01, 2018 11:42 pm 
Offline

Joined: Tue Jun 24, 2008 11:12 pm
Posts: 64
Siemargl wrote:
Стектрейс бы сделать на уровне ОС....


Переход на PE формат исполняемых файлов позволил бы хранить отладочную информацию.


Top
   
PostPosted: Thu Nov 01, 2018 11:53 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
b00bl1k wrote:
Siemargl wrote:
Стектрейс бы сделать на уровне ОС....


Переход на PE формат исполняемых файлов позволил бы хранить отладочную информацию.

рядом с файлом кладем .dbg файл и всё

переход на PE... но зачем ? win уже есть
аналогично с ELF


Top
   
PostPosted: Fri Nov 02, 2018 10:01 am 
Offline

Joined: Tue Jun 24, 2008 11:12 pm
Posts: 64
Siemargl wrote:
но зачем?


Причины уже озвучивались ранее. А в контексте этой темы - возможность сохранения отладочной информации в исполняемый файл самим компилятором без изобретения колёс и велосипедов.


Top
   
PostPosted: Fri Nov 02, 2018 11:00 am 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
b00bl1k wrote:
Siemargl wrote:
но зачем?


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


Top
   
PostPosted: Fri Nov 02, 2018 11:24 am 
Offline

Joined: Tue Jun 24, 2008 11:12 pm
Posts: 64
b00bl1k wrote:
Siemargl wrote:
Стектрейс бы сделать на уровне ОС....


Переход на PE формат исполняемых файлов позволил бы хранить отладочную информацию.

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 14 posts ] 

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 guests


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:  
Powered by phpBB® Forum Software © phpBB Limited