signal: segmentation fault (core dumped) 报了这种错误,到哪里去查看dump文件呢?
- 检查 core 文件配置
$ cat /proc/sys/kernel/core_pattern
|/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h
上面命令的输出:
|: 表示核心转储不会直接生成一个传统的文件,而是通过管道。/usr/lib/systemd/systemd-coredump: 是接收并处理核心转储数据的程序。- 集中管理:所有核心转储被统一收集和存储,默认位置通常在 /var/lib/systemd/coredump/
- 自动压缩:转储文件会被自动压缩,节省磁盘空间。
- 便于调试:可以使用 coredumpctl命令轻松列出、查询和分析所有历史崩溃记录。
%P %u %g %s %t %c %h: 这些是传递给 systemd-coredump程序的参数,提供了关于崩溃进程的关键信息- %P : 崩溃进程的进程标识符(PID)
- %u : 进程所有者的用户ID(UID)
- %g : 进程所有者的组ID(GID)
- %s : 导致进程崩溃的信号编号
- %t : 崩溃发生的时间戳(从 Unix 纪元开始的秒数)
- %c : 核心转储文件的大小限制,受
ulimit -c设置影响 - %h : 发生崩溃的主机名
core_pattern文件内容如果是文件路径的话,文件路径支持以下格式变量:
| 参数 | 含义 | 示例 |
|---|---|---|
| %e | 程序名 | core-test |
| %p | 进程 ID | core-1234 |
| %t | 时间戳(Unix 时间) | core-1620000 |
| %u | 用户 ID | core-1000 |
| %s | 导致崩溃的信号编号 | core-11(SIGSEGV) |
| %h | 主机名 | core-server1 |
- 检查 core 文件开关
$ ulimit -c
若输出 0,表示禁止生成;若为 unlimited,则无限制。
- 调试 core 文件
$ gdb /path/to/program_executable /path/to/core_file
本文发表于 0001-01-01,最后修改于 0001-01-01。
本站永久域名「 jiavvc.top 」,也可搜索「 极客油画 」找到我。

