我正在尝试调试os161,但由于缺少调试信息而遇到了问题。我的函数都没有行号信息,所以我可以执行类似"b lock_acquire“的操作,但当我执行"s”时,它会显示“单步执行,直到退出lock_acquire函数,它没有行号信息。”当我尝试做"l lock_acquire“时,我也得到了"No line number known error”,"No symbol lock in current context“。当我在lock_acquire输入"p lock“时。此外,当我输入ptype 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在第二个窗口中。
发布于 2014-04-02 07:10:45
有几种方法可以调试内核,一种方法是直接向内核添加调试消息。例如在系统中添加DEBUG宏。(lib.h)
...
DEBUG(DB_SYSCALL, "Entering into user mode\n");
...你可以用另一种方式使用GDB,就像你刚才说的那样。您应该使用'n‘和'bt’来检查步骤,而不是使用's‘。如果不阅读任何错误,我不知道如何提供更多信息。我希望这能帮到你。
https://stackoverflow.com/questions/21871193
复制相似问题