主页
文章
分类
系列
标签
Core Dump
发布于: 2017-12-21   更新于: 2017-12-21   收录于: Tool , Cheat sheet
文章字数: 498   阅读时间: 1 分钟  

Core Dump 设置

生成 core

默认是不会产生 core 文件的

1
ulimit -c unlimited     # -c 指定 core 文件的大小,unlimited 表示不限制 core 文件的大小

设置 core 文件名

设置完 ulimit 后,在程序崩溃时将会 core dump,不过在 Ubuntu 系统还需要设置 core 文件名,不然查看不到生成的 core 文件

设置 core 文件名:

1
echo 'core.%p' > /proc/sys/kernel/core_pattern

其他模板变量

  • %% - 单个 % 字符
  • %p - 所 dump 进程的进程 ID
  • %u - 所 dump 进程的实际用户 ID
  • %g - 所 dump 进程的实际组 ID
  • %s - 导致本次 core dump 的信号
  • %t - core dump 的时间 (由 1970 年 1 月 1 日计起的秒数)
  • %h - 主机名
  • %e - 程序文件名

编译选项加入 -g 参数的 debug 程序能在 core dump 中查看具体的堆栈函数信息

Core Dump 查看

1
2
3
4
5
6
7
8
gdb a core.48299     # gdb {执行程序} {core}
(gdb)bt              # 查看崩溃的堆栈信息(backtrace)
(gdb)info thread     # 列出所有线程
(gdb)thread 1        # 进入编号 1 的线程,输入 bt 可以查看该线程的堆栈
(gdb)f 3             # 进入第 3 帧(frame)
(gdb)i locals        # 打印所有的变量的值(info)
(gdb)p *pPduHeader   # 查看 pPduHeader 的值(pring)
(gdb)l               # 查看源码(list)

在 GDB 命令提示符后,直接按回车键为重复上一次的命令
GDB 相关命令查看 这篇 文章

Release 版本查看 Core Dump

  1. 相同的代码编译 debug 版本
  2. objcopy –only-keep-debug test_debug projectsymbol.dbg 生成符号表
    • test_debug:debug 版本编译的可执行文件
    • projectsymbol.dbg:生成的符号表文件
  3. gdb -q a core.48299
  4. (gdb)file projectsymbol.dbg
  5. bt
Andy
Welcome to andy blog
目录
相关文章
GDB
帮助信息 1 2 3 4 5 6 7 help # 列出命令分类 help running # 查看某个类别的帮助信息 help run # 查看命令 run 的帮助 help info # 列出查
2017-12-10
Git
配置 1 2 3 git config --global "Your Name" git config --global "Email Address" git config --global credential.helper store #保存密码(每次要输密码/重复输密码) 初始化 1 git init 提交修改 1
2016-5-27
Git 服务器安装
安装 git 1 apt-get install git 创建 git 专用用户 创建用户 git (如果希望多个账户密码可以添加一个组,然后再创建不同的用户) 1
2016-5-26
Batch
什么是批处理 批处理(Batch),也称为批处理脚本,批处理就是对某对象进行批量的处理 批处理文件的扩展
2017-11-5
Bash
常用快捷键 默认使用 Emacs 键位 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 CTRL+A # 移动到行
2017-4-21
Go
安装 前往 官网 下载 go1.19.4.linux-amd64.tar.gz 1 2 3 tar -C /usr/local/ -xzf go1.19.4.linux-amd64.tar.gz export PATH=$PATH:/usr/local/go/bin go version 看到版本号代表 go 安装成功 编译器命令 1 2 3 4 5 6 7 8 9 10 11 12
2019-12-30
Redis
启动 Redis 1 2 3 4 redis-server /path/redis.conf # 指定配置文件启动 redis redis-cli # 开启 redis 客户端 systemctl restart redis.service # 重启 redis systemctl status redis # 检查 redis 运行状态 字符串 1 2
2019-12-24
C#
数据类型 类型 大小 举例 String 2 bytes/char s = “reference” bool 1 byte b = true char 2 bytes ch = ‘a’ byte 1 byte b = 0x78 short 2 bytes val = 70 int 4 bytes val = 700 long 8 bytes val
2019-7-13
Python
常规 Python 对大小写敏感 Python 的索引从 0 开始 Python 使用空白符(制表符或空格)来缩进代码,而不是使用花括号 帮助 获取主
2018-10-6
Nginx
Nginx 常用命令 官方文档 1 2 3 4 5 sudo nginx -t # 检测配置文件是否有错误 sudo systemctl status nginx # nginx 当前的运行状态 sudo systemctl reload nginx # 重新加
2018-2-12