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

Internal structure and you change requests/suggestions
  • Безусловно полезно. Потестить еще не успел. Вопрос в том, как удобнее выводить - побайтно или поdwordно ?
    UnКайF - это некоторое число такого же размера, как указатель. Что оно означает, знает только ядро. Драйвер может только передавать его ядру, когда хочет что-нибудь сделать. (c) CleverMouse
  • UnКайF wrote:Вопрос в том, как удобнее выводить - побайтно или поdwordно ?
    В стек заносится dword. Других размерностей не предусмотрено, потому и вывод сделал так же.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • 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             ;страница не присутствует
    
  • Serge wrote:Mario_r4
    Надо проверять esp на возможность доступа к памяти
    код из page_fault_handler. ebx содержит проверяемый адрес
    Спасибо за подсказку - добавил проверку в ревизии 3911.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • Сделал вывод символьных имён, если в корне образа присутствует файл kernel.dbg. О создании файла написано в теме про mtdbg. Сейчас он в сжатом виде занимает почти 40 кб.

    Полезно или нет?
    stacktrace.png
    stacktrace.png (4.98 KiB)
    Viewed 13527 times
  • b00bl1k wrote:Сделал вывод символьных имён, если в корне образа присутствует файл kernel.dbg. О создании файла написано в теме про mtdbg. Сейчас он в сжатом виде занимает почти 40 кб.

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

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

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

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

    Стектрейс бы сделать на уровне ОС....
  • Имя выводится, если значение из стека в пределах OS_BASE..endofcode. Само имя из файла kernel.dbg.
    Siemargl wrote:Только сегодня делал себе.
    В ядре?
  • b00bl1k wrote:Имя выводится, если значение из стека в пределах OS_BASE..endofcode. Само имя из файла kernel.dbg.
    Siemargl wrote:Только сегодня делал себе.
    В ядре?
    зачем мне ядро?

    мне бы компилятор допилить...в либе
  • Siemargl wrote:Стектрейс бы сделать на уровне ОС....
    Переход на PE формат исполняемых файлов позволил бы хранить отладочную информацию.
  • b00bl1k wrote:
    Siemargl wrote:Стектрейс бы сделать на уровне ОС....
    Переход на PE формат исполняемых файлов позволил бы хранить отладочную информацию.
    рядом с файлом кладем .dbg файл и всё

    переход на PE... но зачем ? win уже есть
    аналогично с ELF
  • Siemargl wrote:но зачем?
    Причины уже озвучивались ранее. А в контексте этой темы - возможность сохранения отладочной информации в исполняемый файл самим компилятором без изобретения колёс и велосипедов.
  • b00bl1k wrote:
    Siemargl wrote:но зачем?
    Причины уже озвучивались ранее. А в контексте этой темы - возможность сохранения отладочной информации в исполняемый файл самим компилятором без изобретения колёс и велосипедов.
    только у каждого компилятора свой формат...
  • b00bl1k wrote:
    Siemargl wrote:Стектрейс бы сделать на уровне ОС....
    Переход на PE формат исполняемых файлов позволил бы хранить отладочную информацию.
    Возможно ошибаюсь, но стектрейс для уровня пользователя можно было бы сделать в kolibri.dll с помощью установки обработчика исключений.
  • Who is online

    Users browsing this forum: No registered users and 7 guests