gdb使用技巧

函数

  • info functions                                                        列出可执行文件的所有函数名称
  • step(s) / next(n)                                                    使用gdb调试遇到函数(函数有调试信息)时,s可以进入函数,n不进入
  • set step mode on                                                  进入没有不带调试信息的函数
  • finish                                                                     单步调试函数时,如果不想跟踪时使用,函数会继续执行完并打印结果
  • return                                                                    单步调试时,如果不想跟踪时使用,不会继续执行而是直接返回
  • call / print                                                              直接调用函数执行
  • i(info) frame                                                          显示函数堆栈帧信息

断点  

  • b namespacename :: funcname                           在namespace中对函数设置断点
  • (anonymous namespace) :: funcname                 在匿名空间中对函数设置断点
  • b (path/file :)linenum                                             在当前文件某一行打断点
  • save breakpoints file-name-to-save                     保存设置的断点
  • tbreak(tb)                                                              设置临时断点
  • i b(info breakpoints)                                              查看断点
  • b linenum if condition                                            设置条件断点
  • ignore bnum count                                                忽略count次编号为bum的断点

观察点

  • watch                                                                    设置观察点,当一个变量值发生变化时,程序会停下来
  • watch expr thread threadnum                               设置观察点针对特定线程(编号为threadnum的线程)生效                    
  • rwatch(rw)                                                        设置读观察点,当发生读取变量行为时,程序就会暂停
  • awatch(aw)                                                       设置读写观察点,当发生读取或改变变量值的行为时,程序暂停

Catchpoint

  • tcatch                                                                    设置catchpoint只触发一次
  • catch fork                                                              为fork调用设置catchpoint
  • catch vfork                                                            为vfork调用设置catchpoint
  • catch exec                                                            为exec系列系统调用设置catchpoint
  • catch syscall 【name | number】                         为系统调用设置catchpoint

打印

  • x/s varname                                                          打印ASCII字符串varname的值
  • p vec                                                                     打印C++ STL容器的内容
  • set print elements unlimited / 0                             设置打印规模没有限制(本来最多输出200个元素)
  • p arrayname                                                          打印数组            
  • p array【index】@ num                                        从第index位打印连续num个数组元素
  • set print array-indexes on , p arrayname            设置打印索引下标,打印数组(包括索引和值)
  • bt full /  info locals                                                  显示各个函数的局部变量值
  • i proc mappings                                                     查看进程的内存映射信息
  • i files                                                                      更详细的输出进程的内存信息,包括引用的动态链接库等
  • whatis  / ptype varname                                        查看变量类型 / 详细类型信息
  • i variables varname                                               查看定义该变量的文件
  • x/nfu addr                                                              以f(x为16进制,o为8进制)格式打印从addr开始的n哥长度单元为u(b:byte,h:halfword / 2 byte,w:word / 4 byte, g:giant word / 8 byte)的内存值
  • list(l)                                                                 显示源代码以及行号
  • set print pretty on , p st                                      打印结构体
  • set print object on ,p p                                       按照派生类型打印对象
  •        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值