freebsd printf 在内核中的位置

Freebsd printf location in kernel

我正在尝试修改 FreeBSD 10 中的调度程序,因此我希望能够进行一些打印以测试一些东西。我目前正在修改 /usr/src/sys/kern/kern_switch.c 并在 runq_add() 中添加了 printf("PRIORITY = %u\n", (unsigned int)pri);打印出线程的优先级。我不知道这是否有效,因为我还没有找到它打印到的位置。我如何查看 printf 的输出或是否有更好的方法来测试内核中的代码?

内核 printf() 打印到控制台,因此您可以查看它是否有效。除非它使内核崩溃或死锁。因此,首先要确保您使用 INVARIANTS 和 WITNESS 构建内核。对于开发,您无论如何都希望启用它们,除了基准测试之外的所有情况。