我在自定义嵌入式设备 (ARMv7) 上运行内核 2.6.35。我正在尝试获取核心转储,但核心转储似乎已被禁用。
我的内核配置可以在这里找到: https://pastebin.com/XXZ8YyaA
我的测试应用程序如下:
int main() {
return 1/0;
}
我期望以下内容:
Floating point exception (core dumped)
但相反得到这个:
Floating point exception
意味着核心转储被禁用。如何为我的平台启用它们?看起来在内核中切换功能的选项CONFIG_COREDUMP
直到内核才添加3.7版本。在以前的内核中它不是总是启用的吗?
# 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
答案1
缺少的内核选项是CONFIG_ELF_CORE
.
General setup -> Configure standard kernel features (for small systems) -> Enable ELF core dumps
启用此功能后,我可以获得核心转储。
# ./crash
Floating point exception (core dumped)