gdb简单学习
来源:互联网 发布:win7安装mac os10.11 编辑:程序博客网 时间:2024/05/16 02:49
gdb简单学习
编译环境:MinGW
示例程序:
//新建test.cpp交换两个整数的值//error functionvoid swap1(int a, int b) { int temp = a; a = b; b = temp;}int main() { int a = 3, b = 4; swap1(a, b); printf("%d %d\n", a, b); return 0;}
gdb常用命令:
示例程序和表格来自《算法竞赛入门经典》
1.译程序,命令行输入: g++ test.cpp -g //-g参数是告诉编译器生成调试信息,得到a.exe
2.开始gdb调试,输入命令:gdb a.exe
3.查看源码,命令:list(简写l), list n:显示第n行附近的几行代码,一般显示10行, 命令详细信息可以使用help name(list, break, ...)查看
启动gdb的时候可以加-tui参数来查看到源代码: gdb -tui a.out//这个有点6了,在windows试了下不支持TUI mode,于是在Linux环境下:
4.设置断点,运行程序,命令:b(break) n:在程序的第n行设置断点,当程序运行到第n行是暂停; r(run)开始运行程序
5.使用p打印变量a, 和 b,发现a和b输出都是4,所以设置第7行断点处没有执行
6.使用bt(backtrace)命令查看调用栈信息,两条栈帧信息swap1, main,函数调用会将相关信息入栈,函数结束可以将相关信息出栈,每一条栈帧对应一个未运行完成的函数
7.使用s(step)命令执行一条语句,n(next)也是执行下一步,区别如参考gdb常用命令表,这时b = temp, 执行完毕,p a 和 p b输出3 4,然后在s执行一条语句,完成swap1函数的执行,调用栈swap1栈帧信息出栈,这时bt查看调用栈信息,只有main函数调用信息
8.continue命令,参考上图
(暂时运行到这)
0 0
- gdb简单学习
- 学习记录-linux下GDB的简单使用
- gdb学习
- GDB学习
- gdb学习
- 学习GDB
- GDB学习
- gdb学习
- GDB学习
- gdb学习
- GDB学习
- GDB学习
- gdb学习
- 学习GDB
- [GDB-7] gdb 的学习
- GDB简单使用手册
- GDB超简单入门
- 简单使用gdb调式
- hibernate中的奇葩错误
- 欢迎使用马克飞象
- tshark抓包小结
- 理解伪元素 :before 和 :after
- CComObjectBase 和IUnknown 接口
- gdb简单学习
- 练习
- 杂花生树(三十二)
- 位运算之十进制转二进制 十六进制转二进制
- MySQL定时任务
- 窗体 对话框类(Dialog) 文件对话框(FileDialog) 面板(JPanel)
- 150. Evaluate Reverse Polish Notation
- AjAX的使用
- CSS学习笔记:功能查询