0
点赞
收藏
分享

微信扫一扫

gdb调试器

兽怪海北 2022-02-08 阅读 44
linux运维

gdb调试


什么是gdb

gdb的安装

Ubantu系统

apt install gdb

CentOS系统

yum install gdb

调试前的准备

① 写一个会发生错误的代码test.c

#include <stdio.h>

void f(int a[])
{
    for(int i=0; i<200; i++)
    {
        a[i] = i;
    }
}

int main(int argc, char const *argv[])
{
    int a[100];
    f(a);

    return 0;
}

② 如果希望编译后的程序可以被调试,必须在编译的时候加入-g选项

gcc test.c -o test -g

man手册中对 -g 选项的介绍

③ 启用gdb调试器

gdb test

基本调试命令

命令缩写说明
listl浏览待调试的语句,可以理解为cat命令
breakb设置断点,b 20表示在第20行设置断点;条件断点,b 20 if i==100表示当且仅当变量i等于100时,第20行的断点生效
deleted取消断点,d 20表示取消第20行的断点
runr启动待调试程序,直至遇到断点
nextn让程序运行到下一句,如果是函数调用,不进入函数内部
steps让程序运行到下一句,如果是函数调用,则进入执行第一条语句。如果该函数为库函数,是无法进入的
printp查看变量的值,p i表示查看变量i的值
continuec继续运行程序,直至遇到断点
quitq退出gdb调试器

调试步骤演示

① 浏览待调试的语句

② 在第13行设置断点
在这里插入图片描述
③ 启动待调试程序

④ 单步运行,进入函数内部

⑤ 查看变量i的值

⑥ 运行20步,查看栈内存信息

⑦ 设置条件断点

⑧ 发现问题:数组已经越界,但程序仍在运行

⑨ 退出gdb调试器

举报

相关推荐

0 条评论