前面已经有了一篇对gdb经常使用命令的总结。见 http://blog.csdn.net/u011848617/article/details/12838875

这里对眼下学过的gdb命令进行了较完整的整理。

1、使用gdb调试代码,就要在编译时加入-g选项。

2、gdb -q —————— 启动gdb时不输出版权说明

3、gdb打开文件:

  (1)gdb filename;

  (2)先输入gdb,然后在gdb命令行输入file filename。

4、gdb选项(gdb中好多命令都有自己的简写字母):

   不输入直接回车 ------------ 反复运行上一条命令

   q(quit) ------------------- 退出gdb

   file filename ------------- 打开文件filename

   l(list) ------------------- 显示10行代码。若再次执行则显示接下来10行代码

   list 5,10 ---------------- 显示第5到10行的代码

   list test.c:5,10 -------- 显示源文件test.c中第5到10行的代码

   list get_sum -------------- 显示get_sum函数周围的代码

   list test.c:get_sum ------- 显示源文件test.c中get_sum函数周围的代码

   shell XXX ----------------- 执行shell命令XXX

   search/forward str -------- 从当前行向前查找第一个匹配的字符串str

   reverse-search str -------- 从当前行向后查找第一个匹配的字符串str

   r(run) -------------------- 执行程序

   help XXX ------------------ 查看命令XXX的用法

   help all ------------------ 查看全部命令的用法

   whatis 变量或表达式 ------- 显示变量或表达式的数据类型

   set variable 变量=值 ------ 给变量赋值

   kill ---------------------- 结束当前程序的调试

   continue ------------------ 让程序继续执行,直到下一个断点或者执行完为止

   n(next) ------------------- 继续运行下一条语句,遇到函数把函数当作一条语句来运行

   step ---------------------- 继续运行下一条代码,遇到函数会跟踪进入函数

   nexti/stepi --------------- 单步运行一条机器指令

   watch 变量名 -------------- 设置变量监測点

   bt(backtrace) ------------- 显示程序当前执行位置和对当前位置的栈跟踪

   display 变量或表达式 ------ 加入观察点。以后每次执行命令都会显示相应变量或表达式的值

   undisplay num ------------- num为设置的display编号,能够用info display获取。不能用变量名

5、设置断点:

   b(break) 行号 ----------------------- 在第n行设置断点

   break fun_name ---------------------- 为函数fun_name设置断点

   break 行号或函数名 if 条件 ---------- 程序在执行中。当条件满足时。在某行中断暂停执行

   watch 条件表达式 -------------------- 程序执行中,满足条件时暂停执行,不须要写行号

   info breakpoints -------------------- 查看当前全部的断点

   disable 断点编号 -------------------- 使断点n失效

   enable 断点编号 --------------------- 使断点n有效

   clear ------------------------------- 删除本行断点(假设存在的话)

   clear 行号 -------------------------- 删除此行断点

   clear 函数名 ------------------------ 删除该函数的断点

   delete 断点编号 --------------------- 删除指定编号的断点

6、print命令:

   print XXX ------------------------------- 打印输出XXX的值

   print 变量 = 值 ------------------------- 对变量赋值

   print 表达式@要打印值的个数n ------------ 打印以表达式值開始的n个数

7、watch和display设置监測点的差别:

   watch监測仅仅有当监測的变量值发生变化时才显示变量,并且旧值和新值都会显示。

   display监測每一次执行命令都会显示变量的值,仅仅会显示变量的最新值。

