步骤:

(1)无论你是用Makefile来编译,还是直接在命令行手工输入命令来编译,都应该加上 -g 选项。

(2)一般来说,在默认情况下,在程序崩溃时,core文件是不生成的(很多Linux发行版在默认时禁止生成核心文件)。所以,你必须修改这个默认选项,在命令行执行:

ulimit -c unlimited

表示不限制生成的core文件的大小。

(3)运行你的程序,不管用什么方法,使之重现Segmentation Fault错误。

(4)这时,你会发现在你程序同一目录下,生成了一个文件名为 core.*** 的文件,即核心文件。例如,“core.15667”这样的文件。

(5)用GDB调试它。假设你的可执行程序名为test,则在命令行执行:

gdb test core.15667

然后可能会显示出一堆信息:

GNU gdb Fedora (6.8-27.el5)

Copyright (C) 2008 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.  Type "show copying"

and "show warranty" for details.

This GDB was configured as "i386-redhat-linux-gnu"...

warning: Can't read pathname for load map: Input/output error.

…………………(中间还有很多内容,此处省略)……………………………

Loaded symbols for /usr/lib/libgpg-error.so.0

Core was generated by `./test'.

Program terminated with signal 11, Segmentation fault.

[New process 15668]

#0  0x0804c760 in thread _handler () at test.cpp:707

707                             CDev* cur_dev = *it_d;

然后我们输入并执行命令 bt :

(gdb) bt

就会得到类似于下面的信息:

#0  0x0804c760 in thread _handler () at test.cpp:707

#1  0x006b149b in start_thread () from /lib/libpthread.so.0

#2  0x0060842e in clone () from /lib/libc.so.6

于是,我们一眼就看出来了:程序是在第707行使用指针时出的问题。

core 文件查看的更多相关文章

  1. 如何设置、查看以及调试core文件

    http://blog.csdn.net/xiaoxiaoniaoer1/article/details/7740820 1.core文件的生成开关和大小限制--------------------- ...

  2. [转载]linux下core文件设置与查看

    转自:https://blog.csdn.net/dingqinghui/article/details/77855330?locationNum=9&fps=1 linux下core文件设置 ...

  3. core文件

    1.ulimit  -c查看是否可以产生core文件 打印0表示当前不产生core文件 2.ulimit -c unlimited 设置产生core文件 这种方法只是临时设置产生core文件 3.ec ...

  4. Core文件作用、设置及用法

    http://blog.csdn.net/lanmolei814/article/details/45201693 ====================================== 1.C ...

  5. 让linux中的程序崩溃时生成core文件

    当我们的linux程序崩溃的时候,常常会有这样的提示:    Segmentation fault (core dumped)    段错误 (核心已转储)    提示说生成了core文件,但是此功能 ...

  6. Linux中如何产生core文件?

      在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息).使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数.   1.core文件 ...

  7. linux包之gdb之gdb命令与core文件产生

    gdb-7.2-64.el6_5.2.x86_64/usr/bin/gcore/usr/bin/gdb/usr/bin/gdb-add-index/usr/bin/gdbtui/usr/bin/gst ...

  8. gdb简单调试~core文件

    1.打开终端,进入项目目录,输入ulimit -a ,可以看core文件大小设置(第一行),若为0, 则没有打开core dump设置. 2.ulimit -c unlimited ,core文件大小 ...

  9. ### core文件使用

    在Linux下程序崩溃,特别是在循环中产生Segment Fault错误时,根本不知道程序在哪出错,这时,利用core文件可以快速找到出错的问题所在. #@author: gr #@date: 201 ...

随机推荐

  1. Android 自定义Dialog 去除阴影

    自定义Dialog中添加下列代码: window.clearFlags( WindowManager.LayoutParams.FLAG_DIM_BEHIND);

  2. 数据库记录锁表锁实际研究笔记 --- MSSQLSERVER

    直切主题 现有一张表 table : ChenJi ID, DanWeiID,  Name,  ChenJi 表中记录 ID  DanWeiID    Name      ChenJi --- --- ...

  3. openfire维持在线状态,监听消息

    public static void testLoginStatus()throws XMPPException,InterruptedException { AccountManager accou ...

  4. golang初始化结构体数组

    最近组里新项目要求用go来写,没办法只能边看文档边写代码,今天遇到郁闷的问题,查了好久最终发现居然是一个标点符号的导致的,遂纪录之 刚刚给一个接口写单元测试时想初始化一个结构体数组,然后遍历该数组并建 ...

  5. 【机器学习】主成分分析PCA(Principal components analysis)

    1. 问题 真实的训练数据总是存在各种各样的问题: 1. 比如拿到一个汽车的样本,里面既有以“千米/每小时”度量的最大速度特征,也有“英里/小时”的最大速度特征,显然这两个特征有一个多余. 2. 拿到 ...

  6. SQL Server 数据库自建表

    sysobjects是系统自建的表,里面存储了在数据库内创建的每个对象(约束.默认值.日志.规则.存储过程等). 列名 数据类型 描述 name sysname 对象名 id int 对象标识号 xt ...

  7. SVD分解及线性最小二乘问题

    这部分矩阵运算的知识是三维重建的数据基础. 矩阵分解 求解线性方程组:,其解可以表示为. 为了提高运算速度,节约存储空间,通常会采用矩阵分解的方案,常见的矩阵分解有LU分解.QR分解.Cholesky ...

  8. ios 根据scrollview滑动的偏移计算滑动到第几页算法(不同需求不同计算)

    第一种: CGFloat pageWidth = self.scrollView.frame.size.width; int page = floor((self.scrollView.content ...

  9. 利用order by 进行盲注

    0x01 利用场景 登录代码: $username = $_POST['username']; $password = $_POST['password']; if(filter($username) ...

  10. java基础篇---异常处理

    认识异常 异常时导致程序中断运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失,所以在程序的设计中必须考虑各种异常的发生,并正确的做好相应的处理,这样才能保证程序 ...