应用程序崩溃时的不同时刻会生成两个不同的核心文件

应用程序崩溃时的不同时刻会生成两个不同的核心文件

我希望我的 C++ 应用程序在崩溃时生成核心转储,因此我遵循了以下建议: https://stackoverflow.com/questions/2065912/core-dumped-but-core-file-is-not-in-the-current-directory

core有时,当它崩溃时,它会在启动时的目录中生成一个文件(例如我的主目录),有时它会创建一个名为_usr_bin_<app_nam>.1000.crash的文件/var/crash。看起来两种不同的机制负责创建这些文件。

该应用程序及其调试符号是从 Debian 包安装的/usr/bin(它被构建为 RELEASE_WITH_DEBUG_INFO)。

以下是一些相关配置:

$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c %d %P %E

$ cat /etc/apport/crashdb.conf
[...]
databases = {
    'ubuntu': {
        'impl': 'launchpad',
        'bug_pattern_url': 'http://people.canonical.com/~ubuntu-archive/bugpatterns/bugpatterns.xml',
        'dupdb_url': 'http://people.canonical.com/~ubuntu-archive/apport-duplicates',
        'distro': 'ubuntu',
#        'problem_types': ['Bug', 'Package'],
        'escalation_tag': 'bugpattern-needed',
        'escalated_tag': 'bugpattern-written',
    },
[...]
}

$ 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) 63058
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              (-u) 63058
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

#文件中的被crashdb.conf插入以启用apport,如下所建议:https://wiki.ubuntu.com/Apport

另外,当我从 中的主目录打开核心文件时gdb,系统显示: BFD: Warning: core is truncated: expected core file size >= 2697007104, found: 2147479552. 无法从内存中读取有效对象。这应该不是可用磁盘空间的问题。

产生两种类型的核心转储的原因究竟是什么?

相关内容