`
jubincn
  • 浏览: 242731 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
文章分类
社区版块
存档分类
最新评论

Linux下利用core来调试segmentation fault

 
阅读更多

Segmentation fault(段错误)是由于虚拟内存管理单元的异常所致,而该异常则通常是由于解引用一个未初始化或非法值的指针引起的。

Linux中提供了core dump的功能,使得对这类错误的调试更为容易。


一般情况下,linux系统是不允许产生core文件的,因此首先要解除这个限制:

ulimit -c unlimited

接下来,运行含segmentation fault的段程序,如:

./test

这时,segmentation fault的错误信息会显示为:

Segmentation fault (core dumped)

在该文件夹下会出现一个名为core的文件

使用生成的core文件进行调试

gdb test core

(gdb) bt

#0 0x00a5c920 in ?? () from /lib/i386-linux-gnu/libc.so.6
#1 0x00a5ca0d in exit () from /lib/i386-linux-gnu/libc.so.6
#2 0x00a4311b in __libc_start_main () from /lib/i386-linux-gnu/libc.so.6
#3 0x080483d1 in _start ()


分享到:
评论

相关推荐

    Linux环境下段错误(Segmentation fault)的产生原因及调试方法

    在Linux环境下,编程时经常会遇到一个让开发者头疼的问题——段错误(Segmentation fault)。这个问题通常是由于程序尝试访问其不应该访问或者无法访问的内存区域而触发的。本文将深入探讨段错误的原因以及如何在...

    Linux下的段错误Segmentationfault产生的原因及调试方法经典.pdf

    "Linux下的段错误Segmentationfault产生的原因及调试方法经典" 在 Linux 系统中,段错误(Segmentation fault)是一种常见的错误,它是指访问了错误的内存段,或者访问了没有权限的内存区域,或者根本不存在对应的...

    Linux下发生段错误时如何产生core文件

    下面将详细介绍如何在Linux环境下设置和利用core dump进行故障排查。 首先,要生成core dump文件,需要确保系统允许创建core dump,并且设置了合适的大小限制。可以使用`ulimit`命令查看和设置这些限制。例如,`...

    collect2: fatal error: ld terminated with signal 11 [Segmentation fault], core d

    在编程过程中,我们时常会遇到各种编译错误,其中一种比较棘手的错误是"collect2: fatal error: ld terminated with signal 11 [Segmentation fault], core dumped"。这个错误通常发生在尝试使用g++或gcc编译C++或C...

    Linux下的段错误产生的原因及调试方法

    ### Linux下的段错误产生的原因及调试方法 #### 概述 段错误,即`Segmentation fault`,是在程序运行过程中由于非法访问内存所引发的一种错误。这种错误在Linux环境下非常常见,尤其对于使用C/C++这类需要手动管理...

    Linux下怎么产生core dump文件及GDB怎么调试core.pptx

    ### Linux下产生Core Dump文件及使用GDB调试详解 #### 一、Core文件的基本概念与作用 当一个程序因为某些原因而崩溃时,系统内核会自动创建一个名为`core`的文件,这个文件包含了程序崩溃时刻的内存映像以及其他...

    Linux应用程序调试之debug_coredump

    本文将深入探讨如何利用core dump进行Linux应用程序的调试,特别关注使用gdb工具来解析core文件。 ### coredump的核心概念 #### 1. 何时产生core dump? 当进程接收到某些信号(如SIGSEGV)时,如果内核被配置为...

    Linux下如何使用gdb调试core文件

    在Linux环境中,gdb(GNU Debugger)是一款强大的调试工具,用于检查和分析程序中的错误,尤其是在遇到Segmentation fault (core dumped)这样的运行时错误时。本文将详细介绍如何使用gdb来调试core文件,以帮助...

    Linux下简单GDB调试教程

    4. **利用core文件进行调试**:当程序崩溃时,可以通过core文件来进行调试。首先需要使用`ulimit -c`命令设置core文件的最大大小,然后通过gdb加载core文件进行调试。 #### 多线程程序的调试 1. **查看线程信息**...

    Linux下的段错误产生的原因及调试方法.pdf

    在Linux环境下,这种错误通常表现为程序崩溃并返回一个错误消息“Segmentation fault”。 **产生段错误的原因**主要包括但不限于以下几个方面: 1. **访问系统数据区**:尤其是当程序尝试写入系统保护的内存地址时...

    Linux Debugging(五): coredump 分析入門1

    在Linux系统中,调试是解决程序异常和错误的关键步骤,特别是在遇到程序崩溃并产生coredump时。coredump是操作系统在程序异常终止时保存的内存映像,包含了程序运行时的状态,如内存布局、堆栈信息、全局变量和...

    关于linux下core dump【总结】

    Linux下的core dump是调试程序异常的重要工具,它记录了程序崩溃时的关键信息。通过开启core dump,设置适当的限制,以及使用GDB进行调试,开发者可以有效地追踪和修复程序中的错误。理解core dump的工作原理和使用...

    ubuntu-linux下程序崩溃生成coredump的方法.pdf

    在 **Ubuntu Linux** 下,当程序发生异常时,例如段错误(Segmentation fault),系统会尝试生成一个 **core dump** 文件。默认情况下,该文件的名字为 `core`,并位于程序崩溃时的当前工作目录中。 #### 二、更改 ...

    利用core文件排查系统崩溃的信息详细步骤

    执行可执行程序直到出现 Segmentation fault (core dumped) 错误,表示 Core Dump 文件生成成功。在这里,我们可以使用 `gdb` 工具来查看 Core Dump 文件的内容。 4. 使用 GDB 分析 Core Dump 文件 使用 `gdb` ...

    段错误的定义及常用的调试方法

    GDB(GNU Debugger)是Linux环境下最常用的调试工具之一。当程序因为段错误而崩溃时,GDB可以捕获异常,并将程序暂停在引发错误的位置,显示相关的调用堆栈和局部变量状态。开发者可以通过GDB的命令行接口,逐步执行...

    ARM版如何开启gdb调试.docx

    总结来说,调试ARM版程序涉及Core文件的生成与设置、带调试信息的编译以及GDB的使用。理解这些步骤可以帮助开发者有效地定位和解决嵌入式系统中的错误,提高开发效率。在实际项目中,还需要根据具体平台和环境调整...

Global site tag (gtag.js) - Google Analytics