Domin1c0's Blog

A technical blog sharing my journey in programming, development, and open source.

View on GitHub
20 July 2025

Gdb

by

gdb 调试

gdb 介绍

GBD(GNU Debugger)是 GCC 的调试工具,其功能强大,主要可以帮助完成四方面功能:

生成调试信息

GDB 主要调试C/C++的程序,调试前,要在编译过程中把调试信息加到可执行文件中。使用编译器(cc/gcc/g++)的-g参数:

gcc -g hello.c -o hello

启动 gdb

#program就是想执行的文件,一般在当前目录下
gdb program

显示源代码

GDB可以打印出所调试程序的源代码,可以用 list 命令打印程序的源代码,默认打印 10 行,list 用法如下:

list linenum    #打印第linenum行的上下文内容
list function   #显示函数名为function的函数源程序
list    #显示当前行后面的源程序
list -  #显示当前文件开始处的源程序
list file:linenum   #显示file文件下第n行
list file:function  #显示file文件的函数名为function的函数源程序
#一般是打印当前行的上5行和下5行,如果显示函数则是上2行下8行,默认是10行,当然,也可以定制显示范围,使用下面命令可以设置第一次显示源程序的行数
set listsize count  #设置一次显示源代码的行数
show listsize       #查看当前listsize的设置

设置断点

简单断点-当前文件

多文件设置断点-其他文件

#在源文件filename的linenum行处停住
b filename:linenum
#在源文件filename的function函数的入口处停住
b filename:function

查询所有断点

条件断点

维护断点

delete m n | m-n    #删除断点
disable m n | m-n   #使断点m和n(使用-为m到n)失效
enable m n | m-n    #使无效断点有效

调试代码

查看变量的值

查看运行时变量的值

自动显示变量的值

#删除某个自动显示
undisplay num | delete display num
#删除多个
delete num1 num2
#删除一个范围
delete display m-n
#使一个自动显示无效
disable display num
#使多个自动显示无效
delete num1 num2
#使一个范围的自动显示无效
delete display m-n
#使一个自动显示有效
enable display num
#使多个自动显示有效
enable display num1 num2
#使一个范围的自动显示有效
enable display m-n

查看修改变量的值

tags: Linux - 基础指令