码迷,mamicode.com
首页 > 数据库 > 详细

gdb调试

时间:2019-01-30 14:10:42      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:include   tps   code   存在   ffffff   访问   span   string   地址   

在写大的代码量时,最难办的就是遇到段错误,gdb是一个很好的调试工具

参考链接:https://blog.csdn.net/runner668/article/details/79997523

https://blog.csdn.net/liuruiqun/article/details/50314313

1. 段错误是什么

一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址、访问了系统保护的内存地址、访问了只读的内存地址等等情况。这里贴一个对于“段错误”的准确定义(参考Answers.com):

2. 段错误产生的原因

2.1 访问不存在的内存地址

1 #include<stdio.h>
2 #include<stdlib.h>
3 void main()
4 {
5         int *ptr = NULL;
6         *ptr = 0;
7 }

2.2 访问系统保护的内存地址

1 #include<stdio.h>
2 #include<stdlib.h>
3 void main()
4 {
5         int *ptr = (int *)0;
6         *ptr = 100;
7 }

2.3 访问只读的内存地址

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
        char *ptr = "test";
        strcpy(ptr, "TEST");
}

2.4 栈溢出

#include<stdio.h>
#include<stdlib.h>
void main()
{
        main();
}

 

使用方法:

  使用 -g去编译源码,如将编译后的可执行文件命名为app

  1.gdb ./app

  2.run

  3.如果收到信号停止,可以执行  continue 继续执行

  4.可以用print  xxx查看段错误的原因

gdb调试

标签:include   tps   code   存在   ffffff   访问   span   string   地址   

原文地址:https://www.cnblogs.com/edan/p/10337658.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!