当前位置: 首页 > news >正文

Linux中的cgdb的基本使用

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
  • 作用:查看当前设置的断点列表
  • 样例:

相关文章:

  • 剑指offer - 面试题11 旋转数组的最小数字
  • 华为机试牛客刷题之HJ76 尼科彻斯定理
  • Docker 搭建 Gitlab 服务器 (完整详细版)
  • VScode 开发
  • [算法--前缀和] 和可以被K整除的子数组
  • 软考高级【网络规划设计师】 综合知识
  • 使用Python开发PDF文本提取工具
  • 安装vm和centOS
  • Java进阶学习笔记23——API概述
  • Docker打包Python项目
  • Vue 中动态实现进度条
  • PV Elite 27是专业的压力容器和热交换器设计解决方案
  • 数据分析——Pandas 中的 apply() 函数
  • MySQL 中的事务隔离级别有哪些?MySQL 默认的事务隔离级别是什么?为什么选择这个级别?数据库的脏读、不可重复读和幻读分别是什么?
  • 【System Verilog and UVM基础入门26】Verdi使用教程指南
  • Linux常用命令汇总
  • 电子科技大学考研复习经验分享
  • 微信小程序源码逆向 MacOS
  • [H滑动窗口] lc239. 滑动窗口最大值(模拟+数据结构+单调队列+滑动窗口模板题)
  • 猿大师播放器:交通水利、公安消防Web端Vue网页播放20路RTSP H.265 1080P监控视频流
  • 设计师必须知道的网站/seo搜索引擎优化是做什么的
  • 计算机专业的会学怎么做网站吗/千万不要做手游推广员
  • 音乐网站前台模板/百度网页版网址
  • 网站开发兼容极速字体颜色推荐/关键词优化软件排行
  • 做任务刷单的网站是真的吗/网站优化排名哪家好
  • 画室网站模板/电子商务网站建设规划方案