Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Чт дек 13, 2018 4:41 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 14 сообщений ] 
Автор Сообщение
СообщениеДобавлено: Сб сен 14, 2013 10:23 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
SVN r. 3909 добавил вывод дампа для содержимого стека от ESP+0, до ESP+32.

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

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

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


Последний раз редактировалось Mario_r4 Сб сен 14, 2013 10:36 pm, всего редактировалось 2 раза.

Вернуться к началу
СообщениеДобавлено: Сб сен 14, 2013 10:28 pm 
Не в сети

Зарегистрирован: Пн июн 17, 2013 3:17 pm
Сообщения: 17
Безусловно полезно. Потестить еще не успел. Вопрос в том, как удобнее выводить - побайтно или поdwordно ?

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


Вернуться к началу
СообщениеДобавлено: Сб сен 14, 2013 10:35 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
UnКайF писал(а):
Вопрос в том, как удобнее выводить - побайтно или поdwordно ?

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

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


Вернуться к началу
СообщениеДобавлено: Пн сен 16, 2013 12:51 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3952
Mario_r4
Надо проверять esp на возможность доступа к памяти
код из page_fault_handler. ebx содержит проверяемый адрес
Код:
        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             ;страница не присутствует


Вернуться к началу
СообщениеДобавлено: Вт сен 17, 2013 1:02 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Serge писал(а):
Mario_r4
Надо проверять esp на возможность доступа к памяти
код из page_fault_handler. ebx содержит проверяемый адрес

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

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


Вернуться к началу
СообщениеДобавлено: Чт ноя 01, 2018 10:11 pm 
Не в сети

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

Полезно или нет?
Вложение:
stacktrace.png
stacktrace.png [ 4.98 КБ | 1568 просмотров ]


Вернуться к началу
СообщениеДобавлено: Чт ноя 01, 2018 10:23 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 417
b00bl1k писал(а):
Сделал вывод символьных имён, если в корне образа присутствует файл kernel.dbg. О создании файла написано в теме про mtdbg. Сейчас он в сжатом виде занимает почти 40 кб.

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

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

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

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

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

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


Вернуться к началу
СообщениеДобавлено: Чт ноя 01, 2018 10:35 pm 
Не в сети

Зарегистрирован: Вт июн 24, 2008 11:12 pm
Сообщения: 64
Имя выводится, если значение из стека в пределах OS_BASE..endofcode. Само имя из файла kernel.dbg.

Siemargl писал(а):
Только сегодня делал себе.

В ядре?


Вернуться к началу
СообщениеДобавлено: Чт ноя 01, 2018 11:36 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 417
b00bl1k писал(а):
Имя выводится, если значение из стека в пределах OS_BASE..endofcode. Само имя из файла kernel.dbg.

Siemargl писал(а):
Только сегодня делал себе.

В ядре?

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

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


Вернуться к началу
СообщениеДобавлено: Чт ноя 01, 2018 11:42 pm 
Не в сети

Зарегистрирован: Вт июн 24, 2008 11:12 pm
Сообщения: 64
Siemargl писал(а):
Стектрейс бы сделать на уровне ОС....


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


Вернуться к началу
СообщениеДобавлено: Чт ноя 01, 2018 11:53 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 417
b00bl1k писал(а):
Siemargl писал(а):
Стектрейс бы сделать на уровне ОС....


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

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

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


Вернуться к началу
СообщениеДобавлено: Пт ноя 02, 2018 10:01 am 
Не в сети

Зарегистрирован: Вт июн 24, 2008 11:12 pm
Сообщения: 64
Siemargl писал(а):
но зачем?


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


Вернуться к началу
СообщениеДобавлено: Пт ноя 02, 2018 11:00 am 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 417
b00bl1k писал(а):
Siemargl писал(а):
но зачем?


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


Вернуться к началу
СообщениеДобавлено: Пт ноя 02, 2018 11:24 am 
Не в сети

Зарегистрирован: Вт июн 24, 2008 11:12 pm
Сообщения: 64
b00bl1k писал(а):
Siemargl писал(а):
Стектрейс бы сделать на уровне ОС....


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

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


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 14 сообщений ] 

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB