gdb常用命令

在调试程序的时候,gdb是一柄利器,恰当的使用gdb可以解决掉程序的许多bug。

gdb并不检查语法错误,那是gcc或者g++的事情,gdb干的是调试的事情。

说明:

(1)gdb 程序名
[corefile]之类的是代表命令的用法,[]中间的内容是可选项,即你可以加,也可以不加。

(2)如果需要重复执行一条命令,不需要每次都键入命令,gdb记住了最后一个被执行的命令,只要简单的按enter键就可以重复执行最后的命令。

1.  gdb命令

该命令主要用来启动调试。

gdb
程序名 [corefile]

corefile是可选的,但能增强gdb的调试能力。Linux默认是不生成corefile的,所以需要在.bashrc文件中添加

ulimit -c unlimited

修改完.bashrc文件后记得.
.bashrc让修改生效。

下面是一个没有语法错误,但是存在逻辑错误的代码:

一运行立马就会提示错误:

Segmentation
fault (coredumped)

我们列出当前目录下的文件,发现多了一个core.*之类的文件,这就是系统给我们生成的core文件。

我们现在可以启动gdb进行调试了。

gdb
1 core.1997

其中1是代码生成的程序,core.1997是出错后系统给我们生成的core文件。

如果你不喜欢一大堆的软件信息,可以通过-q参数关闭软件信息

gdb
-q 1 core.1997

#0 
0x080483c4 in test () at test.c:5

5              
*p = 2;

可以看到gdb通过core告诉你,程序哪条语句出现问题

2.  run命令

该命令使得程序跑起来,需要注意:gdb命令并没有运行程序,只是进入了gdb状态。

3.  continue命令

与run相对的是continue命令,记住,run是开始执行,continue是继续执行,两者是不同的,程序在断点处听下之后,你如果输入run,程序会重新启动,而输入continue,程序会从断点处向下继续执行。

4.  where命令

where命令,可以显示导致段错误的执行函数处。

#0 
0x080483c4 in test () at test.c:5

#1 
0x080483e6 in main () at test.c:10

5.  list命令

知道函数出错行的上下文对调试程序是很有帮助的。

list[m,n],m,n是要显示包含错误首次出现位置的起始行和结尾行。不带参数的list将显示附近的10行代码。

6.  break命令

break命令主要用来设置断点。具体用法如下:

break
linenum
在文件的linenum行设置断点;

break
funcname
对funcname函数设置断点,每次该函数被调用都会触发断点;

break
filename:linenum
在filename文件的linenum行设置断点;

break
filename:funcname
在filename文件对funcname函数设置断点。

对于上面的一段代码,我们对test函数设置断点,在第10行设置断点:

info
break可以查看已有的断点的信息。

delete
+ 断点序号可以删除断点。

7.  单步调试命令

step命令:step顾名思义,就是一步一步执行。当遇到一个函数的时候,step将进入函数,每次执行一条语句,相当于step
into。

next命令:当遇到一个函数的时候,next将执行整个函数,相当于step
over。

8.  print命令

gdb最有用的功能之一就是它可以显示被调试程序中任何表达式、变量的值。

print
变量,表达式

print
‘file’::变量,表达式
, ‘’是必须的,以便让gdb知道指的是一个文件名。

print
funcname::变量,表达式

我们先对test函数设置断点,然后单步执行,然后输出i的值:

我们可以看到,print命令确实强大,方便地输出了变量的值。

9.  whatis命令

whatis 命令可以告诉你变量的类型,ptype
告诉你结构的定义。

10.     return命令

return
[value]

停止执行当前函数,将value返回给调用者,相当于stepreturn。

执行该命令,会让当前的函数立马退出,并且返回。

11.     set命令

该命令可以改变一个变量的值。

set
variable varname = value

varname是变量名称,value是变量的新值。

当然gdb还有非常多复杂的命令,不过它们用到的机率非常低,熟练地掌握了上面的命令,一般应付大部分的调试都不存在问题。

