怎么用gdb调试段错误(用gdb调试程序笔记: 以段错误(Segmental fault)为例_哎呀呀!_百度空间)
这个笔记是我以前发表在电子科大的BBS上的 ,大家反应较好 ,特贴到这里和童鞋分享!
笔记内容:
1.背景介绍
2.程序中常见的bug分类
3.程序调试器(如gdb)有什么用
4.段错误(Segmental fault)介绍
5.gdb调试入门一 、背景介绍
这个笔记主要介绍开源的程序调试器(gdb)的入门知识 ,目的是使unix/linux环境的编程新手能够快速学会使用gdb调试程序的方法 ,同时也是对我使用gdb的一个经验总结 。
本文假设你能使用简单的unix/linux命令并能用gcc(GNU C Compiler , GNU C 语言编译器)编译程序 ,当然有编程经验更好 。:)
为帮助你理解和操作 ,我将使用我遇到过的真实事例来演示使用gdb调试有缺陷(bug)的程序过程 ,你看过这篇笔记后能自己动手练一下最好。二 、程序中常见的缺陷(bug)分类
程序(编译型程序 ,perl 、python,php等脚本程序除外)中常见的bug通常分为两类: 语法错误和逻辑错误 ,或者编译时错误和运行是错误 。
语 法错误(编译时错误)是我们在编写源代码时没有按照相关的语言规范(如ANSI C标准)导致编译时出错 ,编译失败 。这种错误的检查和调试一般是比较简单和直接的:因为编译器(如gcc)通常会明确告诉你错误的原因和大致的范围(注意 不一定是准确的错误行) 。例如下面的一个简单demo.c程序的第8行缺失了一个分号,gcc指示第10行前少了一个分号 。这就是一个典型的语法错误 。
geekard@geekard:~/test$ cat -n demo.c
1#include
2
3int
4main(){
5
6int n;
7
8printf("the n is:%c", n)
9
10return 0;
11}
geekard@geekard:~/test$ gcc demo.c -o demo
demo.c: In function ‘main’:demo.c:10:
error: expected ‘;’ before ‘return’创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!