专栏首页mlLinux GDB常用命令一栏

Linux GDB常用命令一栏

Linux GDB 常用命令如下

1.启动和退出gdb

(1)启动:gdb ***:显示一段版权说明; (*** 表示可执行程序名)

(2)退出:quit。有的时候输入quit后会出现相关提示:类似于“(y/n)”,输入y

2.显示和查找程序源代码

(1)list :显示10行代码,但是我为什么没有显示成功呢?

(2)list 5,10:显示源文件第五行到第十行的代码

(3)list t4.c:5,10:显示源文件中第五行到第十行的代码,在跳是含有多个源文件的次序时使用;

(4)list get_sum:显示get_sum函数周围的代码//什么叫周围的代码呢?

(5)list t4.c :get_sum:显示源文件t4.c中第五行到第十行的代码,在跳是含有多个源文件的次序时使用; (6)如果在调试中运行linux命令,则可以在gdb的提示符下输入shell命令. (gdb)shell ls (7)search forward用来从当前行向前查找第一个匹配的字符串;            search get_sum   forward get_sum (8)reverse_search 用来从当前行想前查找第一个匹配的字符串:  Example:  reverse_search main

3.执行程序和获得帮助;        gdb -q test 或者file test只是装入程序,程序并没有运行。如果要程序开始运行,在gdb提示符下输入run即可。        如果想要详细了解gdb某个命令的使用方法,可以用help 命令 Example:(gdb)help list   (gdb)help all

4.设置和管理断点 (1)以行号设置断点:(gdb)break 7  (2)以函数名设置断点:(gdb)break get_sum (3)以条件表达式设置断点:方法一:break 行号或者函数名 if  条件.  Example:  (gdb)break 7 if i==99                                                        方法二:watch 条件表达式,下面是具体的举例:                                                        方法三:awatch;用来给表达式设置断点,在表达式的值发生改变或者表达式的值杯读取的时候,程序暂时停止;   (4).查看当前设置的断点:info breakpoints     Num     Type           Disp Enb Address    What     解释:Num列表示断点的编号,Type指明类型,类型位breakpoints说明是中断。Disp指示中断点在生效一次后是否就失去作用,如果是则为dis,不时则为keep。     Bnb表明当前中断点是否有效,如果是y,不是则为n。Address列表中断所处的内存地址。What列出中断发生在哪个函数的第几行。

5.使断点失效或者有效 使用“disable  断点编号”命令可以是某个断点失效,程序运行到该段点时不会停下来而是继续运行。

使用“enable 断点编号”命令可以是某个断点恢复有效。

6.删除断点 disable只是让某个断点暂时失效,断点依然存在与程序中。如果要彻底的删除某个断点,可以使用clear或者delete命令。 (1)clear:删除程序中所有的断点; (2)clear 行号:删除此行中的断点 (3)clear 函数名:删除该函数的断点 (4)delete 断点编号:删除指定编号的断点。如果一次要删除多个断点,各个断点编号以空格隔开。

7.查看和设置变量的值 (1)print  变量或表达式 --- print  变量=值:对变量赋值 --- print  表达式@要打印的值的个数n:打印以表达式值开始n个数

(2)whatis命令:显示某个变量或表达式的数据类型。格式:whatis 变量或者表达式 (3)set 命令:给变量赋值,格式:set variable 变量=值        将上面实例中的print i=200改为set variable i=200可以得到同样的效果//这个不懂矮。。        除了这个用法外,set命令还有一些其他用法。比如可以针对远程调试进行设置,可以用来设置gdb一行的字符数等。 8.控制程序的执行 (1)continue命令:让程序继续运行,直到下一个断点或者运行完为止。格式:continue (2)kill命令:用于结束当前程序的调试

(3)next和step命令    区别:如果遇到函数,next会把函数调用当作一条语句来执行,再次输入next会执行函数调用后的语句;

   而step则会跟踪进入函数,一次一条的执行函数内的代码,直到函数内的代码执行完,在进行函数调用后的语句; (4)nexti和stepi命令:用来单步执行一条机器指令,注意不是单步执行一条鱼据。单步执行一条语句使用next和step命令。通常一条语句有多条机器指令构成的。    注意的是:gdb的一些命令可以简写,比如list可以用li来代替,continue命令可以用cont来代替。

9. Linux GDB命令与Visual Studio Debug下命令对比:

                                Linux                                                   windows

     进入调试                       gdb *.exe                                             F5

                                                  quit                                     

     增加/取消断点                    break  LineNumber                    F9

                      clear   LineNumber 

    单步运行        next                                                      F10

                                                  step                                                      F11

     开始调试运行      run                                                       F5

  运行到下一个断点    continue                                             F5

     结束调试        kill                                                       shift+F5

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ubuntu 使用sudo apt-get update 出现 被配置多次导致无法升级错误解决方法

    这个周六周末在考虑升级自己GPU开发机,在琢磨使用docker来配置tensorflowGPU环境,在升级软件的时候爆出了如下错误 在 /etc/apt/sou...

    Gxjun
  • hdu----(4513)吉哥系列故事——完美队形II(manacher(最长回文串算法))

    吉哥系列故事——完美队形II Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/327...

    Gxjun
  • hdu----(2222)Keywords Search(ac自动机)

    Keywords Search Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32...

    Gxjun
  • VisualStudio 断点调试详解

    本文详细告诉大家 VisualStudio 断点调试的功能和使用方法,本文使用的是最新 VisualStudio2019 的功能,也许在你看到这篇博客的时候这个...

    林德熙
  • GDB使用详解

    一、打开GDB 1、gdb filename 加载该文件到gdb 2、gdb file filename 如果gdb filename失败,可以在打开gd...

    李海彬
  • 熟练使用IDEA的断点调试(Breakpoint),大大提升你调试代码的效率(行断点、属性断点、异常断点、条件断点、远程debug...)【享学Java】

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    YourBatman
  • GDB调试指南-断点设置

    在介绍之前,我们首先需要了解,为什么需要设置断点。我们在指定位置设置断点之后,程序运行到该位置将会“暂停”,这个时候我们就可以对程序进行更多的操作,比如查看变量...

    编程珠玑
  • 待补充 | ​Chrome调试工具常用功能整理

    windows: ctrl + shift + i mac: cmd + opt + i

    咸鱼学Python
  • MyEclipse2017 CI 断点无效

      在第3种情况下,在 MyEclipse2017 CI主菜单 --> Run --> Skip All Breakpoints 被默认勾选,从字面可以看出来,...

    黑泽君
  • Android Studio你不知道的调试技巧

    写代码不可避免有Bug,通常情况下除了日志最直接的调试手段就是debug;那么你的调试技术停留在哪一阶段呢?仅仅是下个断点单步执行吗?或者你知道 Evaluat...

    weishu

扫码关注云+社区

领取腾讯云代金券