第03课:GDB常用的调试命令概览
先给出一个常用命令的列表,后面结合具体的例子详细介绍每个命令的用法。
命令名称 命令缩写 命令说明
run r 运行一个程序
continue c 让暂停的程序继续运行
next n 运行到下一行
step s 如果有调用函数,进入调用函数内部,相当于step into
until u 运行到指定行停下来
finish fi 结束当前调用函数,到上一层函数调用处
return return 结束当前调用函数并返回指定值,到上一层函数调用处
print p 打印变量或寄存器值
backtrace bt 查看当前线程的调用堆栈
frame f 切换到当前调用线程的制定堆栈,具体堆栈通过堆栈序号指定
thread thread 切换到指定线程
break b 添加断点
tbreak tb 添加临时断点
delete del 删除断点
enable enable 启动某个断点
disable disable 禁用某个断点
watch watch 监听某一个变量或内存地址的值是否发生变化
list l 显示源码
info info 查看断点/线程等信息
ptype ptype 查看变量类型
disassemble dis 查看汇编代码
set args 设置程序启动命令行参数
show args 查看设置的命令行参数
上面只列了一些常见的命令,对于一些不常见的命令(如file命令)就不列举了,不建议可以记忆这些命令,因为确实有点多,找几个程序代码实际联系一下很快就能记住,至于要不要采用,大家还是根据自己的学习习惯来。当GDB输入命令时,对于一个命令可以缩写成什么样子,只需要遵循如下两个规则即可。
---一个命令缩写时不能出现多个选择,否则GDB就不知道对应哪个命令了。举个例子,输入th,那么th对应的命令有thread和thbreak,这样GDB就不知道哪个了,需要更具体的输入,GDB才能识别。
---GDB有些命令虽然也对应多个选择,但是有些命令的简写是有规定的,例如,r就是命令‘run’的简写,虽然输入‘r'时,你的本意可能是’return‘命令。
总之,如果记不清楚,可以直接使用命令全称,每个命令都是很常见的英文单词,通俗易懂不难记忆。
如果还不熟悉GDB调试,建议认真阅读以下文章。
最新文章
- CString转换为LPSTR和LPSTR转化为CString
- CSS代码规范
- python中的内存管理
- JAVA创建并写入内容到xlsx文件
- LR11启动卡修改
- sql点滴39—解决数据库日志文件过大的问题
- 测试heightlight
- 基于容器微服务的PaaS云平台设计(二)通过kubernetes实现微服务容器管理
- Python 数据分析Windows环境搭建
- [PHP]日志处理error_log()函数和配置使用
- 第三章 熟悉常用的HDFS操作
- 潭州课堂25班:Ph201805201 django 项目 第三十三课 后台文章标签查询提交到前台,删除功能实现(课堂笔记)
- PythonStudy——函数的导入 Import of functions
- jquery-2.0.3 源码分析 整体架构
- D. Mysterious Crime
- 给kali linux2.0装一个中文输入法
- BZOJ1103 [POI2007]大都市meg dfs序 线段树
- js的命名空间 &;&; 单体模式 &;&; 变量深拷贝和浅拷贝 &;&; 页面弹窗设计
- CAEAGLLayer
- C语言编程学习不难学,是你没找对方法!
热门文章
- 【DVWA】Brute Force(暴力破解)通关教程
- 通过BDC批量修改物料文档信息 MM02
- 配置XFCE4的时钟显示格式
- 【Java学习笔记】LinkedList JDK1.6
- mybatis整合spring,使用org.mybatis.spring.mapper.MapperScannerConfigurer扫描出现问题
- 错误:expected initializer before ";***";
- 【ABAP系列】SAP ABAP7.40新语法简介第一篇
- nginx下配置vue前端项目
- java锁机制的面试题
- java课堂疑问解答与思考2