zoukankan      html  css  js  c++  java
  • C语言gdb调试




    程序员写在编写程序的时候不可能是一帆风顺的,gcc编译器可以发现程序代码的语法错误,但不能发现程序的业务逻辑错误,调试程序是软件开发的内容之一。调试程序的方法有很多种,例如可以用printf语句跟踪程序的运行步骤和显示变量的值,本章节介绍一个功能强大的调试工具gdb。

    一、gdb的安装

    CentOS系统中,用root用户登录服务器,执行以下命令安装或升级。

    yum  -y  install  gdb 
    

    注意,如果您的服务器没有安装gdb,以上命令就会安装最新版本的gdb,如果已经安装了gdb,就会更新到最新版本的gdb,所以,以上命令不管执行多少次都没有问题。

    安装gdb,前提条件是服务器必须接入互联网。

    二、调试前的准备

    用gcc编译源程序的时候,编译后的可执行文件不会包含源程序代码,如果您打算编译后的程序可以被调试,编译的时候要加-g的参数,例如:

     gcc -g -o book113 book113.c 
    

    在命令提示符下输入gdb book113就可以调试book113程序了。

     gdb book113 
    

    三、基本调试命令

    命令 命令 缩写 命令说明
    set args 设置主程序的参数。 例如:./book119 /oracle/c/book1.c /tmp/book1.c 设置参数的方法是: gdb book119 (gdb) set args /oracle/c/book1.c /tmp/book1.c
    break b 设置断点,b 20 表示在第20行设置断点,可以设置多个断点。
    run r 开始运行程序, 程序运行到断点的位置会停下来,如果没有遇到断点,程序一直运行下去。
    next n 执行当前行语句,如果该语句为函数调用,不会进入函数内部执行。
    step s 执行当前行语句,如果该语句为函数调用,则进入函数执行其中的第一条语句。 注意了,如果函数是库函数或第三方提供的函数,用s也是进不去的,因为没有源代码,如果是您自定义的函数,只要有源码就可以进去。
    print p 显示变量值,例如:p name表示显示变量name的值。
    continue c 继续程序的运行,直到遇到下一个断点。
    set varname=v 设置变量的值,假设程序有两个变量:int ii; char name[21]; set ii=10 把ii的值设置为10; set name="西施" 把name的值设置为"西施",注意,不是strcpy。
    quit q 退出gdb环境。

    注意,在gdb环境中,可以用上下光标键选择执行过的gdb命令。

    四、课后作业

    gdb调试是程序员必须掌握的方法,多尝试一下,搞清楚每个命令的用法。

    九、版权声明

    C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。
    来源:C语言技术网(www.freecplus.net)
    作者:码农有道

    如果文章有错别字,或者内容有错误,或其他的建议和意见,请您留言指正,非常感谢!!!

  • 相关阅读:
    SD卡测试
    测试人员可能会遇到的问题
    HDU 1024 Max Sum Plus Plus
    HDU 1176 免费馅饼
    HDU 1257 最少拦截系统
    HDU 1087 Super Jumping! Jumping! Jumping!
    poj 1328 Radar Installation
    poj 1753 Flip Game
    HDU 1003 Max Sum
    HDU 5592 ZYB's Premutation(BestCoder Round #65 C)
  • 原文地址:https://www.cnblogs.com/wucongzhou/p/12498506.html
Copyright © 2011-2022 走看看