用gdb调试程序时,常常很困惑一些命令的使用,要么是不知道这个命令,要么忘了命令的使用方法。接下来是小编为大家收集的linux下gdb常用的调试命令,希望能帮到大家。

linux下gdb常用的调试命令

gdb常用:

run 启动程序运行

next 单步执行(不到函数内部)

step 单步执行,跟踪到函数内部

finish 继续执行,直到当前函数结束

continue 继续执行,直到下一个断点

jump 9 直接跳到指定行

list 显示源码

l 3,10 显示特定范围的源码 l main显示函数的源码

set listsize 50 修改源码显示行数

break 设置断点

b main设置函数断点

b 9 设置指定行断点

b 将下一行设置为断点

b test if a == 10 设置条件断点

delete 删除断点

d 3 删除指定的断点

condition 修改条件 condition 4 a == 90

info 查看信息

info threads 查看线程信息

info breakpoints 查看断点信息

info locals 显示局部变量

info args 显示函数变量

info registers 显示寄存器数据

thread 2 切换线程

where 查看调用堆栈(bt 或者 info s)

frame 查看当前堆栈帧

frame 8 查看指定堆栈帧信息

info frame 查看当前堆栈帧更详细的信息

print a 打印变量信息

print/x a 十六进制输出变量信息

print a + b 可以进行表达式计算

print $eax 显示某个寄存器的数据

x/nfu 0×300098 显示指定地址的内存数据

n 显示内存单位,长度

f 格式(除了 print 格式外,还有 字符串s 和 汇编 i)

u 内存单位(b: 1字节; h: 2字节; w: 4字节; g: 8字节)

set vairiable a = 100 可以修改变量的值

commands 指定到了特定断点后执行的命令序列

whatis buf 显示变量的类型

dump memory 输出文件名 内存起始地址 内存终止地址

restore 文件名 binary 起始位置

watch buf buf的值一旦改变,会触发watchpoint

奇淫技巧:

cat ~/.gbinit gdb会从这个文件读取配置

cat ~/.gdb_history

呵呵,对于gdb时想要查看长的字符串老是显示不全,怎么半呢,gdb参看数组字符串时默认只是显示部分的数据,通过这个命令可以修改:

set print elements 0 默认这里设置是200,设置为0表示没有限制

还有其它一些set命令可以试试:

set print address

set print address on

打开地址输出,当程序显示函数信息时,GDB会显出函数的参数地址。系统默认为打开的

set print object

在C++中,如果一个对象指针指向其派生类,如果打开这个选项,GDB会自动按照虚方法调用的规则显示输出,如果关闭这个选项的话,GDB就不管虚函数表了。这个选项默认是off

show print pretty

查看GDB是如何显示结构体的

set print array

set print array on

打开数组显示,打开后当数组显示时,每个元素占一行,如果不打开的话,每个元素则以逗号分隔。这个选项默认是关闭的

set print null-stop

如果打开了这个选项,那么当显示字符串时,遇到结束符则停止显示。这个选项默认为off

set print pretty on

如果打开printf pretty这个选项,那么当GDB显示结构体时会比较漂亮

set print union

设置显示结构体时,是否显式其内的联合体数据。例如有以下数据结构

p string+n显示偏移n后的字符串内容,这个使用起来也是比较方便的

看了“linux下gdb常用的调试命令”还想看:

