gpt4 book ai didi

linux - 核心转储文件名被截断

转载 作者:太空狗 更新时间:2023-10-29 12:08:15 25 4
gpt4 key购买 nike

鉴于 /proc/sys/kernel/core_pattern 中的配置设置为 /cores/core.%e.%p,核心转储根据模式命名,但是对于运行名称较长的可执行文件的进程,例如SampleCrashApplication,生成的核心文件将包含一个截断的可执行文件名称:/cores/core.SampleCrashAppl.9933

这是什么原因造成的? man core 页面仅讨论了生成的核心文件名的最大大小为 128(2.6.19 之前的内核为 64)

最佳答案

相关代码可以在 exec.c here 中找到.

代码将根据模式复制核心名称,直到第一个百分比(给出/cores/core.)。按照它将递增和处理“e”的百分比。处理 'e' 部分的代码使用基于 current->comm 结构的 snprintf 打印出模式。

这是截断为值 TASK_COMM_LEN 的可执行文件名称(不包括路径) .由于这被定义为 16 个字符(至少在我发现的内核中是这样),因此 SampleCrashApplication 被截断为 15 + 1 个字符(1 个字符表示末尾的空字节),这解释了为什么你得到截断的核心转储名称。

至于为什么这个结构会截断名称 TASK_COMM_LEN,这是一个更深层次的问题,但它是内核内部的东西,并且有一些讨论 here .

关于linux - 核心转储文件名被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1701161/

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