gbd调试总结
来源:互联网 发布:巴蜀中学教师待遇知乎 编辑:程序博客网 时间:2024/05/17 06:56
gdb调试
http://blog.csdn.net/lwbeyond/article/details/7839225
常用基本命令
file 载入待调试文件
run
next
step
breakpoint
print
大纲
输入控制
运行控制
中断控制 (两种点)
查看代码
查看变量信息 (一种点)
调用函数
查看调用堆栈
输入控制
有时候会遇到段错误
需要调试
但是调试过程中要输入很多数据怎么办?
可以使用重定向!
在开始运行程序的时候(s或r)
重定向输入输出均可
(gdb)r < test.in
运行控制
——start(s)
运行直到main函数
——run(r)
运行
——continue(c)
运行直到下一个断电
——finish(f)
用来跳出函数
函数运行玩后自动停止
——next(n)
下一条语句
——step(s)
单步调试
进入函数
——until
跳出循环
循环结束后自动停止
中断控制
断点是程序执行到某行代码是触发,观察点是程序访问某个内存单元时触发
——breakpoint(b)断点
b n
b 函数名
b n(函数名)if 条件
——watch 观察点
watch 变量名
当程序访问变量名指定的内存单元时,停止程序
查看代码
//输出从上次调用list命令开始往后的10行程序代码 (gdb) list //列出 line1 到 line2 行之间的源代码 (gdb) list line1, line2 //输出第 n 行附近的10行程序代码 (gdb) list n //输出函数function前后的10行程序代码 (gdb) list function
查看变量信息
——print(p) 打印
需要的时候就看一看变量的值
——display(disp)自动显示
一旦程序停止(遇到断电,或者单步进行)
都看一看变量的值
——watch 观察点
一旦访问这个变量,就看变量的值(
同时兼顾断点作用)
——whatis 查看变量类型
——特别:查看数组的值
查看一段连续的内存空间的值。
比如数组的一段,或是动态分配的数据的大小。
你可以使用GDB的“@”操作符,
“@”的左边是第一个内存的地址的值,
“@”的右边则你你想查看内存的长度。
例如,你的程序中有这样的语句: int *array = (int *) malloc (len * sizeof (int));
于是,在GDB调试过程中,你可以以如下命令显示出这个动态数组的取值:
p *array@len
查看程序信息info
——info args 当前参数
打印出当前函数的参数名及其值。
——info locals 局部变量
打印出当前函数中所有局部变量及其值。
——info break 断点
查看断点信息。
——info watchpoints 观察点
列出当前所设置了的所有观察点。
——info display 自动显示点
——info stack 查看栈中信息
——info frame 更详细的栈层地址信息
调用函数
——call
直接call function(arg…)
就能够查看结果
查看栈信息
——backtrace(bt) 查看调用栈
查看函数调用栈
查看其调用函数的信息
——frame 查看栈详细信息
可在后面加入数字n
n为栈的层次,然后可以用其他命令(info)查看此级别的变量信息
三种点的管理
——观察点与断点 的管理
断点和观察点在info break中都能看到,编号同时管理
disable num
enable num
delete num
(num是点的编号)
disable和enalbe不删除自动显示的设置,而只是让其失效和恢复
clear list_insert //删除函数的所有断点
clear list.c:list_delet //删除文件:函数的所有断点
clear 12 //删除行号的所有断点
clear list.c:12 //删除文件:行号的所有断点
——自动显示点
自动显示点在info display 中能看到
disable diaplay <点编号> // 关闭
enable diaplay <点编号> // 打开
delete diaplay <点编号> // 删除
特有操作
undisplay <编号> // 删除自动显示点
// 效果等同于delete
- gbd调试总结
- GBD调试
- linux gbd 调试代码
- GBD 调试(一)
- GBD调试简介
- 使用GBD调试多线程
- gbd常用调试步骤
- 使用bochs+gbd调试geekos
- GBD
- GBD调试程序(转)作者:Janlex
- 怎么样用GBD调试core文件
- gbd调试 错误 illegal instruction 4
- linux下C的GBD调试学习笔记
- gbd常用命令
- gbd info
- GBD linux debuging tools
- gbd/lldb使用2
- 命令行GBD前端—CGDB
- 【转】构建高可扩Web架构和分布式系统实战(上)
- APN authenticationtype="PAP" 参数不生效
- [OpenGL][SharpGL]用Polygon Offset解决z-fighting和stitching问题
- STL-list
- 【转】构建高可扩Web架构和分布式系统实战(下)
- gbd调试总结
- MD5加密
- 点击百度推送通知,跳转到指定Activity
- 天猫电商购物平台前端页面
- 手把手教你写Linux设备驱动---中断(二)--tasklet实现(基于友善之臂4412开发板)
- 史上最优惠的OPenMV模块-OPENMV更新固件
- Java程序的编码规范
- 抽象数据类型
- EasyUI之Linkbutton按钮