内核跟踪返回截断的消息

时间:2018-04-12 07:17:46

标签: kernel trace ftrace

“文件可能被截断。需要至少%ld大小,但大小为%ld”。任何人都可以帮我解释如何调用此消息?当我尝试收集内核跟踪时,我看到了这条消息。任何人都可以解释为什么当我尝试收集内核跟踪时会发生这种情况?

我注意到的另一件事是,当我第一次看到上面的消息时,我尝试收集内核跟踪。当我尝试再次立即收集时,我能够收集日志。但是当我在> 5分钟后再次尝试收集时,我看到了上述信息。

1 个答案:

答案 0 :(得分:0)

好的,当您尝试一次性获取/收集大量信息时,内核的行为就是这样。

一旦说过,在你的情况下你需要再次调用你所做的动作,所以内核明白你真的想要显示那些巨大的信息。这就是为什么你能够在第二次尝试中收集内核跟踪的原因。

如果没有弄错的话,你实际上在做的是调用一个read()系统调用,它将尝试读取并从fd开始计算字节,从buf开始计入缓冲区。

正如您可以从Linux内核源代码中读取read_write.crw_verify_area函数不喜欢巨大的counts。因此,它将它们限制为一般适合int的东西。所以它不必一直进行范围检查。

<强> TL; DR

你到那里,并不是一个错误,很可能是的一个功能让内核在用户错误地打开巨大的文件。此限制由Linux内核中的rw_verify_area函数创建。 因此,它至少要调用两次读取系统调用来获取您的数据。