linux常用调试,linux下gdb常用的调试命令相关推荐

  1. linux下gdb常用的调试命令

    From: http://blog.csdn.net/schoolers/article/details/6743223 用gdb调试程序时,常常很困惑一些命令的使用,要么是不知道这个命令,要么忘了命 ...

  2. linux gdb打印内存命令,linux下gdb常用的调试命令--by流氓兔斯基

    用gdb调试程序时,常常很困惑一些命令的使用,要么是不知道这个命令,要么忘了命令的使用方法. 呵呵,有时迷茫了自己处在什么堆栈的深处,这是使用where命令能够清晰的看到自己的位置,有时在循环太多让人 ...

  3. linux 强制mv,CentOS下cp/rm/mv等命令强制覆盖操作

    CentOS下cp/rm/mv等命令强制覆盖操作 习惯了freebsd里的cp/rm/mv等命令遇到同名文件时直接覆盖操作,而在linux中(不一定是全部,可能是我使用的几种),使用cp/rm/mv命 ...

  4. 【软件开发底层知识修炼】十五 快速学习GDB调试二 使用GDB进行断点调试

    上一篇文章我们学习了使用GDB的最基本方法:[软件开发底层知识修炼]十四 快速学习GDB调试一 入门使用 本篇文章将学习GDB的断点调试.断点调试是一种非常重要的调试方法. 文章目录 1 断点类型 2 ...

  5. LINUX下GDB反汇编和调试

    Linux下的汇编与Windows汇编最大的不同就是第一个操作数是原操作数,第二个是目的操作数.而Windows下却是相反. 1. 基本操作指令 简单的操作数类型说明.一般有三种. (1)马上数操作数 ...

  6. Linux的vi编辑器下的常用命令

    vi编辑器有3种模式:命令模式.输入模式.末行模式.掌握这三种模式十分重要: 命令模式:vi启动后默认进入的是命令模式,从这个模式使用命令可以切换到另外两种模式,同时无论在任何模式下只要按一下[Esc ...

  7. linux samba yum,CentOS7下yum安装SAMBA全命令过程

    1.安装软件包 $sudo yum install samba samba-client 2.关防火墙(否则,这个服务是不允许连接的,不象SSH默认是允许连接,SAMBA因为不安全的原因,端口是被封掉 ...

  8. linux中多进程调试,linux下用gdb调试多进程

    今天来学习一下linux下gdb如何调试多进程,在学习之前我我们能先看一张表: 这张表是gdb调试的命令表,这对那些对gdb不熟的同学来说是非常有必要的. 一.多进程调试的命令 1.set follo ...

  9. gdb 调试_一文入门Linux下gdb调试(二)

    点击"蓝字"关注我吧 作者:良知犹存 转载授权以及围观:欢迎添加微信号:Conscience_Remains 总述     今天我们介绍一下core dump文件,Core dum ...

最新文章

  1. Ubuntu 12.10 安装 PHP
  2. excel调用python编程-如何在excel中调用python脚本
  3. 深入理解 python 中的赋值、引用、拷贝、作用域
  4. dubbo启动时检查服务
  5. No, Machine Learning is not just glorified Statistics
  6. 一位台湾校长的讲话。学习!!!
  7. C++ 11 深度学习(四)结构、权限修饰符
  8. urlib2和requests模拟登陆查询MD5
  9. 20.QT中插件编程
  10. 查询排序_MySQL查询性能优化
  11. C#如何将两个List集合合并
  12. 手动搭建latex公式渲染服务器
  13. mysql navicat授权_Mysql授权允许远程访问解决Navicat for MySQL连接mysql提示客户端不支持服务器请求的身份验证协议;考虑升级MySQL客户端...
  14. ucos-II之就绪表解读
  15. 解决DELL服务器每次开机提示F1F2,需要F1才可以进系统的方法
  16. 仓库选址(排序不等式)
  17. 20140419-MCSA 2012 Server R2 Command
  18. 手机计算机怎样调音乐,手机音乐EQ均衡器调节音效简单小技巧-均衡器设置
  19. Google Reader 推出简体中文版 Google(谷歌)阅读器
  20. IMX6DL 在Android4.4.2版本插入SD卡不能开机

热门文章

  1. Spring注解——使用@ComponentScan自动扫描组件
  2. 学习Spring Boot:(十二)Mybatis 中自定义枚举转换器
  3. 长春理工大学c语言实验题库,长春理工大学首届趣味心理知识竞赛初赛题库.doc...
  4. ubuntu php设置,关于ubuntu php环境设置详解-PHP问题
  5. linux主机熵值过小,tomcat在linux启动应用慢解决方式
  6. 为什么数据结构不用java_泛谈Java中的不可变数据结构
  7. IDEA——Maven的配置与使用
  8. Spring Boot 设置 ASCII banner 艺术字
  9. Eclipse使用————生成Get/Set、toString快捷键(不使用鼠标)
  10. matlab guide对话框+滑动条+弹出式菜单+列表框的使用