适合初学者的 GDB 调试器命令

在本文中,我们将学习一些对初学者友好且非常基础的内容 GDB 调试器 命令。 我们将学习如何编译一个程序,以便将其传递给 GDB 进行调试。

使用终端构建和执行 C/C++ 程序

快速总结

我们将学习如何在调试模式下启动 C/C++ 程序。 我们将介绍一些最常用的 GDB 命令,例如: 休息, , 下一个, ,以及其他一些命令,对于程序员,尤其是调试器来说,它们简直就是一把瑞士军刀。 因此,无需进一步讨论,让我们直接进入 GDB 调试基础知识。

使用 GDB 进行调试

调试是必备的编程技能。 每个程序员都需要调试一些应用程序,无论是出于某种组织目的还是个人目的。 众所周知,程序员的大部分时间都花在调试之前编写的代码上。 因此,一个人应该经常学习一些调试,以便他/她可以轻松地将自己从一些错误的麻烦中解脱出来,而不会浪费任何时间。

为什么选择 GDB?

大多数大型科技公司只使用命令行和 bash 用于调试和编写代码的 shell。 此外,使用 GDB 向用户灌输了一些非常概念性的概念。 GDB 是一个命令行工具,它让我们在程序运行时可视化代码内部的内容。 人们可以学习和增强一些非常基本和最重要的概念,例如内存分配、使用指针、内存地址,最重要的是想象用户正在运行的程序内部发生了什么。

一些基本的 GDB 命令

  1. 休息: 此命令用于在程序内的某个特定位置添加断点,无论是行还是函数调用。
  2. 下一个: 此命令将您带到程序的下一行。 假设您在第 7 行设置断点,然后使用“next”或“n”将带您到第 8 行。
  3. 步: 此命令带您进入某个函数或当前正在执行的代码块
  4. 打印: 它用于显示不同变量或函数调用的值。 您只需输入“p”
  5. 跑: 每当我们开始调试时,我们都需要运行程序,为此,“运行”命令就在那里
  6. 继续: 该命令将我们带到下一个断点。

使用 GDB 调试 C++ 程序

好的,现在让我们试着看看这里面发生了什么“二进制搜索” C++程序。

一个简单的二进制搜索程序的代码

#include <iostream>  #include <vector>  using namespace std;  int iterations_counter = 0;  int binary_search(vector < int > arr, int s, int e, int key) {   //base case    iterations_counter++;    if (s > e)     return -1;    int mid = (s + e) / 2;    int index = -1;    if (arr[mid] == key)     index = mid;   else if (arr[mid] > key)      index = binary_search(arr, s, mid - 1, key);   else     index = binary_search(arr, mid + 1, e, key);    return index; }  int main() {   cout << "Enter the elements of the vector(Press -1 to stop)" << endl;   vector < int > arr;    while (true) {     int n;     cin >> n;      if (n == -1)       break;     arr.push_back(n);   }    cout << "Enter the key" << endl;   int key;   cin >> key;    cout << "Index at which the key is found(0 based indexing, -1 indicates that the key is not present in the vector): " << binary_search(arr, 0, arr.size() - 1, key) << endl;   cout << "Total Number of iterations required: " << iterations_counter << endl; } 

如何编译与 GDB 一起使用的程序

您可以通过启用“-g” 编译时的标志,如下面的命令所示

g++ "your_file_name" -o "your_output_file_name" -g 
如何编译以与 GDB 一起使用

让我们通过发出以下命令开始调试

gdb "your_output_file_name" 
启动调试模式

让我们放一个 断点 在 main 上,然后是我们的 binary_search 函数 该程序

我们还将使用 下一个 (n) 用于了解当前正在执行哪一行以及正在执行哪个块的命令

标记断点后运行标记断点后运行

使用 继续 命令

继续命令继续命令

使用 打印 (p) 命令显示有关各种变量的信息。

使用打印命令使用打印命令

现在,我们将使用 quit 停止调试会话。

停止调试会话 1停止调试会话

结论

在本文中,我们学习了如何使用 GDB Debugger 编译程序进行调试,以及一些最基本的调试命令和方法。 我们学习了如何使用 run、break、step、next、continue 和 print 命令。