我的问题可能与 Ubuntu 无关,但由于我的桌面运行此操作系统,因此我来到了此论坛。
我正在尝试使用以下ulimit -c命令更改核心文件大小:
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7959
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
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 …Run Code Online (Sandbox Code Playgroud) 当我在 Ubuntu 20.04 上运行我的 C 程序时,我得到这个运行时错误:
Run Code Online (Sandbox Code Playgroud)Segmentation fault (core dumped)
我真的需要查找和查看该core文件,但我在任何地方都找不到它。它在哪里,我如何查看其中的回溯?
我试图在 Ubuntu 18.04 中生成一个核心文件。我的程序生成了一个核心文件,但我找不到它。
$ ./a.out
Segmentation fault (core dumped)
$ ls -lrt
total 32
-rwxrwxrwx 1 sanjay sanjay 302 Mar 4 16:38 segmentation.cpp
-rwxrwxrwx 1 sanjay sanjay 28720 Mar 4 16:47 a.out
Run Code Online (Sandbox Code Playgroud) 建议采取以下措施:
ulimit -c unlimited
ulimit -a
Run Code Online (Sandbox Code Playgroud)
将限制设置为零以外的值。以前在我的系统上它是 0。
段错误后没有核心文件。
所以,
sudo systemctl enable apport.service(尽管这似乎与发行版相关,而不是与开发人员相关)。/var/crash此后,工作目录中或工作目录中没有核心文件。
还有:
sudo sysctl -w kernel.core_pattern=core.%u.%p.%t # to enable core generation
systemctl restart apport # to restore default apport settings
Run Code Online (Sandbox Code Playgroud)
还是什么都没有。
观看/var/log/apport.log节目
ERROR: apport (pid 34940) Fri Dec 24 11:48:47 2021: executable does not belong to a package, ignoring
Run Code Online (Sandbox Code Playgroud)
哦,好!Ubuntu 已禁用我自己的代码的核心转储,从而破坏了一个有价值的调试工具。