Linux下gdb调试用法

本文介绍了如何使用GDB在Linux环境下调试C/C++程序,包括编译、设置断点、运行及常用调试命令如list、break、step、next、continue等的使用方法,帮助开发者更好地理解和排查程序问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

稍微小小介绍一下

 gdb是GUN组织开发的Linux下的调试利器。一般用于调试C/C++程序。

GDB主要有以下4个功能:

        1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。

        2、可让被调试的程序在你所指定的调置的断点处停住。

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

        4、你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG。下

直接进入主题

这是本次用来测试的代码

#include <stdio.h>

void f(){
    printf("hello linux!!\n");
}


int i=1;


int main(){
    f();
    i=4;
    printf("linux group!!\n");
    printf("i=%d\n",i);
}

 一.使用gdb调试(以test.c为例子哦)

使用gcc -g test.c -o test(或者g++ -g test.cpp -o test调试.cpp程序)命令编译需要调试的C语言程序,得到二进制文件test(也可定义为其他的)。

 二.执行gdb ./test.out进入调试状态

 在倒数第二行显示:Reading symbols from (no debugging symbols found)表示一切正常,奥耶

三.执行所需要的命令

(gdb)list【num】:显示以第num行为中心的10行代码。

 (gdb)list main :显示函数名为main的函数的源程序。

  (gdb)list :显示当前行后面的代码。

 

 (gdb)list - : 显示当前行前面的代码。

 

  (gdb)  b  main :为函数打断点,在进入函数的时候停止。

 

(gdb)b 路径+:+num  例如【(gdb)b  /home/aurora/cplus/gdb/test.c : num 】。 

 

(gdb)r     [run的缩写]  :开始运行程序,程序运行到断点的位置会停下来,如果没有遇到断点,程序会一直运行下去。

 

(gdb) n  [next的缩写]  :执行当前行语句,如果该语句为函数调用,不会进入函数内部执行代码。 

 

回车 :会显示后面代码的执行。 

 

(gdb) s  [step的缩写]  :执行当前行的语句,如果该语句为函数调用,则进入函数内部执行其中的第一条语句。注意注意!!如果函数是库函数或者第三方提供的函数,用s也是进不去的,因为没有源代码,如果是自定义的函数,只要有源码就可以进去。 

 

(gdb)info b  :显示设置的所有断点

 

(gdb) d [num] :删除第几个断点 

 

 也可以直接 d 1 2 ,同时删除第一个和第二个断点。

(gdb)  c   [continue的缩写]  :继续程序的运行,直到遇到下一个断点。

 

(gdb)   bt   [backtrace的缩写]  :查看各级函数调用以及参数  

 

 (gdb)  watch  变量名     :设置观察点

 

(gdb)info r   :查看寄存器

 

(gdb)  q   [quit的缩写]    :终止调试 

 

 最后我将常用的命令小小总结一下

 gdb的命令还有很多很多,多敲一敲它就能搞定它。

小小文案送给大家共勉吖

吹灭读书灯,一身都是月。

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值