一、引言

在Linux下开发,肯定少不了与gdb打交道,而gdb的命令又非常多,有些是不常用的但是特殊情况下却是必须的,因此记录在此,以便翻阅

二、基本命令

前面是命令全名,在不混淆的情况下,可以简写为后面的单个字符

list l : 列出源代码
run r : 运行程序
step s : 单步运行(进入函数内部)
next n : 单步运行(跳过函数执行)
continue c : 继续执行
print p : 打印变量值

p/x y:以16进制显示y的值,c表示字符,s表示字符创,f表示浮点数

ptype student:打印student的结构

finish fin:用于跳过s进入的函数的剩余部分。

until u:用于在不进一步的循环中退出,即不执行剩余的循环。until也可以和break一样后面跟参数,指定位置。

set x=12:把x的值设为12。

set args 参数列表 : 设置程序启动参数

info args:查看当前函数的参数
set print elements 0:设置print打印的字符数

s和n后面可以跟数字表示执行该命令的次数,例如s 3,表示连续执行step三次。

三、断点

b line : 加断点

tbreak line : 临时断点,只有第一次遇到该断点时才有效
info breakpoints :查看所有的断点

disable breaknum:禁用断点

enable breaknum:启用断点
delete breaknum:此处的breaknum是断点的序号,即用info breakpoints命令显示的断点最前面的那个数字

clear linenum:clear后的参数跟添加断点时是一样的,行号、函数名等。

condition n z==1 : 为断点添加条件,该命令的作用是使用断点n当z=1时才生效。n是断点编号,z是变量

watch z : 添加对变量z的监视器,当z的值变化时,程序即暂停

watch (z > 10) : 表示当z>10是程序暂停,这样方便调试循环

break break_arg if(condition):添加条件断点,break_arg是任何可以添加短点的位置,例如:break main if(argc>1)

四、多线程调试

info threads : 查看所有线程
thread n : 跳到另外一个线程

五、查看函数调用堆栈

backstrace bt : 查看函数调用堆栈

frame n : 查看函数调用堆栈中的某一层

默认当前栈帧序号为0,父栈帧为1,以此类推。

up/down命令分别可以调到父子栈帧

六、查看代码对应的汇编代码

disassemble /m main:查看main函数对应的汇编代码

set disassemble-flavor intel:设置汇编会Intel的x86汇编格式

info register:查看寄存器信息

Linux之实用GDB技巧的更多相关文章

  1. 实用小技巧:Notepad++直接连接Linux

    实用小技巧:Notepad++直接连接Linux 前言 号称编辑器之神的Vim对于只会用几个基础操作的本人而言,在编辑一些大型文本有那么些力不从心: 平时都是通过Xftp拖到本地,修改完后再覆盖回去: ...

  2. EF – 2.EF数据查询基础(上)查询数据的实用编程技巧

    目录 5.4.1 查询符合条件的单条记录 EF使用SingleOrDefault()和Find()两个方法查询符合条件的单条记录. 5.4.2 Entity Framework中的内部数据缓存 DbS ...

  3. PHP 常用函数库和一些实用小技巧

    PHP 常用函数库和一些实用小技巧 作者: 字体:[增加 减小] 类型:转载   包括文件读取函式,文件写入函式,静态页面生成函式,目录删除函式等   文件读取函式 //文件读取函式 function ...

  4. 最有用的Linux命令行使用技巧集锦

    最近在Quora上看到一个问答题目,关于在高效率Linux用户节省时间Tips.将该题目的回答进行学习总结,加上自己的一些经验,记录如下,方便自己和大家参考. 下面介绍的都是一些命令行工具,这些工具在 ...

  5. linux 常用命令及技巧

    linux 常用命令及技巧 linux 常用命令及技巧:linux 常用命令总结: 一. 通用命令: 1. date :print or set the system date and time 2. ...

  6. Chrome 实用调试技巧

    Chrome 实用调试技巧 2016-07-23 如今Chrome浏览器无疑是最受前端青睐的工具,原因除了界面简洁.大量的应用插件,良好的代码规范支持.强大的V8解释器之外,还因为Chrome开发者工 ...

  7. Linux下使用GDB调试程序

    问题描述:          Linux下使用GDB调试程序 问题解决:          (1)生成调试文件 注:         使用命令   gdb IOStream.c   -o IOStre ...

  8. GDB技巧整理

    https://blog.atime.me/note/gdb-tricks.html 整理常用的gdb技巧. 常用命令 常用的gdb命令... 启动gdb 直接运行 gdb --args prog a ...

  9. Vim实用小技巧

    Vim实用小技巧 一些网络上质量较高的Vim资料 从我07年接触Vim以来,已经过去了8个年头,期间看过很多的Vim文章,我自己觉得非常不错,而且创作时间也比较近的文章有如下这些. Vim入门 目前为 ...

随机推荐

  1. 深入分析JavaWeb Item40 -- 文件上传和下载

    在Web应用系统开发中,文件上传和下载功能是很经常使用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传.浏览器在上传的过程中是将文件以流的形式提交到server端的.假设 ...

  2. python学习:基础概念

    Python 包管理工具解惑 python packaging 一.困惑 作为一个 Python 初学者,我在包管理上感到相当疑惑(嗯,是困惑).主要表现在下面几个方面: 这几个包管理工具有什么不同? ...

  3. 动态加入改动删除html表格内容

    1.需求 须要实现收银台上加入改动删除商品信息时顾显能够实时看到其变化 2.解决 收银台和顾显通过tcp传输进行数据通信,顾显通过操作html中的表格进行数据加入改动和删除操作 3.代码 mytest ...

  4. HLJU 1221: 高考签到题 (三分求极值)

    1221: 高考签到题 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 9  Solved: 4 [Submit][id=1221">St ...

  5. Java小案例-(逃离迷宫)

    Java小案例-(逃离迷宫) 一,迷宫需求描述: 1,用户输入迷宫图(限制方形):字母1位墙,0为通,e为出口,m为入口,*为已访问的位置,用外围1围住迷宫 2,运行轨迹右,左,下,上 3,判断该迷宫 ...

  6. 【笔记】选择框 change 事件获取内容

    还记得之前做过一次js 的联动效果,在获取下拉框change事件后的 value 时,当时的我做得比较费劲. 现在看了高程的表单脚本那一章之后发现有一个更好的方法,那就是直接获取下拉框change 事 ...

  7. sudo 添加

    sudo 添加 /etc/sudoers 找到root  ALL=(ALL)  ALL那一行, 复制之后,修改用户名:

  8. JMeter 十三:生成 report dashboard

    参考:http://jmeter.apache.org/usermanual/generating-dashboard.html JMeter 3.x开始,可以生成HTML格式的report . 注意 ...

  9. POJ1125 Stockbroker Grapevine 多源最短路

    题目大意 给定一个图,问从某一个顶点出发,到其它顶点的最短路的最大距离最短的情况下,是从哪个顶点出发?须要多久? (假设有人一直没有联络,输出disjoint) 解题思路 Floyd不解释 代码 #i ...

  10. TI BSL in python

    今天花了一下午在这个上面,被这个工具整没脾气了快.花点功夫记录一下. 代码是在linux下下过来的: bzr branch lp:python-msp430-tools 看了下,有我想要的器件.然后想 ...