zoukankan      html  css  js  c++  java
  • 用gdb调试程序笔记: 以段错误(Segmental fault)为例_哎呀呀!_百度空间

    用gdb调试程序笔记: 以段错误(Segmental fault)为例_哎呀呀!_百度空间

    用gdb调试程序笔记: 以段错误(Segmental fault)为例
    2011-06-05 12:52

    这个笔记是我以前发表在电子科大的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<stdio.h>
         2    
         3    int
         4    main(){
         5    
         6        int n;
         7    
         8        printf("the n is:%c", n)
         9        
        10        return 0;
        11    }
    geekard@geekard:~/test$ gcc demo.c -o demo
    demo.c: In function ‘main’:demo.c:10:
    error: expected ‘;’ before ‘return’

  • 相关阅读:
    sql对查询为null的值赋默认值
    org.apache.coyote.http11.Http11Processor.service 解析 HTTP 请求 header 错误
    linux使用telnet测试端口
    grep和sed拉取线上日志,nc导入elk
    linux命令sed使用
    windows使用nc命令
    离线日志数据导入elk
    docker搭建elk日志收集系统
    curl: (60) Peer's Certificate has expired
    【Splay】【启发式合并】hdu6133 Army Formations
  • 原文地址:https://www.cnblogs.com/lexus/p/2592945.html
Copyright © 2011-2022 走看看