在 Ubuntu 18.04 和 Ubuntu 20.04 中找不到核心转储文件 [已关闭]

问题描述 投票:0回答:4

我在 ubuntu 18.04 和 ubuntu 20.04 中找不到任何核心转储文件,即使我已经更改了

core file size
/proc/sys/kernel/core_pattern
:

smart@stable:~$ ulimit -c unlimited

smart@stable:~$ ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 63699
max locked memory       (kbytes, -l) 65536
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1048576
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1048576
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

smart@stable:~$ cat /proc/sys/kernel/core_pattern 
|/usr/share/apport/apport %p %s %c %d %P %E

smart@stable:~$ sudo su
root@stable:~# echo "/var/crash/core-%e-%p-%t" > /proc/sys/kernel/core_pattern

完成所有这些之后,我运行一个程序,该程序将出现分段错误错误,但它没有在

/var/crash/
中生成核心转储文件,那么这有什么问题吗?

ubuntu coredump
4个回答
5
投票

第一个小问题是您的目录名称中似乎有一个拼写错误:

/var/crash/

第二个也是更重要的问题是您需要在 Ubuntu 上设置系统范围的 ulimit。

下面是SO帖子帮助我找到了问题的解决方案:

我也在努力获取核心转储,并且遇到了同样的问题 ulimit。 Niranjan 建议的会话特定设置也没有 为我工作。

最后我找到了解决方案 https://serverfault.com/questions/216656/how-to-set-systemwide-ulimit-on-ubuntu

/etc/security/limits.conf 添加:

root - core unlimited
*    - core unlimited

然后注销/登录。

然后

ulimit -c

在终端上应该返回“无限制”并且核心转储是 生成。


4
投票

Ubuntu 20.04 的简短答案,假设您正确设置了所有内容,

Appport 捕获的常规用户转储写入

/var/lib/apport/coredump/

1
投票

对于您自己的程序,您还必须设置:

mkdir -p ~/.config/apport
printf '[main]
unpackaged=true
' >> ~/.config/apport/settings

否则:

cat /var/log/apport.log

说:

错误:apport (pid 503174) Sat Nov 26 21:51:47 2022:可执行文件不属于包,忽略

你得不到

.crash

在 Ubuntu 22.04 上测试。

另请参阅:https://askubuntu.com/questions/1349047/where-do-i-find-core-dump-files-and-how-do-i-view-and-analyze-the-backtrace-st /1442665#1442665


0
投票

您是否已按照此处所述启用了批准? https://askubuntu.com/questions/966407/where-do-i-find-the-core-dump-in-ubuntu-16-04lts

具体:

在 Ubuntu 中,核心转储由 Appport 处理,可以位于 /var/崩溃/。但在稳定版本中它默认被禁用。

要启用 Appport,请运行:

sudo systemctl enable apport.service
sudo service apport start

© www.soinside.com 2019 - 2024. All rights reserved.