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就可以看到错误的信息了

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

也可以看我在csdn学院的视频课程

http://edu.csdn.net/course/detail/3738

时间: 2025-01-13 05:35:44

Linux程序宕掉后如何通过gdb查看出错信息的相关文章

EXCEL 内插入图片断网后导致程序宕掉无法保存

背景:某EXCEL老师随堂考试,时间为15:20-17:50,考试后半段学生在保存EXCLE文件或访问插入了图片的工作表时,EXCEL程序出现无响应,导致文件无法保存,影响了考试. 原因分析:考试用EXCLE文件在教室机上运行始终没问题,查看网络设置发现16:00以后学生机的外网关闭,而老师外网常开.本想偷懒将外网全部开启,然后用ACL限制http访问用以禁止学生在考试时访问外网,但做完ACL后发现EXCEL问题还是没解决. 无奈只好通过ProcessMonitor和wireshark抓包查明真

如何让linux程序在ssh shell关闭后继续运行?

我们经常会碰到一种情况,用ssh远程登录到linux服务器后,启动一个脚本跑任务,如果这个任务耗时比较久,就得等着,如果此时由于网络原因,ssh连接断了,再重新登录服务器,原来的任务就没了,得重新运行一次.有没有办法让任务切到后台,ssh退出后还能继续运行呢? 当然有-,而且很简单: 1. 在ssh shell中运行脚本,比如我运行一个批量下载脚本: python download-app-annie.py 2. 按下ctrl-z中断脚本运行,此时系统提示: ^Z [1]+  Stopped  

生产环境-linux-tomcat宕掉-乌龙事件

最近两天上线版本,总是发现tomcat重启后一个小时内服务关闭,已经排除是内存泄露的问题,关于如何排除内存泄露嫌疑,请看我这边日志的姐妹篇:生产环境-linux-tomcat宕掉解决办法. 其实不能归纳为tomcat服务宕掉,虽然web访问不了,tomcat服务还在正常跑,只是日志出现此提示: 2015-3-16 16:24:41 org.apache.coyote.http11.Http11NioProtocol pause 信息: Pausing Coyote HTTP/1.1 on htt

5.2嵌入式linux程序编译与调试

实验二 嵌入式linux程序编译与调试 实验目的: 学会使用及配置vim 掌握gcc编译器使用 掌握使用Gdb单步调试程序的方法 实验要求: 熟悉使用该节所介绍的vim创建.编辑.保存文件. 分别用gcc实现预处理.编译.汇编.链接四个过程: 使用gcc编译多文件工程,并制作编译脚本. 利用Gdb单步调试修正结果错误的程序 实验步骤: 用gcc实现预处理.编译.汇编.链接四个过程,使用gcc编译多文件工程,并制作编译脚本. 1.gcc处理编译的四个过程 .源代码 ? (2).预处理 生成main

(转)linux程序减肥三步走

对于设计嵌入式Linux系统的研发人员来说,有一个问题是必须要考虑到的,那就是存储器的空间. 我们知道嵌入式Linux系统所用的存储器不是软磁盘.硬盘.ZIP盘.CD-ROM.DVD这些众所周知的大容量常规存储器,它使用的是例如Rom, CompactFlash,M-Systems的DiskOnChip,SONY的MemoryStick,IBM的MicroDrive等体积极小,与主板上的BIOS大小相近,存储容量很小的存储器.所以怎样尽可能的节省空间就显的很重要.     嵌入式系统的存储器中放

linux程序的常用保护机制

linux程序的常用保护机制 来源 https://www.cnblogs.com/Spider-spiders/p/8798628.html 操作系统提供了许多安全机制来尝试降低或阻止缓冲区溢出攻击带来的安全风险,包括DEP.ASLR等.在编写漏洞利用代码的时候,需要特别注意目标进程是否开启了DEP(Linux下对应NX).ASLR(Linux下对应PIE)等机制,例如存在DEP(NX)的话就不能直接执行栈上的数据,存在ASLR的话各个系统调用的地址就是随机化的. 一.checksec che

MAC使用IDA PRO远程调试LINUX程序

1 背景 在学习Linux系统上的一些漏洞知识的时候,往往需要进行“实地测试”,但是在Linux系统上进行调试并不太方便,因为LINUX自带的GDB调试工具真的不太人性化,即使有GDBTUI之类的“伪图形界面调试器”,也跟IDA PRO之类的调试器相差甚远.这里又遇到另一个问题了——LINUX平台的IDA PRO不太好找. 综上,对于初学者而言最佳方案就是使用IDA PRO的远程调试功能! 2 环境配置 本文主要说明在MAC系统上如何通过IDA PRO对linux程序进行远程调试(如果宿主机为W

linux 程序管理与SElinux

此文涉及的命令:&. jobs.fg.bg.kill.nohup.ps.top.pstree.free.uname.uptime.netstat.dmesg. vmstat.fuser.lsof.pidof.getenforce.sestatus.setenforce.ps -Z.ll -Z.chcon.restorecon.setroubleshoot.auditd.seinfo.sesearch.getsebool. setsebool.semanage. 概念: 什么是程序 (proces

关于VS2015支持编译Linux程序的问题

现状 目前已经发布的VS2015中包括VS2015 Preview 以及 VS2015 CTP6,这两个版本均不支持直接编译C++代码为Linux程序,具体情况可以参考 Visual Studio 2015 CTP 6 和 Visual Studio 2015 Preview. 正式版发布时间 在微软官网没有找到明确的发布时间,只是说在今年晚些时间发布.另外Windows10正式版的发布时间为夏末秋初,推测到时候VS2015正式版也会一起推出,参考文章夏末秋初!Windows 10正式版发布时间