Добавить отладочную информацию в os161
Я пытаюсь отладить os161, и у меня возникают проблемы из-за отсутствия отладочной информации. Ни одна из моих функций не имеет информации о номере строки, поэтому я могу сделать что-то вроде "b lock_acquire", но когда я делаю "s", он говорит: "Один шаг до выхода из функции lock_acquire, которая не имеет информации о номере строки". Я также получаю "Ошибка отсутствия номера строки", когда я пытаюсь выполнить "l lock_acquire", получаю "Нет блокировки символа в текущем контексте". когда я нахожусь в lock_acquire и набираю "p lock". Более того, когда я набираю pth curthread, вместо чего-то полезного появляется "переменная данных, отладочная информация не найдена". Я использовал инструкции по настройке здесь http://www.cdf.utoronto.ca/~csc369h/fall/docs/configure.shtml. Есть ли способ добавить больше информации отладки при компиляции os161?
Редактировать: Для запуска GDB я печатаю
% cd ~/os161/root
% sys161 -w kernel
в одном окне, а затем введите
% cd ~/os161/root
% cs161-gdb kernel
(gdb) target remote unix:.sockets/gdb
во втором окне.
1 ответ
Существует несколько способов отладки ядра. Один из способов - напрямую добавить отладочное сообщение в ядро. Например, добавьте макрос DEBUG в систему. (Lib.h)
...
DEBUG(DB_SYSCALL, "Entering into user mode\n");
...
Другой способ, которым вы могли бы использовать GDB, как вы только что сказали. Вместо использования 's' вы должны использовать 'n' и 'bt', чтобы проверить шаги. Не читая никаких ошибок, я не знаю, как предоставить больше информации. Надеюсь, это поможет.