c语言段错误怎么解决(c语言常见错误总结)

所谓的段错误就是指访问的内存超出了系统所给这个程序的内存空间。

通常这个值是由gd tr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的 gdt表,后13位保存 相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的在cpu中的运行级别,指向 的gdt是由以64位为一个单位的表,在这张表中就保存着程序运行的代码段以及数据段的起 始地址以及与此相应的段限和页面交换还有程序运行级别还有内存粒度等等的信息。

几种典型的段错误1,

int main(void){[1]

char*s ="hello world";

*s ='H';

}

被装载时,系统把“hello world” 连同其它的字符串和const型数据放入到内存的只读区。执行时,一个变量s被设为指向该字符串的位置,当再试图向该位置写时,就会产生段错误。

2,

int*ptr = NULL;

*ptr =1;

因为该代码只创建了一个空指针,并没有指向一个具体空间,当赋值时,产生段错误。

3,

int main(void){

main();

return0;

}

无限递归,这会导致栈溢出,也会产生段错误。

利用gdb逐步查找段错误

这种方法也是被大众所熟知并广泛采用的方法,首先我们需要一个带有调试信息的可执行程序,所以我们加上“-g -rdynamic"的参数进行编译,然后用gdb调试运行这个新编译的程序,具体步骤如下:

xiaosuo@gentux test $ gcc -g -rdynamic d.c

xiaosuo@gentux test $ gdb ./a.out

GNU gdb 6.5

Copyright (C) 2006 Free Software Foundation, Inc.

GDB is free software, covered by the GNU General Public License, and you are

welcome to change it and/or distribute copies of it under certain conditions.

Type "show copying" to see the conditions.

There is absolutely no warranty for GDB. Type "show warranty" for details.

This GDB was configured as "i686-pc-linux-gnu"...Using host libthread_db library "/lib/libthread

(gdb) r

Starting program: /home/xiaosuo/test/a.out

Program received signal SIGSEGV, Segmentation fault.

0x08048524 in dummy_function () at d.c:4

4 *ptr = 0x00;

(gdb)

不用一步步调试我们就找到了出错位置d.c文件的第4行,其实就是如此的简单。

(0)

相关推荐

  • 宽带连接691错误怎么解决办法(宽带错误691是什么意思)

    Error 691是宽带用户经常遇到的一种错误提示,主要是由于域名错误.宽带欠费或硬件故障.那么,宽带连接错误691呢?你怎么修理它?这里是如何修复宽带连接错误691.连接错误691在此之前,我们先来 ...

  • vlookup常见错误及解决办法(vlookup错误的几种可能)

    作者:超人 转自:Excel之家ExcelHome这年头作为职业表亲,要说自己不会VLOOKUP函数,那可是要打屁屁的.VLOOKUP函数应用范围广.使用简便,是出镜率非常高的函数.可是这厮偶尔也会发 ...

  • 硬盘一些常见错误以及解决办法

    今天小编与大家分享的是硬盘的一些常见错误及解决办法。 常见故障一:系统不认硬盘 系统从硬盘无法启动,从A盘启动也无法进入C盘,使用CMOS中的自动监测功能也无法发现硬盘的存在。这种故障大都出现在连接电 ...

  • 百度win10直通车系统语言须为简体中文解决方法

    百度win10直通车部分用户在使用百度直通车升级Windows10进行兼容性检测的时候,无法通过操作系统的检测,百度win10直通车错误提示为"系统语言须为简体中文",下面小编就为 ...

  • Win10系统语言包安装失败解决办法

    Win10系统语言包安装失败解决办法.最近,不少刚刚升级win10正式版的用户都在问,Win10正式版系统语言包安装失败怎么办?为了帮助这些Win10爱好者,小编特意整理了一篇Win10语言包的安装教 ...

  • 网站后台生成错误的解决方法

    如果有人用过PHP程序,myqsl语言编辑的网站的站长应该偶尔会遇到一种情况,后台一生成就出现错误,生成之后,首页出现空白,但是网站内页还能打开,如果出现这种问题,很明显就是服务器的DNS设置有问题了 ...

  • 如何解决win10系统时间错误问题

    现在大部分电脑都是win10系统,有些用户遇到了时间错误问题,想知道如何解决,接下来小编就给大家介绍一下具体的操作步骤.具体如下:1. 首先第一步鼠标右键单击桌面空白处,在弹出的菜单栏中根据下图所示, ...

  • 向客户展示设计想法时常犯的错误及解决方法

    小编:作为设计师,向你的客户或者老板展示设计作品也是你的工作中必不可少的一个环节,甚至可以说是决定项目成败的最后的关键环节.一个优秀的设计师不仅需要有出色的设计能力,还要有良好的沟通和表达能力.如果因 ...

  • apache 403错误 Forbidden解决方法

    Apache,版本2.2.8,安装完成后,进行相关测试; 配置了下php的php.in文件,再次localhost打开发现错误: HTTP 错误 403 - 禁止访问,即403 Forbidden:Y ...

  • 安装更新win10系统出现80200056错误的解决方法

    一些windows系统用户,在更新安装win10系统时,用户在等待了一段时间后,系统更新界面一直不显示更新进度条,而过一会系统跟新提示无法安装window 10,并出现错误代码为80200056的提示 ...