Gdb+Coredump learning

Sometimes running program in Unix will fail without any debugging info or warnings because of the laziness of programmer.. So if need to find the right place will the program stops and start debugging right from there, set the coredump file size to some desired size by first checking ..:


udump -a | grep core


[[email protected] ~]# ulimit -a | grep core

core file size          (blocks, -c) 0

[[email protected] ~]#

Use the following command to set the limit of coredump file size:


ulimit -c unlimited

[[email protected] ~]# ulimit -c unlimited

[[email protected] ~]# ulimit -a | grep core

core file size          (blocks, -c) unlimited

[[email protected] ~]#

Make sure the program is generated by gcc/g++ using flags of -O0 and -g. After running the program that will fail will generate the Core.[0-9]+ file after exit, this file contains the stack/mem/register infos.

use gdb to restore the environment when the bug appears and program exits:


gdb program core.[0-9]+

gdb will point to the line will the program exits, use bt to view the stack infos, use up to get to the upper entry of the stack. Easy to find the problem in the program we write.

时间: 2024-11-05 04:44:17

Gdb+Coredump learning的相关文章

linux下 gdb+coredump 调试偶发crash的程序

1. 打开 core dump 查看是否打开 ulimit -c 如果输出0, 说明没有打开. 方法一:使用命令 ulimit -c unlimited 可以打开,但是只对当前终端有效, 方法二: 配置 /etc/profile 文件 sudo gedit /etc/profile 在最后添加一行 ulimit -S -c unlimited > /dev/null 2>&1 可以始终打开core dump , unlimited 可以改为具体的数字,比方说 1024 来限制 core

GDB与coredump错误类文件的解析

GDB与coredump错误类文件的解析 GDB是Linux与UNIX系统下的一款程序调试工具,下面来介绍GDB的用法: 请先看这个程序: 这是我们作为实验的一个小程序,共10行输出4 进行编译如果要用GDB调试必须要加-g参数 这是编译好的文件的正常运行 开始调试这个程序 gdb 加文件名 现在介绍第一个参数l(list)就是如图这样显示程序的内容, l后还可以加数字,就是打印这个行数上下共10行. start程序开始单步调试,自动执行第一步. 参数b 设置断点就是程序函数到这一步暂停等待下一

GDB动态库搜索路径

当GDB无法显示so动态库的信息或者显示信息有误时,通常是由于库搜索路径错误导致的,可使用set sysroot.set solib-absolute-prefix.set solib-search-path来指定库搜索路径. 1. set sysroot 与 set solib-absolute-prefix 是同一条命令,实际上,set sysroot是set solib-absolute-prefix 的别名. 2. set solib-search-path设置动态库的搜索路径,该命令可

coredump调试的使用

一,什么是coredump 跑程序的时候经常碰到SIGNAL 或者 call trace的问题,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下(这里为什么说需要满足一定的条件呢?下面会分析)会产生一个叫做core的文件. 通常情况下,core文件会包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆栈信息等,我们可以理解为是程序工作当前状态 存储生成第一个文件,许多的程序出错的时候都会产生一个core文

prologue epilogue

https://www.hackerschool.com/blog/7-understanding-c-by-learning-assemblyhttps://www.hackerschool.com/blog/5-learning-c-with-gdb Last time, Alan showed how to use GDB as a tool to learn C. Today I want to go one step further and use GDB to help us und

后台开发知识点总结(一、Linux和OS)

偶然在知乎上看到想要从事linux后台开发需要的能力集锦,总结的挺全面的,鉴于自己贫弱的记忆力,还是在这里总结一下供以后查看,顺便检验一下自己. 1. 命令:netstat tcpdump ipcs ipcrm 这四个命令的熟练掌握程度基本上能体现实际开发和调试程序的经验 在<TCP/IP>协议一书中,经常使用到netstat和tcpdump这两个命令,netstat常用于显示各种网络信息与自己的主机信息,例如路由表信息.tcpdump用于网络数据包的截获分析,例如三次握手,数据交换等等的显示

linux下生成core dump文件方法及设置【转】

转自:http://blog.csdn.net/mrjy1475726263/article/details/44116289 源自:http://andyniu.iteye.com/blog/1965571 core dump的概念: A core dump is the recorded state of the working memory of a computer program at a specific time, generally when the program has te

内核栈回溯原理学习应用

这篇主要是杭州操作系统大会前辈的文档进行学习,因为文档公开了故而总结学习一下,如若其中有侵权的地方,请及时联系我,谢谢 ..............................................................................................................................................................................................

[Debug]用gdb分析coredump文件

1,系统默认是不产生coredump文件的,需要用以下命令使系统产生coredump文件 查看core文件的限制,此时为0,即不成生core文件 ulimit -c 0 打开core文件的限制,不限制core文件的大小,使程序可以产生core文件 ulimit -c unlimited ulimit -c unlimited 2,以下是内存访问错误示例 [cpp] view plaincopy 1 #include<stdio.h> 2 int main() 3 { 4      char*