1、./test 程序运行错误
Segmentation fault (core dumped)
通常都是指针错误引起的。但这不像编译错误一样会提示到文件一行,而是没有任何信息。一种办法是用gdb的step,一步一步寻找。但要step一个上万行的代码让人难以想象。 我们还有更好的办法,这就是core file。
2、gdb core 调试
如果想让系统在信号中断造成的错误时产生core文件,我们需要在shell中按如下设置:
设置core大小为无限 ulimit -c unlimited
设置文件大小为无限 ulimit unlimited
发生core dump之后,用gdb进行查看core文件的内容,以定位文件中引发core dump的行:
gdb [exec file] [core file]
如: gdb ./test test.core 在进入gdb后, 用bt命令查看backtrace以检查发生程序运行到哪里,来定位core dump的文件->行。
另外需要注意的是,如果你的机器上跑很多的应用,你生成的core又不知道是哪个应用产生的,你可以通过下列命令进行查看:file core
./test= error reading variable: can't compute CFA for this frame
4、原因查找
Bug 16215 - SPARC: can't compute CFA for this frame
https://sourceware.org/bugzilla/show_bug.cgi?id=16215
January 15th,2015: GDB 7.8.2 Released!
*The latest version of GDB,version 7.8.2,is available for download.
This is a minor corrective release over GDB 7.8.1,fixing the following issues:
PR symtab/17642 ([7.8 regression] internal-error: resolve_dynamic_struct: Assertion `TYPE_NFIELDS (type) > 0' Failed.)
PR binutils/17677 (_bfd_elf_get_synthetic_symtab runs in O(n^2) complexity)
PR gdb/16215 (SPARC: can't compute CFA for this frame)
PR gdb/17525 (target-async: breakpoint commands not executed when program run from -x script)
PR cli/17828 ([7.8 regression] -batch -ex r breaks terminal)*
from:https://www.gnu.org/software/gdb/news/
5、解决方法
将gdb更新到7.8.2版本以上
当前版本:
$ gdb --version
GNU gdb (GDB) 7.7
更新版本:
wget http://ftp.gnu.org/gnu/gdb/gdb-7.12.tar.gz
tar zxvf gdb-7.12.tar.gz
cd gdb-7.12
./configure
make
sudo make install
原文链接:https://www.f2er.com/centos/379364.html