在 Linux 2.6.35 上启用核心转储

在 Linux 2.6.35 上启用核心转储

我在自定义嵌入式设备 (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)

相关内容