本文主要是介绍coredump不打印的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考自:
https://www.cnblogs.com/hanyli/p/15352671.html
https://blog.csdn.net/cqbamboo/article/details/43970089
有时候运行程序的时候可能会直接死掉,只在终端留下一句(core dumped)
这个dump文件可以帮助我们调试,看到到底程序死哪了
理论上这个dump文件会生成在当前目录,但是经常都没有显示。
这个问题的原因有2个,一个是没有设置core file size的大小,我们可以通过
ulimit -c
指令查看当前的size设置的多少,然后通过
ulimit -c 1024 或者 ulimit -c unlimited
来设置他的大小为1024(不知道单位是啥,block?)或者无限制。
当然设置了后很可能还是找不到dump文件,这是因为文件目录没有设置,我们可以通过
cat /proc/sys/kernel/core_pattern 或者 /sbin/sysctl kernel.core_pattern
来查看设置的dump文件目录然后去里面找
当然可能还是找不到,我也不知道为啥。这时候可以手动设置到自己指定的目录下:
su #(要用root用户运行)
echo /mnt/sd/%e.%p.core > /proc/sys/kernel/core_pattern
就可以在自己设置的目录下面 /mnt/sd目录下面找到了
找到后我们可以通过
gdb 可执行程序(包括路径) 对应的corefile, 例如:
gdb ./apps/build_disk_index ~/build_disk_inde.3679.core
查看报错的位置了
这篇关于coredump不打印的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!