coredump

88 篇文章 0 订阅
40 篇文章 0 订阅

目录

core文件存储位置

可以修改默认的存储位置

开启coredump

1.临时生效

2.永久生效

不会生成coredump的情况

使用gdb进行coredump定位


https://www.xuebuyuan.com/3228208.html

https://www.jb51.net/article/102675.htm

https://blog.51cto.com/baidutech/904419

当程序运行过程红异常终止或者崩溃,os会将程序当时运行时的内存,寄存器状态,堆栈指针,内存管理信息,各种函数调用堆栈信息等保存在一个文件中。

core文件存储位置

默认的core文件保存在可执行程序所在的目录下,文件名为core。

可以修改默认的存储位置

修改 /proc/sys/kernel/core_users_pid 文件,可以让生成的core文件名是否自动加上pid。

或者修改
/proc/sys/kernel/core_pattern 控制生成的core文件保存的位置以及文件名格式

 

开启coredump

1.临时生效

ulimit -c // 如果ulimit -c的结果为0, 就说明是没有开启coredump的
ulimit -c unlimited // 设置ulimit为无限制

2.永久生效

/etc/security/limits.conf

* soft core unlimited
* hard core unlimited

或者:
/etc/profile

ulimit -c unlimited

不会生成coredump的情况

 coredump产生的几种情况

1.内存访问越界

2.多线程程序使用了线程不安全的函数

3.多线程读写的程序未加锁保护

4.非法指针

5.堆栈溢出

使用gdb进行coredump定位

l(list) ,显示源代码,并且可以看到对应的行号;

b(break)x, x是行号,表示在对应的行号位置设置断点;

p(print)x, x是变量名,表示打印变量x的值

r(run), 表示继续执行到断点的位置

n(next),表示执行下一步

c(continue),表示继续执行

q(quit),表示退出gdb

 

go coredump调试

https://studygolang.com/articles/11718

go默认不开启coredump,可以通过,在程序崩溃的时候生成coredump文件

export GOTRACEBACK=crash

正在运行的进程生成coredump,而不必kill进程,使用gcore选项,在程序不崩溃的时候生成coredump文件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值