断点的设置和数据输出的命令应该是gdb的核心内容
一、在进行GDB调试之前,需要导入代码:
(gdb)cd /.../... (cd到uwaloha.o文件相应的路径下)
(gdb)file uwaloha.o
那么可执行文件是怎么来的呢?下面举例说明一下:
[easie@localhost gdb-test]$ cd /.../... (cd到 bugging.cc文件相应的路径下)
[easie@localhost gdb-test]$ g++ -o bugging -g bugging.cc (得到可执行文件bugging)
[easie@localhost gdb-test]$ ./bugging (可直接运行代码,输出结果)
进入gdb调试环境:
[easie@localhost gdb-test]$ gdb
(gdb)file bugging (导入可执行文件)
二、 常用命令
l : 输出代码,输出当前上下各10行的代码 b 行数 : 在那一行上设置断点 r: 运行整个程序,直至遇到断点 s: 单步继续执行(进入函数) n: 单步继续进行 (不进入函数,直接把子函数一并运行完) q: 退出gdb d num : num为断点编号, 删除该断点 c : continue , 继续运行直至下一个断点 p exp : 查看变量exp的内容 k:kill掉当前运行的程序(然后再用r来重新调试)
1、(gdb)list 1 //查看源文件,列出前十行代码(简写为:l 1)
2、(gdb) [enter] //继续按enter键,可以重复上一命令
3、(gdb)break n //在第n行设置断点
(gdb)info break // (或 i b)查看断点信息
(gdb)d n //删除在第n行设置的断点
4、(gdb)s //(step)单步调试,进入函数内部
5、(gdb)r //(run)运行整个程序,直到遇到断点
6、(gdb)p b //(print b)查看变量
7、(gdb)bt //查看函数堆栈
8、(gdb)c //continue,继续运行直到下一个断点或主函数结束
9、(gdb)finish //退出函数
10、(gdb)q //(或quit)退出gdb调试