Linux中的cgdb的基本使用

news/2025/2/26 9:16:40

1.cgdb的简介

Linux中的cgdb是一个基于GDB(GNU Debugger)的图形化调试前端,它结合了GDB的命令行界面功能和代码查看窗口,为开发者提供了一个更为直观的调试体验。

cgdb的作用和功能:

  • 直观调试体验:cgdb提供了一个清晰的分屏界面,用户可以在一个窗口中同时看到调试命令的输出和源代码。这使得开发者在调试过程中既能利用GDB强大的调试能力,也能同时查看代码,从而提高了调试效率。
  • 代码高亮与浏览:cgdb对源代码进行语法高亮显示,帮助开发者更清晰地查看代码结构和调试时的代码内容。用户可以在调试过程中直接浏览源代码,跳转到不同的代码行,查看当前行的内容等。
  • 多线程调试:cgdb支持多线程程序的调试,用户可以查看每个线程的堆栈跟踪,并控制每个线程的执行。这对于调试复杂的多线程程序非常有帮助。
  • 配置文件支持:用户可以创建一个.cgdb配置文件,在其中添加常用的设置,如自动加载符号表、设置断点、加载调试信息等。这使得每次启动cgdb时都能自动加载指定的程序文件和配置,提高了调试效率。
  • GDB功能扩展:作为GDB的前端,cgdb支持GDB的所有功能,包括设置断点、查看变量、堆栈跟踪、单步执行等。此外,cgdb还增加了一些快捷键操作,使用户能够快速在源代码和调试命令之间切换,快速定位和执行调试操作。

2.样例代码

//mycode.c

#include <stdio.h>

int Sum(int s, int e)
{
    int result = 0;
    for(int i = s; i <= e; i++)
    {
        result += i;
    }

    return result;
}

int main()
{
    int start = 1;
    int end = 100;

    printf("I will begin\n");
    int n = Sum(start, end);
    printf("running done, result is: [%d-%d]=%d\n", start, end, n);

    return 0;
}

3.常见选项

  • 开始:gdb binFile
  • 推出:ctrl + d 或 quit 

3.1. list/l 

  • 命令:list / l
  • 作用:显示源代码,从上次位置开始,每次列出十行。
  • 样例:

 3.2. list/l 函数名

  • 命令:list/l 函数名
  • 作用:列出指定函数的源代码
  • 样例:

 3.3. list/l 文件名:行号

  • 命令:list/l 文件名:行号
  • 作用:列出指定⽂件的源代码
  • 样例:

3.4. r/run

  •  命令:r/run
  • 作用:从程序开始连续执⾏
  • 样例:

 3.5. break/b [文件名:]行号

  • 命令:break/b [文件名:]行号
  • 作用:在指定⾏号设置断点
  • 样例:

 3.6. n/next

  • 命令:n/next
  • 作用单步执⾏,不进⼊函数内部
  • 样例

3.7. s/step

  • 命令:s/step
  • 作用:单步执⾏,进⼊函数内部
  • 样例: 

 3.8. info break/b

  • 命令:info break
  • 作用查看当前所有断点的信息
  • 样例

3.9. finish

  • 命令:finish
  • 作用:执⾏到当前函数返回,然后停⽌
  • 样例:

3.10.print/p 表达式

  • 命令:print/p 表达式
  • 作用:打印表达式的值
  • 样例:

 3.11.set var 变量=值

  • 命令:set var 变量=值
  • 作用:修改变量的值
  • 样例:

 3.12. delete/d breakpoints

  • 命令:delete/d breakpoints
  • 作用:删除所有断点
  • 样例:

3.13. info breakpoints

  • 命令:info breakpoints
  • 作用:查看当前设置的断点列表
  • 样例:


http://www.niftyadmin.cn/n/5868461.html

相关文章

3-2 WPS JS宏 工作簿的打开与保存(模板批量另存为工作)学习笔记

************************************************************************************************************** 点击进入 -我要自学网-国内领先的专业视频教程学习网站 *******************************************************************************************…

FFmpeg+vvenc实现H.266的视频编解码教程

Linux系统&#xff1a;FFmpegvvenc实现H.266的视频编解码教程&#xff08;视频压缩&#xff09; 关键网址 ffmpeg目前支持libvvenc&#xff0c;因此配置好libvvenc只会在一些make、sudo make install命令时遇到问题&#xff0c;例如默认安装或配置路径指定错误、ffmpeg版本、v…

推送项目与分支管理

文章目录 git clone的时候方法 &#xff1a;克隆时只克隆指定分支命令格式&#xff1a;示例&#xff1a;参数说明&#xff1a; git pull 的时候1. **直接指定远程分支**示例 2. **查看远程分支** git Push的时候1. **推送指定本地分支到远程分支**示例 2. **强制推送**示例 在管…

在CentOS7上部署与关闭Flask接口

教程概述 本篇教程主要内容为讲述在Centos7上部署Flask接口的方法&#xff0c;教程内所使用的接口为一个基于yolo的图像识别返回信息的flask接口&#xff0c;本教程适用于已具备Python环境且需要部署Flask接口的开发者。 前置文章 如有需要可以看下这两篇。 Centos7安装pyt…

Ubuntu22上安装MySQL8启动成功,远程无法连接

解决步骤: 1.首先验证网络是否通 ping Linux服务器ip 2.如果网络通&#xff0c;验证是否开放了访问 2.1在服务器上使用 sudo mysql -u root -p 并输入密码连接到mysql 2.2执行 SELECT User, Host FROM mysql.user; 查找一个Host列为’%的用户&#xff0c;这表示允许从任何主机连…

C#连接sql server

连接时&#xff0c;出现如下提示&#xff1a; ERROR [IM014] [Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中&#xff0c;驱动程序和应用程序之间的体系结构不匹配 原因是odbc的驱动和应用程序的架构不一致。我的odbc如下所示&#xff1a; 显示为64位&#xff0c;而c#程序显…

《Keras 3 使用 PointNet 进行点云分类》:此文为AI自动翻译

《Keras 3 使用 PointNet 进行点云分类》 作者:David Griffiths 创建日期:2020/05/25 最后修改时间:2024/01/09 描述:实现 PointNet for ModelNet10 分类。 (i) 此示例使用 Keras 3 在 Colab 中查看 GitHub 源 点云分类 介绍 无序 3D 点集(即点云)的分类、检测和分…

【前沿探索篇七】【DeepSeek自动驾驶:端到端决策网络】

第一章 自动驾驶的"感官革命":多模态神经交响乐团 1.1 传感器矩阵的量子纠缠 我们把8路摄像头+4D毫米波雷达+128线激光雷达的融合称为"传感器交响乐",其数据融合公式可以简化为: def sensor_fusion(cam, radar, lidar):# 像素级特征提取 (ResNet-152…