C语言调试工具GDB【1】安装和初步

1.什么是GDB

ubuntu上可以用来调试C,C++程序的debug工具。

2 如何安装GDB?

保证你的电脑上已经装有gcc、g++、cmake。

1. 下载最新的gdb

wget https://ftp.gnu.org/gnu/gdb/gdb-10.1.tar.gz
2. 解压包

tar -xzvf gdb-10.1.tar.gz
3. 生成makefile

cd gdb-10.1/
mkdir build
cd build
../configure
4. 编译安装

make编译时会出现tex相关错误,所以先安装 textinfo

sudo apt-get install texinfo
make -j8
sudo make install
 

2.GDB功能及其对应命令

GDB功能强大,调试命令也有很多。但是对常见命令并不多,如下表所示:

命令

描述

参考示例

gdb

进入gdb调试

gdb

help

显示帮助信息

help

quit(q)

退出gdb调试环境

file  

加载被调试的可执行程序文件(文件是经过编译之后形成的可执行文件,在编译时,应该加上-g 选项,比如 gcc -o test_gdb test_dgb.c -g)

file test_gdb

list  行号

列出第几行开始的源代码

backtrace(bt)

查看各级函数调用及参数

finish

连续运行到当前函数返回为止,然后停下来等待命令

frame(f)  帧编号

选择栈帧

info(i)  locals

查看当前栈帧局部变量的值

list(l)

列出源代码,接着上次的位置往下列,每次列十行

list  函数名

列出某个函数的源代码

next(n)

执行下一行语句

print(p)

打印表达式的值,通过表达式的值可以修改变量的值或者调用函数

run

运行调试的程序(如果程序中没有设置断点,则程序会一直运行到结束或者出现异常结束,如果设置断点,则会在断点处停止)

r(run)

break 

break  if condition

break 

在某一行设置普通断点。

(运行到该行即停止)

在某一行设置条件断点

(运行到改行满足条件停止)

在某一个函数调用处设置断点

(运行到函数调用处即停止)

b(break) 24        (行号)

b 24 if index == 3  (条件)

b getSum  (函数名)

delete breakpoints 断点号

删掉此号的断点

clear

清空所有的断点信息

clear

continue(c)

从当前位置开始连续运行程序,直到下一个断点或者程序结束

c(continue)

set  var

修改变量的值

start

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

step(s)

执行下一行语句,如果有函数则进入到函数中

display  变量名

跟踪查看某个变量,每次停下来都显示它的值

disable  breakpoints 断点号

禁用此断点

enable  断点号

启用此断点

info(i)  breakpoints

查看当前设置了哪些断点

undisplay  跟踪显示行号

取消跟踪显示

watch

设置观察点

info(i)   watchpoints

查看当前设置了哪些观察点

x

从某个位置开始打印存储单元的内容,全部当成字节来看,而不区分哪个字节属于哪个变量

3.举例说明

有程序mytest.cpp代码如下

#include <stdio.h>
int func(int n)
{
         int sum=0,i;
        for(i=0; i<n; i++)
        {
                sum+=i;
        }
         return sum;
 }
 
int main()
{
        int i;
        int result = 0;
        for(i=1; i<=100; i++)
        {
                result += i;
        }

       printf("result[1-100] = %d /n", result );
       printf("result[1-250] = %d /n", func(250) );
}

3.1 编译的要点

对源程序进行编译,加上-g选项,使其可以进行调试。其结果是生成可执行文件test_gdb,并且可以对其进行gdb调试(对于该命令的详细解释,可以查看gcc命令)

gcc   -o   test_gdb   mytest.cpp   -g

3.2 如何进入gdb环境

进入gdb调试:

gdb

如上图最后一行所示,代表进入gdb调试,等待用户命令输入。

3 .3 加载被跟踪文件

加载文件

file  test_gdb

显示加载成功。

3.4  显示程序段

list

3.5 如果在设置断点之前,输入r

run

程序正常运行,并且停留在第一条执行语句上,等待继续操作。

参考文章:

GDB调试从基础到精通实例 - azraelly - 博客园

ubuntu-mate下载:

下载地址为:Choose an architecture | Download (ubuntu-mate.org)

猜你喜欢

转载自blog.csdn.net/gongdiwudu/article/details/121008130