Добавить отладочную информацию в 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', чтобы проверить шаги. Не читая никаких ошибок, я не знаю, как предоставить больше информации. Надеюсь, это поможет.

Другие вопросы по тегам