欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

gdb调试

程序员文章站 2022-12-29 21:53:03
恢复内容开始 1.gdb调试的是可执行文件,在gcc编译时加入 -g ,告诉gcc在编译时加入调试信息,这样gdb才能 调试这个被编译的文件 gcc -g tesst.c -o test 2. 命令格式:gdb 程序文件名 eg:gdb test file test gdb -q test 启动时不 ......

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

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

(0)
打赏 gdb调试 微信扫一扫

相关文章:

  • gdb调试

    Go接口interface

    [TOC] 接口是什么? Go 语言不是一种 “传统” 的面向对象编程语言:它里面没有类和继承的概念。 但是 Go 语言里有非常灵活的 接口 概念,... [阅读全文]
  • gdb调试

    模块的导入

    一.模块导入的过程 (1).先从sys.modules里查看模块是否已经被导入 (2).如果没有被导入,就依据sys.path路径寻找模块 (3).... [阅读全文]
  • gdb调试

    python深拷贝与浅拷贝

    可变对象与不可变对象 要理解深拷贝和浅拷贝,首先要理解可变对象和不可变对象。 不可变对象:该对象所指向的内存中的值不能被改变,修改对象的值时,由于其... [阅读全文]
  • gdb调试

    Django之Ajax文件上传

    请求头ContentType ContentType指的是请求体的编码类型,常见的类型共有3种: 1 application/x-www-form-... [阅读全文]
  • gdb调试

    如何保障Go语言基础代码质量?

    为什么要谈这个topic? 实践中,质量保障体系的建设,主要针对两个目标: 一是不断提高目标业务测试覆盖率,保障面向客户的产品质量;二就是尽可能的提... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

gdb调试
验证码: gdb调试