linuxgdb与shell命令
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
continue, step, next,finish
❖ continue(简写:c), step(简写:s), next(简写: n),finish(简写:fin)实现恢复程序运行和单步调试功能。
➢ continue 运行到下一个断点
➢ step 进行函数内部 ➢ next 单步执行
continue, step, next,finish
➢ print 变量名称 ➢ print /格式 变量名称
➢ print 变量名称 查看变量值
➢ print /格式 变量名称 以某种格式显示变量名称。格式种类如下所示:
❖ x 按十六进制格式显示变量。 ❖ d 按十进制格式显示变量。 ❖ u 按十六进制格式显示无符号整型。 ❖ o 按八进制格式显示变量。 ❖ t 按二进制格式显示变量。 ❖ a 按十六进制格式显示变量。 ❖ c 按字符格式显示变量。 ❖ f 按浮点数格式显示变量。
源自文库 backtrace, frame
backtrace(简写:bt), frame(简写:f)为调试堆栈 的命令
➢ backtrace 打印当前的函数调用栈的所有信息
➢ frame 栈层i 切换到第i层栈 在frame命令前一般先调用backtrace命令,
frame 栈层i就是切换到通过backtrace命令查 看到的栈层i。
➢ rwatch 全局变量名称 如果全局变量被读取则程序在全局变量被读取 的位置停止
➢ awatch全局变量名称 如果全局变量被读取或修改则程序在全局变量 被读或写的位置停止。 上面命令的全局变量如果是指针,上面的命令 可能不起作用。
break,watch
➢ info watchpoints ❖ 查看设置的watch点。info break同时显示
delete、disable、enable
➢ disable断点号i 断点号j … 使断点号i,j,...的断点无效即断点号为 i,j,…的断点未删除但已经不生效
➢ enable 断点号i 断点号j … 使断点号i,j,…的断点有效 disable使断点暂时不使用,并没有删除 如果想继续使用只要enable即可。
break断点与watch断点。故可以用info break 来查看
delete、disable、enable
❖ delete(简写:d)、disable(简写:dis)、
enable(简写:ena)为维护断点的命令 ➢ delete 断点号i 断点号j …
为删除断点号为i, j, …的断点。如果delete后 没有参数则删除所有断点。 断点号:设置的第几个断点。可以通过info break命令查看
是查看本程序中设置断点
break,watch
❖ watch命令设置观察点。与watch相关的命令 如下所示
➢ watch ➢ rwatch ➢ awatch ➢ info watchpoints
break,watch
➢ watch 全局变量名称 如果全局变量值发生变化则程序在全局变量发 生变化位置停止
list
❖ 使用list命令时需要将程序的源代码与可执行 程序放到同一磁盘上且源代码与编译程序时 的目录结构相同。否则执行list命令没有结果 显示。在测试线上代码与程序不在同一磁盘 上,执行list命令没有结果显示。
❖ print(简写:p)为查看当前程序的运行数据。 通常命令使用格式有两种
break,watch
❖ break(简写为:b)命令来设置断点 有几种设置断点的方法:
➢ break 函数名 ➢ break 文件名file:行号line ➢ break 行号line ➢ break … if 条件 ➢ info break
break,watch
➢ break 函数名 是在一个函数上设置断点,如果程 序运行到此函数则程序停止
list
❖ list为显示源代码命令。一般有如下 几种使用方法
➢ list
➢ list ➢ list 函数名function ➢ list 文件名file:行号num ➢ list 行号num
list
➢ List 显示当前行后面的源程序。
➢ list 显示当前行前面的源程序。 ➢ list 函数名function 显示函数名为function的函数的源程序。 ➢ list 文件名file:行号num 显示文件名为file行号为num的源程序。 ➢ list 行号num 显示当前文件行号为num的源程序。
调试一个新进程
❖ 确认程序可以进行gdb调试后,gdb调试一个 新的进程方式如下所示 gdb 程序名称 例如gdb test程序 gdb test
调试一个正在运行的进程
❖ 调试一个正在运行的进程为如果程 序已经运行,在运行时通过log, 黑匣子或其他功能发现正在运行的 程序出现问题,此时可以通过gdb 调试正在运行的程序。调试正在运 行程序的步骤如下所示
1. 查找正在运行的进程号(pid) 2. 执行命令 gdb –p 进程号
3. 查找正在运行程序的进程号的方式很 多。一般使用ps -ef命令。
GDB调试命令
❖ Gdb调试命令是进行gdb调试时使用的命令。下面将 对每个命令进行说明。
break,watch delete,disable,enable continue, step, next,finish thread,info thread backtrace, frame list print x call run
➢ finish 跳出函数
thread,info thread
❖ thread,info thread为操作线程的命令 ➢ thread 线程序号i
切换到线程序号为i的线程 ➢ info thread
查看当前程序中的所有线程 这两个命令通常一起使用,一般先通过命令info thread 查找到线程的序号再切换线程。使用info thread命令 后显示的结果的第一列为线程的序号
➢ break 文件名file:行号line 是在文件名为file文件的line行上设 置断点。
➢ break 行号 line 是在当前文件的line行上设置断点
break,watch
➢ break … if 条件 是设置条件断点,程序运行时满足if后的条件,
运行到断点处才停止。 ➢ info break