gpt4 book ai didi

c - 将 fpirntf() 添加到 xnu 内核 tcp_xxx.c,找不到 stdio.h

转载 作者:太空宇宙 更新时间:2023-11-04 07:15:52 25 4
gpt4 key购买 nike

在 stackoverflow 上问候大家!

我正在尝试将 fpirntf() 添加到 XNU 内核 tcp_xxx.c 文件中,因此当 TCP 移动时它可以将参数打印到文件中,以便更好地理解 TCP 的工作原理,但是出现如下 fatal error :

$ sudo make ARCH_CONFIGS=X86_64 KERNEL_CONFIGS=DEBUG
CC tcp_output.o
/Users/wangweikai/Desktop/xnubuilder/xnu-2422.90.20/bsd/netinet/tcp_output.c:135:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
^
1 error generated.
make[7]: *** [tcp_output.o] Error 1
make[6]: *** [build_all] Error 2
make[5]: *** [do_all] Error 2
make[4]: *** [build_all] Error 2
make[3]: *** [build_all_recurse_into_conf] Error 2
make[2]: *** [build_all_recurse_into_bsd] Error 2
make[1]: *** [build_all_bootstrap_DEBUG^X86_64^NONE] Error 2
make: *** [all] Error 2

看起来 xnu 源代码中没有 stdio.h,为了解决这个问题,我重新安装了 xcode 5.0.2(仅适用于 xnu-2422)并输出能够启动的 mach_kernel;我尝试在终端中通过“xcode-select --install”安装命令行工具,但两者都不起作用。顺便说一句,如果我在没有 #include 的情况下添加 printf() 它不会出错,它看起来打印函数是由名称不是 stdio.h 的文件定义的。

由于我的目的是记录文件中 TCP 参数(如拥塞窗口大小和下一个序列号等)的变化情况,所以如果有任何方法可以做到这一点,请告诉我,我是全新的xnu 和 C 编程。

最好的问候。

最佳答案

标准 I/O(即 stdio)在内核中不可用。要从内核输出调试信息,调用printf();它的输出将在内核日志中可见。直接从内核将数据写入文件很复杂,而且很少被推荐。 (在这种情况下,它实际上可能会导致硬锁定,例如,如果正在写入的文件位于网络卷上!)

如果您是 C 编程新手,这不是一个好的第一个项目。内核开发是困难的、无情的事情,特别是对于 XNU 内核;错误通常会导致您的计算机崩溃,可能会丢失数据,并且调试服务通常不可用。不过,如果您一心想检查操作系统内核,那么使用 Linux 内核要容易得多——它可以在虚拟机中轻松启动和调试,并且有更好的文档记录。

关于c - 将 fpirntf() 添加到 xnu 内核 tcp_xxx.c,找不到 stdio.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24719531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com