时间: 2024-10-29 19:06:48

gdb常用命令的相关文章

GDB常用命令使用说明(一)

本文由霸气的菠萝原创,转载请注明出处:http://www.cnblogs.com/xsln/p/gdb_instructions1.html 全部关于gdb的文章索引请点这里 GDB(GNU Debugger)是在Unix以及类Unix系统下的调试工具.功能极其强大,几乎涵盖了你所需要的全部功能. GDB主要帮忙你完成下面四个方面的功能: 1.启动你的程序,可以按照你的定制要求随心所欲的运行程序. 2.可让被调试的程序在你所指定的调置的断点处停住. 3.当程序被停住时,可以检查此时你的程序中所

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 ge

再探gdb常用命令

 前面已经有了一篇对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中好多命令都有自己的简写字

gdb常用命令记录

gdb常用命令 最近在研究nginx源码,gdb用于调试非常方便,之前这篇有研究过如何使用gdb调试nginx:https://www.cnblogs.com/yjf512/archive/2012/05/10/2494635.html 最近使用的时候gdb的命令又忘记了.这里复习一下. 这里有很全的资料:https://www.gitbook.com/book/wizardforcel/100-gdb-tips 常用命令 启动项目并断点 start 打临时断点 tb 打断点 b 列出代码 l

GDB常用命令使用

GDB(GNU Debugger)是在Unix以及类Unix系统下的调试工具.功能极其强大,几乎涵盖了你所需要的全部功能. GDB主要帮忙你完成下面四个方面的功能: 1.启动你的程序,可以按照你的定制要求随心所欲的运行程序. 2.可让被调试的程序在你所指定的调置的断点处停住. 3.当程序被停住时,可以检查此时你的程序中所发生的事,以及内存状态等. 4.动态的改变你程序的执行环境. gdb使用总旨:help指令很强大!多用help!help里面总会有你需要的信息.如果你不知道如何使用help,请在

Linux调试工具strace和gdb常用命令小结

strace和gdb是Linux环境下的两个常用调试工具,这里是个人在使用过程中对这两个工具常用参数的总结,留作日后查看使用. strace调试工具 strace工具用于跟踪进程执行时的系统调用和所接收的信号,包括参数.返回值.执行时间.在Linux中,用户程序要访问系统设备,必须由用户态切换到内核态,这是通过系统调用发起并完成的. strace常用参数: -c 统计每种系统调用执行的时间.调用次数.出错次数,程序退出时给出报告 -p pid 跟踪指定的进程,可以使用多个-p同时跟踪多个进程 -

gdb常用命令总结

1: 对于在应用程序中加入参数进行调试的方法: 直接用 gdb app -p1 -p2 这样进行调试是不行的. 需要像以下这样使用: #gdb app (gdb) r -p1 -p2 或者在运行run命令前使用set args命令: (gdb) set args p1 p2 可以用show args 命令来查看 2. 加入断点: break <linenumber> break <funcName> break +offset break -offset (在当前行号的前面或后面的

linux之GDB常用命令汇总

查看gdb的版本号 (1)rpm -q gdb 会显示是否安装gdb及版本号 (2)gdb --version也可以 breakpoint b main; b 20; 设置断点 breakpoint if break 函数名.编号 if xxxx 在xxx的情况下设置的断点才生效 (xxx 例如:变量= 3) cd cd /home/yongchao/ 改变当前工作目录 clear 光标在正要执行的break点的行,然后打clear 删除停止处的断点 info b info b 查看所有的断点

GDB常用命令简介

1.启动调试程序 gdb 调试对象,例如gdb app 2.运行程序 run 或这简写为r 3.设置断点 有几种不同的方式 1)break line 2) break file:line 3) break function:offset 4.中断后继续执行 c 5.显示汇编代码 disassemble 或简写为 disas 结合不同参数达到不同的显示效果,几个经典的用法 disas /m func1 -- 显示函数func1的汇编 disas $pc,+10 -- 显示pc位置开始的10字节汇编