当前位置: 首页 > 文档资料 > FreeBSD 开发手册 >

10.7 调试死锁

优质
小牛编辑
140浏览
2023-12-01

有时您会遇到一种称为死锁的状况, 此时系统会停止进行有用的工作。 如果希望在此时提供有用的 bug 报告, 您应按照前述的方式使用 ddb(4)。 清在报告中给出与可疑进程有关的 pstrace 输出。

如果可能的话, 请考虑对问题进行更深入的考察。 如果您怀疑死锁发生在 VFS 层上, 则下列选项会有助于找到问题。 您可以在内核编译配置文件中加入

makeoptions        DEBUG=-g
    options     INVARIANTS
    options     INVARIANT_SUPPORT
    options     WITNESS
    options     DEBUG_LOCKS
    options     DEBUG_VFS_LOCKS
    options     DIAGNOSTIC
这些选项。 当发生死锁时, 除了 ps 命令的输出之外, 您还应提供 show pcpushow allpcpushow locksshow alllocksshow lockedvnods 以及 alltrace 的输出结果。

对于使用线程的进程而言, 要获得有意义的调用栈内容, 还需要使用 thread thread-id 来切换线程栈, 并使用 where 来显示调用栈。