core dump 配置
引用:http://www.cnblogs.com/secondtonone1/p/5732938.html
Windows环境崩溃问题可根据vs调试工具查看,Linux同样可以查看调用堆栈的信息,只是
需要更改Linux设置,使程序崩溃时候产生core文件。然后gdb调试即可。
1产生core文件方法
产生coredump的条件,首先需要确认当前会话的ulimit –c,若为0,则不会产生对应的coredump,需要进行修改和设置。
ulimit -c unlimited (可以产生coredump且不受大小限制),这种设置仅对当前生效,如果想永久生效
那么需要在
/etc/profile中加入以下一行,这将允许生成coredump文件
ulimit-c unlimited
2更改core dump生成路径
因为core dump默认会生成在程序的工作目录,但是有些程序存在切换目录的情况,导致core dump生成的路径没有规律,
所以最好是自己建立一个文件夹,存放生成的core文件。
我建立一个 /data/coredump 文件夹,在根目录data里的coredump文件夹。
调用如下命令
echo /data/coredump/core.%e.%p> /proc/sys/kernel/core_pattern
将更改core文件生成路径,自动放在这个/data/coredump文件夹里。
%e表示程序名, %p表示进程id
3测试生成core文件以及调试

#include <iostream>
#include <stdio.h> using namespace std;
void core_test1()
{
int i = 0;
//below will call segmentfault
scanf("%d", i);
printf(%d, i); } int main()
{
core_test1();
return 0;
}

该程序在core_test1()内部scanf的时候回崩溃,i前面应该加上&
编译的时候带上-g选项,这样才能用gdb调试core
运行后结果显示段错误
进入/data/coredump文件夹可以查看生成的core
用gdb调试该core,命令为 gdb core.ctest.6408 ,显示如下
program terminated with signal 11 告诉我们信号中断了我们的程序
敲命令: bt 可以打印堆栈信息
这个一堆问号很多人遇到过,有人说是没加载符号表,有人说是标准glibc版本不一致,
可以通过如下命令调试:
gdb 可执行程序exe
进入gdb环境后
core-file core的名字
敲命令bt可以查看准确信息。
示例:
gdb ./ctest
进入gdb环境后,敲core-file /data/coredump/core.ctest.6408
敲bt命令,这是gdb查看back trace的命令
可以看到最近的栈中存储的是调用了IO操作,之前一步是scanf,再往前能看到是
ctest.cpp中第九行 core_test1()函数出错。
到此为止,就是core文件配置生成和调试方法
core dump 配置的更多相关文章
- 【转】段错误调试神器 - Core Dump详解
from:http://www.embeddedlinux.org.cn/html/jishuzixun/201307/08-2594.html 段错误调试神器 - Core Dump详解 来源:互联 ...
- 段错误调试神器 - Core Dump详解
一.前言: 有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误一样会提示到文件某一行, 而是没有任何信息, 使得我们的调试变得 ...
- linux core dump学习
1. core dump是什么? core dump又叫核心转储,当操作系统收到特定的signal时, 会生成某个进程的core dump文件.这样程序员可以根据 已经生成的core dump文件来d ...
- Linux系统打开core dump的配置【转】
什么是core dump core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump.core du ...
- 使用GDB 追踪依赖poco的so程序,core dump文件分析.
前言 在windows 下 系统核心态程序蓝屏,会产生dump文件. 用户级程序在设置后,程序崩溃也会产生dump文件.以方便开发者用windbg进行分析. so,linux 系统也有一套这样的东东- ...
- linux下core dump【总结】
1.前言 一直在从事linux下后台开发,经常与core文件打交道.还记得刚开始从事linux下开发时,程序突然崩溃了,也没有任何日志.我不知所措,同事叫我看看core,我却问什么是core,怎么看. ...
- linux core dump 文件 gdb分析
core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (linux中如果内存越界会收到SIG ...
- core dump gdb调试
core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (linux中如果内存越界会收到SIG ...
- Linux使用笔记: 定制core dump文件的文件名
在开发过程中,当一个Linux程序异常退出时,我们可以通过core文件来分析它异常的详细原因.缺省情况下,Linux在程序异常时不产生core文件,要想让程序异常退出时产生core dump文件,需要 ...
随机推荐
- 我在web前端路上的第一个脚印
这是我的第一篇博客,希望记录下我在路上见到的风景,也和大家一起分享.
- for循环的运算 改变循环的控制流 死循环 遍历数组 定义方法 有名函数匿名函数 定义函数的方法取值 与 自己创建函数取值 局部与全局变量 次幂/随机数/取绝对值/向上取整/平方根
今天学习的是for循环,对for循环的运算有了理解. document.write(" ")里的内容在网页上展示出来 有名函数非常重要!!!!!!!!!!!!!!!!!!!!!并且 ...
- JZ2440支持设备树(1)-添加设备树之后kernel的启动参数跟dts里面不一致
在做之前参考了如下博客文章,再次非常感谢: http://www.cnblogs.com/pengdonglin137/p/6241895.html Uboot中需要在config中添加如下宏: #d ...
- 第五章HTML
HTML介绍 标签:有一个头,一尾 <!DOCTYPE html><html lang="en"><head> <!-- 文档的标题.编码 ...
- Android Studio学习NO.1 了解项目资源
2018.3.1 12:40:51 阅读书籍:第一行代码 1. res目录 drawable 图片 mipmap 图标 values 字符串.样式.颜色 layout 布局 2. 引用(可在Andro ...
- 个人练习:使用HTML+CSS3制作图片轮播功能(不使用JavaScript)
先上效果图,不要在意用来当素材的图片: 在搜索相关资料的时候,查到有两种实现方式:一是使用JavaScript,二是使用CSS3中的Animation(动画),这里使用的是CSS3中的Animatio ...
- openstack--10--知识点补充
关于uuid和Fernet方式比较 提供令牌有四种方式[fernet|pkiz|pki|uuid]默认是uuid.
- jquery: 获取当前天加减一天
// 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占 ...
- MongoDB Sharding分片 shell 脚本
#!/bin/sh CONFIG_NAME=$ CONFIG_PORT=$ SERIAL_NUM=$ STORAGE_HOME=$ if [ ! -n "$CONFIG_NAME" ...
- 弹框时(如大于body的高度),锁死body,使其不能滚动
if(flag){ document.body.style.height = '100vh' document.body.style['overflow-y'] = 'hidden' }else{ d ...