当前位置: 移动技术网 > IT编程>开发语言>C/C++ > gdb调试

gdb调试

2019年03月07日  | 移动技术网IT编程  | 我要评论

那一天仓央嘉措,aovo,led灯的优点

---恢复内容开始---

1.gdb调试的是可执行文件,在gcc编译时加入 -g ,告诉gcc在编译时加入调试信息,这样gdb才能
调试这个被编译的文件 gcc -g  tesst.c -o test
2.  命令格式:gdb 程序文件名 eg:gdb test file test
gdb -q test 启动时不输出版权说明
quit 退出gdb,结束调试
list: 查看程序源代码,显示10行
list 5,10: 显示5到10行的代码
list test.c:5, 10:显示源文件5到10行的代码,在调试多个文件时使用
list get_sum: 显示get_sum函数周围的代码
list test,c get_sum: 显示源文件get_sum函数周围的代码,在调试多个文件时使用
reverse-search  字符串 用来从当前行向前查找第一个匹配的字符串
 
run 程序开始执行
help list/all 查看帮助信息
 
break 设置断点
break 7 在第七行设置断点
break get_sum 以函数名设置断点
break 行号或者函数名 if 条件 以条件表达式设置断点
watch 条件表达式 条件表达式发生改变时程序就会停下来
awatch 和watch类似,在表达式值发生改变或者表达式值被读取时,暂停
 
next 继续执行下一条语句 ,会把函数当作一条语句执行
step 继续执行下一条语句,会跟踪进入函数,一次一条的执行函数内的代码
nexti 单步执行一条机器指令 通常一条语句由多条机器指令构成,不进函数
stepi 单步执行一条机器指令, 跟踪进入函数
 
info breakpoints 查看当前设置的中断点
num 断点编号
type 类型
breakpoints 说明是中断
disp 指示中断点在生效一次后是否就失去作用,是为dis, 不是为keep
enb 表明当前中断点是否有效,是为y,不是为n
address 表示中断所处的内存地址
what 列出中孤单发生在哪个函数的第几行
stop only if result == 5050 表明这是一个条件中断
disable 断点编号 是使某个断点失效
enable  断点编号 使某个断点恢复
 
clear 删除程序中所有的断点
clear 行号: 删除此行的断点
clear  函数名 删除该函数的断点
clear 断点编号 删除指定编号的断点,若要一次删除多个断点,各个断点编号以空格隔开
 
print 一般用来打印变量或表达式的值
print 变量或表达式 打印变量或表达式当前的值
print 变量 = 值 对变量进行赋值
print  表达式@n 打印以表达式值开始的n个数
whatis 显示某个变量或表达式的数据类型
 
set 给变量赋值
set variable 变量 =值
continue 让程序继续执行下去
 
kill 用于结束当前程序的调试
 
 

---恢复内容结束---

1.gdb调试的是可执行文件,在gcc编译时加入 -g ,告诉gcc在编译时加入调试信息,这样gdb才能
调试这个被编译的文件 gcc -g  tesst.c -o test
2.  命令格式:gdb 程序文件名 eg:gdb test file test
gdb -q test 启动时不输出版权说明
quit 退出gdb,结束调试
list: 查看程序源代码,显示10行
list 5,10: 显示5到10行的代码
list test.c:5, 10:显示源文件5到10行的代码,在调试多个文件时使用
list get_sum: 显示get_sum函数周围的代码
list test,c get_sum: 显示源文件get_sum函数周围的代码,在调试多个文件时使用
reverse-search  字符串 用来从当前行向前查找第一个匹配的字符串
 
run 程序开始执行
help list/all 查看帮助信息
 
break 设置断点
break 7 在第七行设置断点
break get_sum 以函数名设置断点
break 行号或者函数名 if 条件 以条件表达式设置断点
watch 条件表达式 条件表达式发生改变时程序就会停下来
awatch 和watch类似,在表达式值发生改变或者表达式值被读取时,暂停
 
next 继续执行下一条语句 ,会把函数当作一条语句执行
step 继续执行下一条语句,会跟踪进入函数,一次一条的执行函数内的代码
nexti 单步执行一条机器指令 通常一条语句由多条机器指令构成,不进函数
stepi 单步执行一条机器指令, 跟踪进入函数
 
info breakpoints 查看当前设置的中断点
num 断点编号
type 类型
breakpoints 说明是中断
disp 指示中断点在生效一次后是否就失去作用,是为dis, 不是为keep
enb 表明当前中断点是否有效,是为y,不是为n
address 表示中断所处的内存地址
what 列出中孤单发生在哪个函数的第几行
stop only if result == 5050 表明这是一个条件中断
disable 断点编号 是使某个断点失效
enable  断点编号 使某个断点恢复
 
clear 删除程序中所有的断点
clear 行号: 删除此行的断点
clear  函数名 删除该函数的断点
clear 断点编号 删除指定编号的断点,若要一次删除多个断点,各个断点编号以空格隔开
 
print 一般用来打印变量或表达式的值
print 变量或表达式 打印变量或表达式当前的值
print 变量 = 值 对变量进行赋值
print  表达式@n 打印以表达式值开始的n个数
whatis 显示某个变量或表达式的数据类型
 
set 给变量赋值
set variable 变量 =值
continue 让程序继续执行下去
 
kill 用于结束当前程序的调试
 
 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网