gdb 和core dump

何谓 core dump

我们在开发(或使用)一个程序时,最怕的就是程序莫明其妙地当掉。虽然系统没事,但我们下次仍可能遇到相同的问题。于是这时操作系统就会把程序当掉时的内存内容 dump出来(现在通常是写在一个叫core file 里面),这个动作就叫作 core dump这个 core 文件能够使用 gdb进行事后的 debug

gdb -c core, 进去後打 where,就可以 show 出你是在程序哪一行当掉的,还有在当掉时在哪个 function , 这个 function是被哪个 function call ,而这个 function 又是被哪个 function call.... 一直到 main()

 

要使得程序在出现严重错误的时候能够产生 core,以便进行debug,需要先检查运行环境的一些参数。

dev@DEV67:~$ ulimit -a

core file size       (blocks, -c) unlimited

data seg size        (kbytes, -d) unlimited

file size            (blocks, -f) unlimited

max locked memory     (kbytes, -l) unlimited

max memory size       (kbytes,-m) unlimited

open files                   (-n) 1024

pipe size         (512 bytes, -p) 8

stack size           (kbytes, -s) 8192

cpu time             (seconds,-t) unlimited

max user processes           (-u) 7168

virtual memory       (kbytes, -v) unlimited

 

其中的 core file size”这个值被用来控制产生 core文件的大小。如果为 0,表示不产生 core文件。通常可以使用如下的命令重新设置这个值

ulimit -c unlimited

gcc -g test.c -o test

./test生成core文件

gdb ./test core文件

查看dump结果。

bt查看出错位置。


 


 

If you have any questions or ideas ,please feel free to contact me : )

thx.^^


QQ: 1623213673

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值