Chinaunix首页 | 论坛 | 博客
  • 博客访问: 303017
  • 博文数量: 118
  • 博客积分: 313
  • 博客等级: 二等列兵
  • 技术积分: 615
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-12 22:51
文章分类

全部博文(118)

文章存档

2012年(68)

2011年(50)

分类:

2011-12-30 21:48:29

原文地址:gdb解决段错误实践 作者:net_liufeng

    那句话怎么说的来着,祸不单行吧,在非常忙的时候,我之前一直在用的一个c程序,竟然给我报段错误,关键时刻掉链子,真是无语,没办法,gdb调试一下吧,还发现编译的时候没-g,我日啊。
    没办法,感觉可能是待处理的文件太大(17G)造成的,于是split成了22个文件,继续处理的时候,还是段错误,逼的没办法了,只好-g重新编译,祭出gdb,调试之,以下是大概过程:
gdb  handle_lastlog    启动gdb调试
set args test          设置程序运行时读取的文件
r 运行
bt 出现段错误时执行
up 0  进入段错误时的现场
info locals 看看当时的变量信息,这样就不用一个一个print了,比较方便。


查看了各个变量后,问题很明显,是有一个变量越界了,取到是负值,在接下来用这个值做文件描述符的地方,write的时候报了段错误。
    知道原因后,修改就很简单了,只需要给这个变量加个abs即可。

    之前看同事用过gdb查找段错误,当时我把这个技巧记录了下来,终于在昨晚发挥了用处,能解决这个问题真是太好了,很难想象在当时那么忙、那么多紧急的事情下,如果没有这个积累,再从头去google,会浪费多少时间,好了,这是第一次用gdb用的这么爽,希望我的python之旅能够比c更顺利。
阅读(1365) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~