网站建设公司长沙,好的界面建筑网站,商城网站的建设方案,wordpress 删除 下载文件gdb的基本使用前言准备gdb工具调试须知gdb的基本指令进入调试退出调试显示代码及函数内容运行程序给程序打断点查看断点位置断点使能取消断点逐过程调试逐语句调试运行到下一个断点查看变量的值变量值常显示取消变量值常显示前言 
在主页前面的几篇文章已经介绍了Vim编辑器及Ma…
gdb的基本使用前言准备gdb工具调试须知gdb的基本指令进入调试退出调试显示代码及函数内容运行程序给程序打断点查看断点位置断点使能取消断点逐过程调试逐语句调试运行到下一个断点查看变量的值变量值常显示取消变量值常显示前言 
在主页前面的几篇文章已经介绍了Vim编辑器及Makefile编译工具的使用。但在实际编程中往往事与愿违所写代码中有一些小bug需要修改一下。 用过Vs的应该知道我们调试需要知道程序执行的某一个细节包括变量的值、函数的调用过程等从而发现隐藏的错误代码。 但是Linux没有图形化界面所以需要借助工具来进行代码调试当然这个工具对于初学者可能会不太适应。 
准备gdb工具 
首先检查一下自己Linux是否安装有gdb工具 命令gdb -v 作用查看gdb的版本号  如果显示出gdb的版本则说明已经安装。 
如果没有安装则根据以下操作 命令yum -y install gdb 作用安装gdb 
调试须知 
可执行程序有两种编译版本一个是Debug版本另一个是Release版本 
Debug 通常称为调试版本它包含调试信息并且不作程序优化便于程序员调试程序。 
Release 称为发布版本它往往是进行了各种优化使得程序在代码大小和运行速度上都是最优的以便用户很好地使用但其不包含调试信息。 
为什么要先对这两个版本进行解释呢因为Linux下gcc/g默认编译出的版本为Release版本是不带调试信息的无法使用 gdb 工具对其进行调试。 如下图 实际上使用gcc/g进行编译如果我们需要Debug版本时需要在编译指令上加 -g 命令。 如gcc -o testDebug test.c -g  总结 1程序的编译有两种一个是Debug版本另一个是Release版本 2Linux下gcc/g的默认编译方式是编译出Release版本 3要用gdb调试工具就必须在编译时加上 -g 选项使其可执行程序为Debug版本 
gdb的基本指令 
首先咱看一下本文所用的被调试文件test.c中的代码如下  下面是我总结的命令后面我会示范一些常用的给大家 
gdb 文件名 进入调试
q 退出gdb
l 行号显示binFile源代码接着上次的位置往下列每次列10行。
l 函数名列出某个函数的源代码。
r 运行程序
b 行号在某一行设置断点
b 函数名在某个函数开头设置断点
info b 查看所有信息。
d break删除所有断点
d 断点编号 删除序号为n的断点
disable breakpoints 断点编号禁用断点
enable breakpoints 断点编号启用断点
n 单条执行。
s 逐语句调试/进入函数调用
finish执行到当前函数返回然后挺下来等待命令
p 变量打印变量值。
display 变量名跟踪查看一个变量每次停下来都显示它的值
undisplay取消对先前设置的那些变量的跟踪
set var修改变量的值
continue(或c)从当前位置开始连续而非单步执行程序
run(或r)从开始连续而非单步执行程序
info(或i) breakpoints参看当前设置了哪些断点
until X行号跳至X行
breaktrace(或bt)查看各级函数调用及参数
infoi) locals查看当前栈帧局部变量的值 
进入调试 
命令gdb 文件名 作用启动调试 注意只是启动调试程序并没有运行 如下图  
退出调试 
命令q 作用退出调试 
显示代码及函数内容 
命令l 作用显示当前执行代码及周围10行l 的特点是每次只显示10行  命令l 行号 作用显示指定行号内容  命令l 行号行号 作用显示指定行号内的内容如下图 l 7,11 命令表示显示7到11行的内容。这种命令方式因为是指定式的所以可显示10行以上的内容。  命令l 函数名 作用显示函数代码  
运行程序 
命令 r 作用运行程序 注意此命令和Vs中的F5功能一致运行过程中遇到断点才会停下如果没遇到断点程序会直接运行致结束。  
给程序打断点 
命令b 行号 作用给指定行号打断点方便调试  
查看断点位置 
命令info b 作用查看程序中各断点位置  解释 Num : Num下方是断点编号取消断点时需要用到断点编号 Type : 表示该标记是断点 Enb : 代表使能y代表打开, n代表关闭 what : 表示改断点在那个函数和文件中及在第几行 
断点使能 
命令disable breakpoint 断点编号 功能该断点使能关闭该断点功能不生效  命令enable breakpoint 断点编号 功能该断点使能打开该断点功能生效  
取消断点 
命令 d 断点编号 作用取消该断点 注意取消断点用的是断点编号用info b 查看不是用行号  命令d break 作用取消所有断点  
逐过程调试 
命令: n 功能逐过程调试和vs调试时的F10一致  
逐语句调试 
命令s 功能逐语句调试  
运行到下一个断点 
命令c 作用运行到下一个断点  
查看变量的值 
命令p 变量 功能查看变量的值  命令p 变量 功能查看变量的地址  
变量值常显示 
上一个命令 p ,只能显示一次变量的值。如果我们想一直看着变量的变化就得用其他命令。 命令display 变量名或取地址 功能跟踪显示某个变量的值每次停下都显示他的值  
取消变量值常显示 
命令undisplay 编号 功能取消变量值常显示