程序运行错误std::bad_alloc and double free (coredump)

标题程序运行错误std::bad_alloc and double free (coredump)

在项目代码运行过程中极限操作下出现黑屏死机,看不到堆栈,提示上面两条信息。
后来百度查找一下可以通过下述方法查看堆栈,对当时一脸懵的我来说是不错的前进的方向。

Core Dump叫做核心转储,它是进程运行时在突然崩溃的那一刻的一个内存快照。操作系统在程序发生异常而异常在进程内部又没有被捕获的情况下,会把进程此刻内存、寄存器状态、运行堆栈等信息转储保存在一个文件里,一般名为core且与你的运行程序在同一目录下。
查看文件就可以看到程序挂掉的相关现场。

准备:
1:设置bash(查看程序运行的bash环境中core 文件的设置大小——ulimit -a)
如果core file的值为0则表示大小为0,不产生core文件,可通过ulimit -c unlimited设置core文件为无限大;

2、运行程序

3、操作路径使得复现错误std::bad_alloc and double free (coredump)

4、查看core。gdb 运行程序 core,可以看到相关信息

ulimit -a查看的只是当前的bash环境,切换到另一个bash环境设置不生效
core文件可以定制为你熟悉的,需要/etc/sysctl.conf文件,对产生的core文件进行配置在其中添加以下两行:
kernel.core_pattern = /var/core_log/core_%e_%t_%p
kernel.core_uses_pid = 0

—————————————————————————————————————————————————————————————

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值