Gdb 将调试信息添加到os161

Gdb 将调试信息添加到os161,gdb,os161,Gdb,Os161,我正在尝试调试os161,由于缺少调试信息而遇到问题。我的函数都没有行号信息,所以我可以执行类似于b lock_acquire的操作,但当我执行s时,它会显示单步执行,直到退出函数lock_acquire, 它没有行号信息。当我尝试执行l lock_acquire时,我还得到一个未知行号错误,在当前上下文中没有符号锁。当我处于锁定状态时,获取并键入p lock。此外,当我键入ptypeCurthread时,它会显示数据变量,没有找到调试信息,而是一些有用的信息。我使用了这里的配置说明。在编译os

我正在尝试调试os161,由于缺少调试信息而遇到问题。我的函数都没有行号信息,所以我可以执行类似于b lock_acquire的操作,但当我执行s时,它会显示单步执行,直到退出函数lock_acquire, 它没有行号信息。当我尝试执行l lock_acquire时,我还得到一个未知行号错误,在当前上下文中没有符号锁。当我处于锁定状态时,获取并键入p lock。此外,当我键入ptypeCurthread时,它会显示数据变量,没有找到调试信息,而是一些有用的信息。我使用了这里的配置说明。在编译os161时,是否有方法添加更多调试信息

编辑: 要启动gdb,请键入

% cd ~/os161/root
% sys161 -w kernel
在一个窗口中,然后键入

% cd ~/os161/root
% cs161-gdb kernel
(gdb) target remote unix:.sockets/gdb

在第二个窗口中。

调试内核的方法很少,一种方法是直接向内核添加调试消息。例如 在系统中添加调试宏。lib.h

...
DEBUG(DB_SYSCALL, "Entering into user mode\n");
...
你可以用另一种方式使用GDB,就像你刚才说的。您应该使用“n”和“bt”来检查步骤,而不是使用“s”。没有阅读任何错误,我不知道如何提供更多信息。我希望这有帮助