Linux程序宕掉后如何通过gdb查看出错信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux程序宕掉后如何通过gdb查看出错信息相关的知识,希望对你有一定的参考价值。

      我们在编写服务端程序的时候,由于多线程并且环境复杂,程序可能在不确定条件的情况下宕掉,还不好重新,这是我们如何获取程序的出错信息,一种方法通过打日志,有时候一些错误日志也不能体现出来,这时就用到我们的core dump文件了。

通常情况下coredmp包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息等。可以理解为把程序工作的当前状态存储成一个文件。许多程序和操作系统出错时会自动生成一个core文件。

1 我们系统一般默认是吧core dump 关掉的,可以通过ulimit -c 查看如果是0就是关闭了,我们可以通过ulimit -c n来打开,你是设置coredump文件的最大值kb,或者直接设置不限制

ulimit –c unlimited

2 设置完毕后我们编写一个出错的程序实验一下

//main.cpp

int main()
{
    int *xcj = 0;
    *xcj = 10;
    return 0;
}


3 编译一下,记得加-g 将调试信息编入执行程序,再运行程序

g++ main.cpp -o main -g

./main

技术分享

4 使用gdb查看调试信息

gdb main core


技术分享

通过gdb就可以看到错误的信息了


更多内容可以到网上搜索“夏曹俊”获取我的课程

可以在51cto学院观看我的视频教程

零基础学会在Linux上编译调试C++项目视频课程

http://edu.51cto.com/course/course_id-8237.html

技术分享


本文出自 “夏曹俊” 博客,谢绝转载!

以上是关于Linux程序宕掉后如何通过gdb查看出错信息的主要内容,如果未能解决你的问题,请参考以下文章

使用GNU/gdb调试Linux C/C++可执行程序查看出错源代码、设置断点

Dubbo HA 高可用

高可用

Dubbo的高可用性

dubbo入门学习-----dubbo的高可用

Linux下调试编写并调试C语言程序,怎么查看它的内存和CPU信息?GDB中可以实现吗?