经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C 语言 » 查看文章
gdb调试
来源:cnblogs  作者:_lucky  时间:2019/3/7 8:52:59  对本文有异议

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

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 用于结束当前程序的调试
 
 

原文链接:http://www.cnblogs.com/luctsix/p/10485847.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号