得到seg故障后,我使用了gdb a.out core命令。后来我用backtrace(bt),这是gdb告诉我的为什么我会遇到seg故障?
警告:核心文件可能与指定的可执行文件不匹配。
警告:错误读数在0xfbe8
警告共享库列表条目:错误读取共享库列表条目在0x74c085ff
核心是通过“family.out smith.ged”产生。
程序以信号11终止,分段故障。
(poundsign)0 0x08086a6在count_records()
(GDB)BT
(poundsign)0 0x080486a6在count_records()
(poundsign)1 0x08048906在__libc_csu_init()
(英镑)2 0xbf85624c在??()
(英镑)3 0xbf856310在?? ()
回溯停止:以前的FRAM内这个框架
可能有人给我一些见解,以什么可能导致此赛格故障(堆栈损坏?)?通常gdb给我的程序中的行号,但这次它没有。
你有机会访问你并不拥有的内存。除此之外,可能需要看代码! – 2013-02-26 04:49:15
gdb输出表明您正在查看由不同二进制文件生成的核心文件。要调试你的应用程序,你可以在gdb中运行它(使用“gdb binary”,然后是“run”命令),或者使用像valgrind之类的东西。 – vanza 2013-02-26 04:50:17
绝对使用valgrind进行segfaults。 – matzahboy 2013-02-26 04:50:33