Multithreading 我需要在FreeBSD中跟踪我的内核,因为我';我正在更改计划程序,我该怎么做?

Multithreading 我需要在FreeBSD中跟踪我的内核,因为我';我正在更改计划程序,我该怎么做?,multithreading,operating-system,kernel,scheduling,freebsd,Multithreading,Operating System,Kernel,Scheduling,Freebsd,我正在修改我的调度程序,这导致它被卡住(因为我无法正确地实现它,而且我没有收集我扔到队列中的东西)。所以我想看看能走多远。启动kernel.old时,如何将内容写入日志,然后如何读取日志 我将我的线程放入一组新的队列中,而不是传统的3个runq,每个64个。要遍历和拾取线程,我使用TAILQ_FOREACH 您是否尝试闯入调试器 DTrace也可能有用 你做错了 您应该做的是运行一个支持调试器(如qemu或bhyve)的虚拟机监控程序。然后将gdb连接到您引导的内核,并在其崩溃时检查状态 原则上

我正在修改我的调度程序,这导致它被卡住(因为我无法正确地实现它,而且我没有收集我扔到队列中的东西)。所以我想看看能走多远。启动kernel.old时,如何将内容写入日志,然后如何读取日志


我将我的线程放入一组新的队列中,而不是传统的3个runq,每个64个。要遍历和拾取线程,我使用TAILQ_FOREACH

您是否尝试闯入调试器


DTrace也可能有用

你做错了

您应该做的是运行一个支持调试器(如qemu或bhyve)的虚拟机监控程序。然后将gdb连接到您引导的内核,并在其崩溃时检查状态

原则上,您/可以/拥有一个日志,您可以将内容写入其中,并在启动失败后检索该日志,但我不明白您为什么要这样做。实现这一点的最简单方法是简单地printf,并可能扩展缓冲区的大小,以便可以容纳更多的消息。内核总是将日志放在同一个位置,并在引导时检查一个神奇的数字,以便知道它应该从头开始还是开始追加。然后,所述日志在dmesg和/var/log/messages中可用。但如前所述,这不是做这件事的方法