在Linux系统中,当一个程序发生致命错误或崩溃时,操作系统会生成一个核心转储文件(coredump文件)。这个文件包含了程序在崩溃时的内存映像,包括堆栈跟踪信息、寄存器状态和其他相关数据。生成 coredump 文件的过程如下:
SIGSEGV
(段错误)或SIGABRT
(异常终止)。core.<进程ID>
”。生成 coredump 文件的条件和设置可以通过操作系统的配置进行调整,例如通过ulimit命令设置 core 文件大小的限制或者通过sysctl修改生成coredump文件的路径。
<aside>
🔑 引发程序生成核心转储文件的方式之一是键入退出字符(通常为 Control-\),从而生成
SIGQUIT
信号。
</aside>
coredump 的可能性有哪些?
\\0
导致的越界访问如何启用core dump?
查看core dump文件是否开启:ulimit -a
$ 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 63518
-n: file descriptors 1024
-l: locked-in-memory size (kbytes) 64
-v: address space (kbytes) unlimited
-x: file locks unlimited
-i: pending signals 63518
-q: bytes in POSIX msg queues 819200
-e: max nice 0
-r: max rt priority 0
-N 15: unlimited