Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1907008
  • 博文数量: 211
  • 博客积分: 464
  • 博客等级: 下士
  • 技术积分: 3794
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-24 18:25
个人简介

阿弥陀佛

文章分类

全部博文(211)

文章存档

2020年(2)

2019年(3)

2018年(5)

2017年(6)

2016年(10)

2015年(9)

2014年(73)

2013年(90)

2012年(13)

分类: LINUX

2013-07-26 20:49:44

  前一阵编了大概3500+lines的代码,一直运行稳定,结果今天出现了segmentation fault的错误,这可怎么办? 用gdb 一行一行调吗?
  确实让人头疼,后来发现gdb功能强大,现分享解决方法:
  调试方法如下:
   1. gcc 编译的时候 -g
   2. 执行gdb filename

点击(此处)折叠或打开

  1. gdb> run arguments (cc1 will stop at the segmentation fault)
  2. gdb> where
  3. gdb> list
就可以显示如下代码了:
(gdb) where
#0  0x0000000000400e67 in __arc_list_splice (prev=0x7ffff7ec7000, next=0xaa07a8) at arc.h:43
#1  0x0000000000400e93 in __arc_list_remove (head=0xaa07f8) at arc.h:50
#2  0x0000000000401297 in __arc_move (cache=0x608010, obj=0xaa07e0, state=0x0) at arc.c:104
#3  0x000000000040186c in __arc_destroy (cache=0x608010) at arc.c:231
#4  0x0000000000404497 in lfs_fini () at lfs_main.c:132
#5  0x000000000040455b in main (argc=2, argv=0x7fffffffe6d8) at lfs_main.c:157

当各种方法都不行的时候,可以看/proc/pid/wchan里面的内核stack的信息。
阅读(3327) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~