【发布时间】:2011-05-14 01:14:54
【问题描述】:
我已经使用 -g 选项编译了我的 freebsd libc 源代码,所以现在我可以进入 libc 函数。
但我无法进入系统调用代码。我已经用-g编译了freebsd内核源代码。在设置断点时,gdb 会通知 .S 文件上的断点。在遇到断点时,gdb 无法进入系统调用源代码。
另外,我试过:gdb$catch syscall open
但这也行不通。
你能推荐点什么吗?
谢谢。
【问题讨论】:
-
Linux 上的调试是通过
ptrace(2)系统调用实现的;ptrace只能检查和停止在用户空间中运行的进程。我希望 FreeBSD 的进程调试机制是相似的,并且只设计用于用户空间进程:因为操作系统内核将获取和释放锁以及快速响应中断,所以将内核设计为允许从用户空间进行全功能调试似乎非常不太可能。 -
嗨,萨诺德,感谢您的评论。如果无法进行用户空间调试,那么 kdb/kgdb 可以达到目的吗?
-
我已经有好几年没有研究 kdb/kgdb 了,可能情况已经发生了翻天覆地的变化。 :) 但也许this message about stack dumps 会是一个很好的起点?
标签: unix gdb systems-programming