Page 1 of 1

Вывод отладочных сообщений (page fault и другие)

Posted: Sat Sep 14, 2013 10:23 pm
by Mario_r4
SVN r. 3909 добавил вывод дампа для содержимого стека от ESP+0, до ESP+32.

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

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

Re: Вывод отладочных сообщений (page fault и другие)

Posted: Sat Sep 14, 2013 10:28 pm
by UnКайF
Безусловно полезно. Потестить еще не успел. Вопрос в том, как удобнее выводить - побайтно или поdwordно ?

Re: Вывод отладочных сообщений (page fault и другие)

Posted: Sat Sep 14, 2013 10:35 pm
by Mario_r4
UnКайF wrote:Вопрос в том, как удобнее выводить - побайтно или поdwordно ?
В стек заносится dword. Других размерностей не предусмотрено, потому и вывод сделал так же.

Re: Вывод отладочных сообщений (page fault и другие)

Posted: Mon Sep 16, 2013 12:51 pm
by Serge
Mario_r4
Надо проверять esp на возможность доступа к памяти
код из page_fault_handler. ebx содержит проверяемый адрес

Code: Select all

        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             ;страница не присутствует

Re: Вывод отладочных сообщений (page fault и другие)

Posted: Tue Sep 17, 2013 1:02 am
by Mario_r4
Serge wrote:Mario_r4
Надо проверять esp на возможность доступа к памяти
код из page_fault_handler. ebx содержит проверяемый адрес
Спасибо за подсказку - добавил проверку в ревизии 3911.

Re: Вывод отладочных сообщений (page fault и другие)

Posted: Thu Nov 01, 2018 10:11 pm
by b00bl1k
Сделал вывод символьных имён, если в корне образа присутствует файл kernel.dbg. О создании файла написано в теме про mtdbg. Сейчас он в сжатом виде занимает почти 40 кб.

Полезно или нет?
stacktrace.png
stacktrace.png (4.98 KiB)
Viewed 13532 times

Re: Вывод отладочных сообщений (page fault и другие)

Posted: Thu Nov 01, 2018 10:23 pm
by Siemargl
b00bl1k wrote:Сделал вывод символьных имён, если в корне образа присутствует файл kernel.dbg. О создании файла написано в теме про mtdbg. Сейчас он в сжатом виде занимает почти 40 кб.

Полезно или нет?
stacktrace.png
Только сегодня делал себе.

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

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

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

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

Re: Вывод отладочных сообщений (page fault и другие)

Posted: Thu Nov 01, 2018 10:35 pm
by b00bl1k
Имя выводится, если значение из стека в пределах OS_BASE..endofcode. Само имя из файла kernel.dbg.
Siemargl wrote:Только сегодня делал себе.
В ядре?

Re: Вывод отладочных сообщений (page fault и другие)

Posted: Thu Nov 01, 2018 11:36 pm
by Siemargl
b00bl1k wrote:Имя выводится, если значение из стека в пределах OS_BASE..endofcode. Само имя из файла kernel.dbg.
Siemargl wrote:Только сегодня делал себе.
В ядре?
зачем мне ядро?

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

Re: Вывод отладочных сообщений (page fault и другие)

Posted: Thu Nov 01, 2018 11:42 pm
by b00bl1k
Siemargl wrote:Стектрейс бы сделать на уровне ОС....
Переход на PE формат исполняемых файлов позволил бы хранить отладочную информацию.

Re: Вывод отладочных сообщений (page fault и другие)

Posted: Thu Nov 01, 2018 11:53 pm
by Siemargl
b00bl1k wrote:
Siemargl wrote:Стектрейс бы сделать на уровне ОС....
Переход на PE формат исполняемых файлов позволил бы хранить отладочную информацию.
рядом с файлом кладем .dbg файл и всё

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

Re: Вывод отладочных сообщений (page fault и другие)

Posted: Fri Nov 02, 2018 10:01 am
by b00bl1k
Siemargl wrote:но зачем?
Причины уже озвучивались ранее. А в контексте этой темы - возможность сохранения отладочной информации в исполняемый файл самим компилятором без изобретения колёс и велосипедов.

Re: Вывод отладочных сообщений (page fault и другие)

Posted: Fri Nov 02, 2018 11:00 am
by Siemargl
b00bl1k wrote:
Siemargl wrote:но зачем?
Причины уже озвучивались ранее. А в контексте этой темы - возможность сохранения отладочной информации в исполняемый файл самим компилятором без изобретения колёс и велосипедов.
только у каждого компилятора свой формат...

Re: Вывод отладочных сообщений (page fault и другие)

Posted: Fri Nov 02, 2018 11:24 am
by b00bl1k
b00bl1k wrote:
Siemargl wrote:Стектрейс бы сделать на уровне ОС....
Переход на PE формат исполняемых файлов позволил бы хранить отладочную информацию.
Возможно ошибаюсь, но стектрейс для уровня пользователя можно было бы сделать в kolibri.dll с помощью установки обработчика исключений.