10.7 调试死锁

  有时您会遇到一种称为死锁的状况, 此时系统会停止进行有用的工作。 如果希望在此时提供有用的 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 来显示调用栈。

本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.