我在 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
Run Code Online (Sandbox Code Playgroud)
完成所有这些之后,我运行一个程序,该程序将出现分段错误错误,但它没有在 中生成核心转储文件/var/crash/,那么这有什么问题呢?
第一个小问题是您的目录名称似乎有拼写错误:
/var/crash/
Run Code Online (Sandbox Code Playgroud)
第二个也是更重要的问题是您需要在 Ubuntu 上设置系统范围的 ulimit。
以下是帮助我找到问题解决方案的SO 帖子:
我也在努力获取 coredump,并且 ulimit 也遇到同样的问题。Niranjan 建议的会话特定设置也不适合我。
最后我在https://serverfault.com/questions/216656/how-to-set-systemwide-ulimit-on-ubuntu找到了解决方案
在/etc/security/limits.conf添加:
Run Code Online (Sandbox Code Playgroud)root - core unlimited * - core unlimited并注销/登录。
然后
Run Code Online (Sandbox Code Playgroud)ulimit -c终端上应返回“无限制”并生成核心转储。
小智 0
您是否已按照此处所述启用了批准? https://askubuntu.com/questions/966407/where-do-i-find-the-core-dump-in-ubuntu-16-04lts
具体来说:
在 Ubuntu 中,核心转储由 Apport 处理,可以位于 /var/crash/ 中。但在稳定版本中默认情况下它是禁用的。
要启用Apport,请运行:
sudo systemctl enable apport.service或sudo service apport start
| 归档时间: |
|
| 查看次数: |
20404 次 |
| 最近记录: |