linux中的gdb调试
gdb是在程序运行的结果与预期不符合时,可以使用gdb进行调试
注意:使用gdb调试时要在编译上加-g参数
gcc -g -c hello.c
启动gdb调试:
gdb file 对gdb进行调试
设置运行参数:
set args 可指定运行参数
show args 可以查看设置好的运行参数。
启动程序:
run:程序开始执行,如果有断点,停在第一个断点处。
start:程序开始向下执行下一行(在第一条语句停止)
显示源代码:
list显示的是源代码
list - 回到当前文件开头
list line :打印源代码第line行的上下文内容
list func:打印源代码中func函数的内容
list file:1 打印file文件第一行的上下文内容
list file:func 打印file文件func函数的内容
当前文件已经是add.c:
一般来说:
打印当前行的上五行,下五行,显示函数则是上两行,下八行。默认是十行。
我们也可以自行更改:
set listsize count :设置一次显示源代码的行数
show listsize: 查看listsize的设置
断点操作:
b line 在第line行设置断点
b func 在func函数处设置断点
b file:line
b file:func
i b 查看断点信息
disable n 使n号断点无效
enable m 使n号断点有效
delete n 删除n号断点
条件断点:
b file:8 if val== 5 在file文件第八行当val等于5时断点
调试代码:
next 单步跟踪,函数调用当作一条简单语句,不会进入函数体
step 单步跟踪,会进入函数体内
finish 退出进入的函数(退不出,删除函数内的断点)
until 在一个循环体单步跟踪时,这个命令可以运行程序直到退出循环体(退不出,删除循环内的断点)
continue 继续运行程序(若有断点跳到下一个断点)
打印变量:
print count 打印count 的值
自动显示:
display 变量名
i display 显示自动显示变量的信息
disable display n 使n号变量无效
enable display n 使n号变量有效
删除自动显示:
undisplay 变量名
delete display m
ptype 变量 查看变量的类型
退出gdb调试:
quit命令