[c/c++] GDB读书笔记(转贴)

本文总结了GDB调试器的基本命令,包括断点管理、数据查看、文件操作、程序运行控制及堆栈追踪等,旨在帮助开发者深入了解并高效使用GDB。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

按:

  了解基本的命令总比被IDE完全包装之后更能让开发人员更深入的了解调试器,所以转贴一篇文章。

 

关于断点的命令:
awatch                                用来为一个表达式设置观察点,在表达式的值发生改变时,或者是当表达式的值
被度曲的时候,程序都会停止运行。
格式:awatch 要设置观察点的表达式
break                                用来设置断点。
格式:break 要设置断点的行号
clear                                清除断点。
格式:clear 要清楚的断点所在的行号
commands                                        在遇到断点之后执行特定指令而设。
格式:commands 断点号。
condition                                        在满足一定条件时才在指定的行上设置断点。
格式:condition 断点编号 条件表达式
delete                                清楚断点或自动显示的表达式。
格式:delete 断点的编号或者表达式
disable                                使断点暂时失效。
格式:disable 断点编号
enable                                恢复暂时失效的断点。
格式:enable 断点编号
ignore                                在一定范围内,忽略用户设置的断点。
格式:ignore N CONT
tbreak                                设置临时断点。作用一次。
格式:tbreak 设置临时断点的行号
watch                                为一个表达式设置观察点。当表达式的值发生改变时,程序就会停止运行。
格式:watch 要设置观察点的表达式
关于数据的命令:
display                                用来显示一些表达式的值
格式:display 要显示值的表达式
info display                                        显示当前所有的要显示值得表达式的有关情况。
格式:info display
delete display                        删除一个要显示值得表达式。
格式:delete display 删除显示的表达式的编号
disable display                        暂时屏蔽那些不需要显示的表达式。
格式:disalbe display 屏蔽显示的表达式的编号
enable display                        使显示值被屏蔽的表达式恢复显示。
格式:enable display 需要显示的表达式的编号
undisplay                                        结束某个表达式值的显示。
格式:undisplay 不需要再显示值的表达式
whatis                                显示某个表达式的数据类型。
格式:whatis 需要查询类型的表达式
print                                打印表达式值,也可以用来打印内存中从某个变量开始的一段区域的内容。
格式:print 需打印的表达式
ptype                                用来给出类型定义
格式:ptype 参数
set                                用来为变量赋值的
格式:set 变量=表达式
关于文件的命令:
add-shared-symbol-files                                用来从动态的连接映射的共享目标文件中装入符号表。
add-symbol-file                        用来从已经动态装入的文件中装入符号表。
格式:add-symbol-file FILE ADDR
cd                                用来改变当前工作目录的。
core-file                                        使某个文件成为core dump,从而可以检查内存和寄存器。
directory                                        用来向源文件搜索路径中增加一个目录。
格式:directory 要增加的目录
file                                命令是用来装入待调试程序的命令。
格式:file 要装入的文件的名称
list                                用来进行文件内容列表
list命令可使用的非空的参数有以下几种方式:
LINENUM:当前文件的LINENUM行;
FILE:LINENUM:指定文件的LINENUM行;
FUNCTION:当前文件的FUNCTION函数;
FILE:FUNCTION:指定文件的FUNCTION函数;
*ADDRESS:列出包含该地址的文件。
格式:list 要列表的开始行号
forward                                用来从列表当前行开始向后查找第一个匹配某个字符串的程序行。
格式:forward 要匹配的字符串
load                                用来动态的往正在调试的程序中装入文件,并记录它的符号表,准备连接。
格式:load 准备装入的文件名称
path                                用来向目标文件的搜索路径中增加目录的。
格式:path 要增加到搜索路径中的目录名称
reverse-search                        从列表当前行开始向前查找第一个匹配某个字符串的程序行。
search                                和forward 命令的用法是完全一致的。
关于程序运行的命令:
cont                                使程序字信号发生后或是停在断点之后再继续运行。
handle                                用来对信号设置处理函数的。
格式:handle 信号 信号处理
jump                                用来指定程序开始调试的指令或地址的。
格式:jump 行号或是指令地址
kill                                用来结束当前程序的调试。
格式:kill
next                                用来继续程序的运行的,它越过子程序调用。
格式:next N 或是空
nexti                                用来单步执行一条指令的。
step                                用来执行一条语句,它也不越过子程序的调用,而是跟踪到子程序内部。
stepi                                用来执行一条指令,它也不越过子程序的调用,而是跟踪到子程序内部。
关于堆栈的命令:
backtrace                                        用来打印栈桢(stack frame)指针的,他的使用格式和功能和比命令完全相同

格式:backtrace 要打印出来的栈桢指针的个数
frame                                用来打印栈桢的。
格式:frame 要打印的栈桢的编号
select-frame                        用来指定要选择的栈桢的编号。
本人学习/复习GDB时写的命令总结。。。希望对各位有所帮助。
Written by choatrue

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值