gpt4 book ai didi

linux - 配置 kern.log 以提供有关段错误的更多信息

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:37 25 4
gpt4 key购买 nike

目前我可以在 kern.log 中找到这样的条目:

[6516247.445846] ex3.x[30901]: segfault at 0 ip 0000000000400564 sp 00007fff96ecb170 error 6 in ex3.x[400000+1000]
[6516254.095173] ex3.x[30907]: segfault at 0 ip 0000000000400564 sp 00007fff0001dcf0 error 6 in ex3.x[400000+1000]
[6516662.523395] ex3.x[31524]: segfault at 7fff80000000 ip 00007f2e11e4aa79 sp 00007fff807061a0 error 4 in libc-2.13.so[7f2e11dcf000+180000]

(你看,导致段错误的应用被命名为 ex3.x,表示练习 3 可执行文件)。

有没有办法让 kern.log 记录完整路径?像这样的东西:

[6...] /home/user/cclass/ex3.x[3...]: segfault at 0 ip 0564 sp 07f70 error 6 in ex3.x[4...]

所以我可以很容易地从谁(用户/学生)那里找出这个 ex3.x 是谁?

谢谢!成为

最佳答案

该日志消息来自内核,具有固定格式,仅包括可执行文件的前 16 个字母,不包括按照 show_signal_msg 的路径。 ,请参阅非 x86 架构上的段错误的其他相关行。

正如 Makyen 所提到的,如果不对内核进行重大更改和重新编译,传递给 klogd 并传递给 syslog 的消息将不会包含您请求的信息。

我不知道 syslog 或 klogd 中有任何日志转换或注入(inject)功能可以让您获取文件名并在文件系统上运行 locate 或 file 以找到完整路径。

获取所需信息的最佳方法是使用崩溃拦截软件,例如 apportabrtcorekeeper .这些工具存储来自/proc 文件系统的进程元数据,包括进程的命令行,其中包括运行的目录,假设二进制文件以完整路径运行,并且不在路径中。

另一种更通用的方法是启用核心转储,然后设置/proc/sys/kernel/core_pattern 以包含 %E , 为了让核心文件名包含二进制文件的路径。

关于linux - 配置 kern.log 以提供有关段错误的更多信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25714501/

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