现在的位置: 首页 > 综合 > 正文

用gdb调试程序基础

2017年06月18日 ⁄ 综合 ⁄ 共 1232字 ⁄ 字号 评论关闭

GDB(GNU Debugger)是GNU开源组织发布的一个强大的Unix下的程序调试工具,基于命令行的工作模式,主要用来调试C和C++程序。通过GDB 能在程序运行时动态观察程序的内部结构、变量值和内存的使用情况。

使用GDB调试可执行文件之前时,必须使用带-g编译选项的gcc命令来编译源程序。

编译支持GDB调试的可执行文件:gcc test.c -o test -g

GDB调试:gdb test

GDB主要完成下面四个方面的功能:

1、启动程序,并且可以设置运行环境和参数来运行指定程序;

2、可以让被调试的程序在你所指定的断点处停住(断点可以是条件表达式);

3、当程序被停住时,可以检查此时你的程序中所发生的事;

4、支持单步调试;

5、使用GDB调试能帮助检查出程序的逻辑错误,纠正一个错误后可继续调试。

GDB基本命令:

1、GDB中源码查看相关命令

list/l  行号或函数名   //查看指定位置代码

    list  <linenum>     //显示程序第linenum行的周围的源程序

    list  <function>    //显示函数名为function的函数的源程序

    list                 //显示当前行后面的源程序

    list -              //显示当前行前面的源程序

    list  <filename:function>    //显示那个文件中的那个函数的源程序

           eg:list src/fun1.c:fun1

    list  <filename:linenum>   //显示那个文件的那一行周围的源程序

          eg:list  src/fun1.c:1

2、运行代码

运行代码:run/r  从头开始连续运行程序

start:开始执行程序,停在main函数第一行语句前面等待命令

3、设置断点与恢复命令

info b   info命令可以在调试时用来察看寄存器、断点、观察点和信号等信息。

break/b  行号或函数名  <条件表达式>      //在gdb中用break命令来设置断点

delete  断点号

disable  断点号    //禁用断点

enable  断点号   //启用断点

step/s  单步调试(进入子函数)

next/n  单步调试(不进入子函数)

continue/c  继续执行函数,直到程序结束或遇到新的断点

4、GDB中查看运行数据相关命令

print/p  表达式或变量     //查看程序运行时对应表达式或变量的值

5、GDB中修改运行参数相关命令

set variable 变量名=设定值

6、q 退出

直接按Enter键,会重复执行上一条命令

7、GDB中可以运行Linux下的shell命令

shell clear  gdb调试界面清屏

make+参数(等价于shell make+参数)

陈浩大哥在CSDN有个《用GDB调试程序》专题博文,就是写那个《跟我一起写Makefile》的,不错,可以看一下,体会一下GDB的强大!地址点击打开链接

抱歉!评论已关闭.