【Linux篇】gdb调试器的使用

gdb调试器之常用指令

  • 前言
  • 一 . 程序的两种发布模式
  • 二 . gdb调试器的使用
    • 1> 调用调试器进入调试环境
    • 2 > 退出调试
    • 3 > gdb中常用调试指令

前言

  • gdb作为Linux下一款好用且强队的调试工具, 支持对 C C++ go Java 等多种高级编程语言进行调试.
  • 对于在Linux下进行编程的程序员来说, 会使用gdb来对代码进行调试是不可或缺的素养

一 . 程序的两种发布模式

程序在进行发布时一般有两种版本 :

  • debug版本 :
    • debug版本的可执行程序会添加调试信息, 因此可以被调试
    • 开发软件的程序员进行测试的版本
    • 体即较大
  • release版本 :
    • release版本的可执行程序会删去调试信息, 不可以被调试
    • 是面向用户, 用户所使用的版本
    • 体即较小

我们对于能够对程序进行调试, 便是因为该程序为debug版本

二 . gdb调试器的使用

对于debug版本的程序, 如何使用gdb进行各种调试呢? 请看下文

1> 调用调试器进入调试环境

gdb filename
// 在shell命令行中输入该指令后, 会进入这样的命令行

(gdb)         // 这是一个命令行 , (gdb) 相当于命令行提示符

示例如下: 

gdb ../test01_dir/main.c      // 调试位于该相对路径下的 main,c文件

【Linux篇】gdb调试器的使用_第1张图片

2 > 退出调试

(gdb) quit    //(gdb)这个命令行中, 输入 quit 敲击回车就可以退出调试环境

3 > gdb中常用调试指令

(gdb) l         //查看被调试代码          
                // l n         显示指定行之后的代码    
                // l 函数名     查看指定函数的代码

(gdb) r         // 让程序调试进行          
                // 相当于 VS中的 F5   

(gdb) b         // 在指定位置设置断点       
                // b n            在第n行设置断点   
                // b sum          在sum函数的入口处设置断点  
                // b filename:n   在指定文件的指定行设置断点
                // b filename:sum 在指定文件的指定函数的入口处设置断点
                
(gdb) info b    // 查看设置的所有断点, gdb会按照断点设置的先后对其进行排序显示 
                // 按顺序显示断点的类型, 状态(开启或关闭), 地址等  
                
(gdb) d         // 删除指定位置的断点     
                // d n  删除编号为n的断点 
         
(gdb) disable   // 将指定断点的状态设置为关闭 (y - yes 代表开启, n - no代表关闭)        
                // disable n  将编号为n的断点状态设置为 n (关闭)                                                                                
                                                                                                      
(gdb) enable    //开启指定断点        
                // enable n,将编号为n的断点状态设置为 y (开启)
 
 (gdb) n        // 逐过程进行调试          
                // 相当于VS中的 F10 
                
 (gdb) s        // 逐语句进行调试          
                // 相当于VS中的 F11   

 (gdb) p        // 查看变量                
                // p i 查看变量i的值    
                // p &i 查看变量i的地址      
                          
(gdb) display   // 常显示变量 (- 在这里是一直的意思)       
                // display i  在调试的过程中一直显示变量i的值    
                // display &i 在调试的过程中一直显示变量i的地址
                
(gdb) undisplay // 取消变量的常显示    
                // undisplay n        取消编号为n的变量的常显示     
                                                  
(gdb) c         // 按断点运行               
                // 调试运行至下一个断点,然后停止
                // 可以用来按范围查找bug  

(gdb) bt        // 查看调用堆栈, 常用于调试函数             
                // bt sum 查看sum函数的调用堆栈
            
(gdb) finish    // 以函数块的方式进行调试
                // 从当前所在函数的当前位置开始调试运行, 到当前函数运行结束停止调试            

(gdb) untill    // untill n  调试运行至第n行停止 
                // 属于小范围内调试    

(gdb) set var i=0   // 将变量的值设置为指定值, 即使程序中该变量不为这个值
                    // 这是为了查看在特定情况下程序的运行状况

(gdb) if(...)       // 设置条件断点

注意 :  断点的编号是根据断点的设置顺序来编号的。 (编号在前不一定先运行)

你可能感兴趣的:(Linux笔记,linux,c++)