Segmentation fault错误分析!!!

来源:百度知道 编辑:UC知道 时间:2024/05/22 22:11:54
do_cpu invoked from kernel context! in traps.c::do_cpu, line 1271:

$0 : 00000000 c01b2cc8 c01ae3e8 00000000 c01b1bac 00000001 00000001 00000002

$8 : 00000001 ffffe520 00002520 80341fa0 00000000 00000000 fffffffb ffffffff

$16: 00000000 c01b2ff8 ffffffe7 0000000e 80111f6c c01a8590 100f18ec 00000001

$24: 00000010 00000000 80b66000 80b67e38 c01af6e8 c01a88ec

Hi : 00000008

Lo : 63184000

epc : c01ae41c Not tainted

Status: 1000fc03

Cause : 1080002c

Process ok (pid: 188, stackpage=80b66000)

Stack: 80341fb8 8030f898 801120f4 00000002 80ac0720 c01a90c8 80111f6c

c01b2ff8 ffffffe7 0000000e 80111f6c c01a8590 100f18ec 00000001 c01a88ec

c01a8590 100f18ec 00000001 c01a88cc c01a8998 c01a8538 00000001 00000001

00000002 00000001 80cb91e0 c01b03f4 00000000 00000000 00000001 00000001

00000002 ffffffea 2aac3000 00000

教你一个方法,编译的时候加调试信息(-g),然后objdump -D xxx > debug
xxx就是-g编出来的可执行文件,debug是生成的堆栈表,里面会有函数调用关系,甚至每条语句的虚拟内存位置。在这个文件里查找段错误的堆栈地址。或者附近地址,你会有收获。

这种方法比较省事,更多项调试方法需要你自己学习。