再探gdb经常使用命令的更多相关文章

  1. 再探vim经常使用命令

     最開始学习过vim,见 http://blog.csdn.net/u011848617/article/details/12837873 之后以前不了了之,当再次学习后,发现经常使用命令的掌握还 ...

  2. 再探ASP.NET 5(转载)

    就在最近一段时间,微软又有大动作了,在IDE方面除了给我们发布了Viausl Studio 2013 社区版还发布了全新的Visual Studio 2015 Preview. Visual Stud ...

  3. gdb经常使用命令总结

    1: 对于在应用程序中增加參数进行调试的方法:    直接用 gdb app -p1 -p2 这样进行调试是不行的.    须要像下面这样使用:     #gdb app     (gdb) r -p ...

  4. Bash,Vim,gdb&git常用命令

    Bash 目录 pwd  //查看当前目录 mkdir dir1 dir2  //创建目录 tree dir1 mv test1.cpp test2.cpp dir1 dir  //移动文件/目录到目 ...

  5. 再探VIM配置

    再探VIM配置 最初找到这个发行版spf13-vim,在ubuntu上用的还比较方便,有很多插件:最近在mac上用,总是不兼容vim,用brew安装了最新的vim,还是跟系统不兼容,总是有问题,于是就 ...

  6. gdb各种调试命令和技巧

    陈皓:用GDB调试程序 GDB概述———— GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在UNIX平台 ...

  7. 【再探backbone 02】集合-Collection

    前言 昨天我们一起学习了backbone的model,我个人对backbone的熟悉程度提高了,但是也发现一个严重的问题!!! 我平时压根没有用到model这块的东西,事实上我只用到了view,所以昨 ...

  8. ViewPager+Fragment再探:和TAB滑动条一起三者结合

    Fragment前篇: <Android Fragment初探:静态Fragment组成Activity> ViewPager前篇: <Android ViewPager初探:让页面 ...

  9. 再探jQuery

    再探jQuery 前言:在使用jQuery的时候发现一些知识点记得并不牢固,因此希望通过总结知识点加深对jQuery的应用,也希望和各位博友共同分享. jQuery是一个JavaScript库,它极大 ...

随机推荐

  1. OpenFlow_tutorial_2_Install_Required_Software

    一.Required Software 我操作系统用的 ubuntu 18.04.vm image的OS是ubuntu14.04,这两个系统的GUI应该已经不兼容了,如果使用ubuntu18.04的主 ...

  2. iOS截取特定的字符串(正则匹配)

    有时候我们会有需求从一个字符串中截取其他的字符串,根据情况的不同,我们来分析几种方法~~ 一. 固定长度字符串中截取固定位置长度的字符串 // 这是比较简单的一种情况:比如截取手机号的后4位 let ...

  3. cpio - 存取归档包中的文件

    总览 (SYNOPSIS) cpio {-o|--create} [-0acvABLV] [-C bytes] [-H format] [-M message] [-O [[user@]host:]a ...

  4. 循环冗余校验(CRC)算法入门

    http://blog.csdn.net/liyuanbhu/article/details/7882789 前言 CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式.在嵌入式软件开发中,经常要 ...

  5. 09CSS高级定位

    CSS高级定位 定位方式——position position:static|absolute|relative static表示为静态定位,是默认设置.  absolute表示绝对定位,与下位置属 ...

  6. IDEA -- idea无法导入HttpServlet包解决方法

    IntelliJ IDEA 没有导入 servlet-api.jar 这个架包,需要你手动导入支持. 步骤1: 步骤2: 步骤3: 在弹出框中找到Tomcat安装路径 下的lib文件夹..中的Serv ...

  7. RabbitMQ之六种队列模式

    先学习一下RabbitMQ中的六种队列,只学习前五种,具体的官方文档地址是:http://next.rabbitmq.com/getstarted.html 导入maven依赖: <depend ...

  8. javaScript中计算字符串MD5

    进行HTTP网络通信的时候,调用API向服务器请求数据,有时为了防止API调用过程中被黑客恶意篡改,所请求参数需要进行MD5算法计算,得到摘要签名.服务端会根据请求参数,对签名进行验证,签名不合法的请 ...

  9. ie兼容的解决办法,6,7、8、9、10

    在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案百度也应用了这种方案去解决IE的兼容问题 百度源代码如下 <!Doctype html> ...

  10. 反连接NOT EXISTS子查询中有or 谓词连接条件SQL优化一例

    背景 今天在日常数据库检查中,发现一SQL运行时间特别长,于是抓取出来,进行优化. 优化前: 耗时:503s 返回:0 SQL代码 SELECT * FROM MM_PAYABLEMONEY_TD P ...