配置(9):在ubuntu上生成core文件

1. 启用核心转储功能(当前终端生效)

ulimit -c unlimited

该命令用于解除系统对核心转储文件大小的限制,确保程序崩溃时能生成core文件。

检查 core 文件的生成路径和权限

cat /proc/sys/kernel/core_pattern

  • 如果输出是 core,则表示默认生成在当前目录。
  • 如果输出是类似 |/usr/share/apport/apport %p %s %c %d %P 的内容,说明系统使用了 apport 等工具来处理崩溃,这可能会阻止 core 文件的生成。
  • 如果输出是 /var/crash/core.%p,则 core 文件会生成在 /var/crash/ 目录下,并且文件名包含进程 PID。

如何修改 core_pattern (需要 root 权限)

临时修改(重启后失效)

sudo sysctl -w kernel.core_pattern=core

永久修改(需要编辑配置文件)

sudo vim /etc/sysctl.conf

添加或修改一行:

kernel.core_pattern = core sudo sysctl -p

2. 重新触发段错误以生成core文件

./kvstore

程序崩溃后 ,在当前目录下查找名为 corecore.<pid> 的文件。

ls -l core*

3. 重新用 GDB 调试core文件 (编译时加-g,core可以生成更多信息)

gdb ./kvstore core.20860

<RET>是指回车键

|-----------|--------------------------|
| bt full | 获取崩溃时的函数调用链及局部变量,定位具体错误点 |

相关推荐
小白勇闯网安圈9 小时前
Django Form 组件详解:从表单生成到 ModelForm 数据校验
数据库·django·sqlite
DAVIED99 小时前
llama.cpp 本地部署完全指南
windows·llama·wsl·llamacpp
梦想不只是梦与想10 小时前
MySQL 数据库(二):数据类型
数据库·mysql·数据类型
野生技术架构师10 小时前
Redis 和 MySQL 如何保证数据一致性?先更新数据库还是先删缓存,延迟双删、MQ、Canal 一次讲透
数据库·redis·缓存
鸽芷咕10 小时前
SQL Server数据迁移到金仓数据库复盘:从怕性能翻车,到TPS提升60%
数据库
HAYDENR11 小时前
数据库如何做性能优化?数据库性能调优有哪些常见注意事项?
数据库·性能优化
Light Gao11 小时前
企业级灰度发布技术方案
网络·数据库·oracle
一水11 小时前
AI 时代审查思维:审查第一篇
java·jvm·数据库·spring
赵广陆11 小时前
企业实战:Milvues向量数据库实践
数据库·pycharm·langchain
微学AI11 小时前
把时间序列真正用起来:TimechoAI 使用与时序分析实战
数据库·人工智能·大模型