Linux下的gdb调试器,是一款GNU组织开发并发布的UNIX/Linux下的程序调试工具。在进行调试时,要主义gdb进行调试的是可执行文件,而不是源代码文件。因此要先通过gcc编译生成可执行文件才能用gdb进行调试。
在gcc编译的时候,要加上选项“-g”,这样编译出的可执行代码中才能包含调试信息,否则gdb无法载入该可执行文件。gdb是命令行调试环境,调试程序都在提示符“(gdb)”后输入相应的命令,gdb的命令很多,可以在提示符后输入help进行查找。
(gdb)l 查看源文件,一次显示10行
(gdb)list/l 行号 查看指定位置的代码
(gdb)b 函数名/行号 在某函数或指定位置设置断点
(gdb)info b 查看断点信息(有多个断点,Num显示断点序号)
(gdb)r 行号 gdb默认从第一行开始运行,如果要指定行开始运行,则使用该命令
(gdb)p 变量名 查看指定变量的值
(gdb)set 变量=设定值 修改变量值。gdb显示变量时都会在对应值前加“%n”标记,以后再引用的话可以直接使 用 “%n”,提高效率。
(gdb)n或s 单步运行程序。若有函数,调用时s会进入该函数,而n不会进入该函数。
(gdb)c 查看完变量或堆栈后可以输入“c” 命令恢复程序的正常运行,把剩余的程序执行完。
(gdb)q 退出gdb环境
在gcc编译的时候,要加上选项“-g”,这样编译出的可执行代码中才能包含调试信息,否则gdb无法载入该可执行文件。gdb是命令行调试环境,调试程序都在提示符“(gdb)”后输入相应的命令,gdb的命令很多,可以在提示符后输入help进行查找。
常用的gdb命令
命令格式 | 作用 |
list 行号|<函数名> | 查看指定位置的程序源码 |
info break | 显示断点信息 |
run | 运行程序 |
print 表达式 |变量 | 查看程序运行对应表达式和变量的值 |
next | 单步恢复程序运行,但不进入函数调用 |
step | 单步恢复程序运行,且进入函数调用 |
continue | 继续执行函数,直到函数结束或遇到新断点 |
break | 设置断点 |
(gdb)l 查看源文件,一次显示10行
(gdb)list/l 行号 查看指定位置的代码
(gdb)b 函数名/行号 在某函数或指定位置设置断点
(gdb)info b 查看断点信息(有多个断点,Num显示断点序号)
(gdb)r 行号 gdb默认从第一行开始运行,如果要指定行开始运行,则使用该命令
(gdb)p 变量名 查看指定变量的值
(gdb)set 变量=设定值 修改变量值。gdb显示变量时都会在对应值前加“%n”标记,以后再引用的话可以直接使 用 “%n”,提高效率。
(gdb)n或s 单步运行程序。若有函数,调用时s会进入该函数,而n不会进入该函数。
(gdb)c 查看完变量或堆栈后可以输入“c” 命令恢复程序的正常运行,把剩余的程序执行完。
(gdb)q 退出gdb环境