我在自定义嵌入式设备 (ARMv7) 上运行内核 2.6.35。我正在尝试获取核心转储,但似乎核心转储已被禁用。
我的内核配置可以在这里找到: https ://pastebin.com/XXZ8YyaA
我的测试应用程序如下:
int main() {
return 1/0;
}
我期待以下内容:
Floating point exception (core dumped)
但是得到这个:
Floating point exception
意味着核心转储被禁用。如何为我的平台启用它们?看起来直到内核版本 3.7CONFIG_COREDUMP
才添加了在内核中切换功能的选项。它不是在以前的内核中总是启用的吗?
# ulimit -a
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) unlimited
-m: resident set size (kbytes) unlimited
-u: processes 1710
-n: file descriptors 1024
-l: locked-in-memory size (kbytes) 64
-v: address space (kbytes) unlimited
-x: file locks unlimited
-i: pending signals 1710
-q: bytes in POSIX msg queues 819200
-e: max nice 0
-r: max rt priority 0
-N 15: unlimited
# ./crash
Floating point exception
缺少的内核选项是
CONFIG_ELF_CORE
.General setup -> Configure standard kernel features (for small systems) -> Enable ELF core dumps
启用此功能后,我可以获得核心转储。