core dump

core dump

当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中(core文件),这种行为就叫做 Core Dump 或者叫做 ‘核心转储’,利用 coredump 可以帮助我们快速定位程序崩溃位置
ulimit -c 查看是否开启,如果输出为0,则没有开启。需要执行 ulimit -c unlimited 开启core dump功能。开启后执行ulimit -c输出unlimited
在配置文件中设置core文件的名称和生成路径。没有进行设置的话,默认生成的core文件不带其它任何扩展名称,全部命名为core。新的core文件生成将覆盖原来的core文件 。
用gdb同时调试运行程序和相应的core文件,可以复现程序崩溃时的场景,定位到具体程序崩溃的位置,且能看到具体的错误,分析前后的变量,找出问题的原因。

基本GDB命令

为了定位问题,常常需要进行单步跟踪,设置断点之类的操作。

下边列出了GDB一些常用的操作。

  • 启动程序:run
  • 设置断点:b 行号|函数名
  • 删除断点:delete 断点编号
  • 禁用断点:disable 断点编号
  • 启用断点:enable 断点编号
  • 单步跟踪:next (简写 n)
  • 单步跟踪:step (简写 s)
  • 打印变量:print 变量名字 (简写p)
  • 设置变量:set var=value
  • 查看变量类型:ptype var
  • 顺序执行到结束:cont
  • 顺序执行到某一行: util lineno
  • 打印堆栈信息:bt

posted @ 2020-12-18 20:47  Lucky小黄人^_^  阅读(193)  评论(0编辑  收藏  举报