1. GDB的功能:
1.1. 启动被调试的程序
1.2. 让被调试的程序在指定的位置停住
1.3. 当程序被停住的时候,可以检查程序的状态(如变量值)。
2. GDB使用流程
2.1. 编译生成可执行文件(-g表示:生成的可执行文件具有可调试的信息):gcc -g test.c -o test
2.2. 启动GDB(gdb + 可执行文件):gdb test
2.3. 在main函数处设置断点:break main
2.4. 运行程序:run
2.5. 利用更加丰富的gdb命令对程序进行调试
3. GDB命令(括号中是命令的缩写)
3.1. list(l) :查看程序
3.2. break(b)函数名 :在某函数入口处添加断点
3.3. break(b)行号 :在指定行添加断点
3.4. break(b)文件名:行号 :在指定文件的指定行添加断点
3.5. info break :查看所有设置的断点
3.6. delete 断点编号 :删除断点
3.7. print 变量名 :打印变量的数值
3.8. next(n) :单步运行程序(不进入子函数)
3.9. step(s) :单步运行程序(进入子函数)
3.10. continue(c) :继续运行程序
3.11. set var=value :设置变量的值
3.12. quit(q) :退出gdb
3.13. 打条件断点:break(b)行号 if i=10 当i=10的时候才停下来。
3.14. finish运行程序,知道当前函数结束
3.15. watch 变量名:对指定便利进行监控
3.16. 打条件断点:break(b)行号 if i=10 当i=10的时候才停下来。
list 命令用于列出源码
(gdb) help list # 查看list命令帮助
(gdb) list # 查看代码执行位置附近10行,假设 15-24
(gdb) list # 再显示10行,即25-34
(gdb) list 38 # 查看第38行周围的 10 行,即33 - 42
(gdb) list - # 查看上一个list命令查看的代码之前的10行,即23-32行
(gdb) list 3,19 # 查看3-19行
(gdb) list main # 查看main函数周围的10行代码
(gdb) list flow.c:23 # 查看flow.c文件第23行周围的10行
(gdb) list flow.c:hello # 查看flow.c文件中函数hello周围的10行
(gdb) list *0x12345678 # 查看地址为 0x12345678 的符号附近的10行代码
|
search/forward-search/reverse-search 命令用于在源码中搜索
usage: search <regular expression>
(gdb) help search #查看search命令帮助
(gdb) help forward-search #查看forward-search命令的帮助
(gdb) help reverse-search #查看reverse-search命令的帮助
(gdb) search hello #从当前位置向前查找含有"hello"的第一行
(gdb) search [0-9]\{1,\} #从当前位置向前查找含有数字的第一行
(gdb) reverse-search ^# #从当前位置向后查找以‘#’开头的第一行
|
阅读(1682) | 评论(0) | 转发(0) |