cgdb | 一起边看源码边调试gdb吧
简介
cgdb是一款轻量级的基于gdb的命令行可视化工具,关系大致如下:

尽管gdb本身可以通过layout src的命令显示源码布局,但是其功能还是过于简陋。
使用cgdb并不需要你重新去学习过多额外的命令,你依然可以像原来使用gdb一样去使用它。
安装
直接系统安装(可能非最新版本):
sudo apt-get install cgdb
若要安装最新版本,可以从源码编译安装:
# 先安装相关依赖(已安装的可略过),以 Ubuntu18.04 为例:
sudo apt install automake
sudo apt install flex
sudo apt install texinfo
sudo apt install libncurses-dev
sudo apt install libreadline-dev
# 编译安装cgdb
git clone https://github.com/cgdb/cgdb.git
cd cgdb
./autogen.sh
./configure --prefix=/usr/local
make
sudo make install
使用
如开头所说,cgdb实际上就是在gdb的基础上套了一层交互,便于你边调试边看代码。启动cgdb的时候默认光标在gdb窗口上:

只要光标在gdb窗口上,那么使用者使用的命令全是gdb的相关命令,此处不赘述。
当你按下Esc键的时候,就会进入cgdb模式,此时可以进行相关操作:

- 鼠标滚轮:滚动浏览源代码
- 按键
s: 鼠标滚轮可以滚动浏览gdb的调试窗口 - 按键
-/+:按25%的比例来缩小放大源代码窗口 - 按键
Ctrl+W: 切换源代码窗口和调试窗口的布局(上下/左右) - 按键
空格:当前行打断点
其他相关的cgdb命令你可以通过按下ESC键把焦点切换到cgdb窗口之后,输入:help回车后查看。
最后,你可以通过按下按键i可以重新回到gdb窗口。
参考

欢迎关注我的公众号^^
cgdb | 一起边看源码边调试gdb吧的更多相关文章
- jQuery源码研究——怎么看源码
废话 这几天有想看源码的想法,于是就开始了源码的研究,经过几天的摸索发现看源码还是有点技巧在里面的,想着把这些东东写下来作为一个小总结. 在一个多月前我对Vue源码进行了一次研究,那时看源码的方式基本 ...
- 源码级调试的XNU内核
i春秋翻译小组-FWorldCodeZ 源码级调试的XNU内核 无论你是在开发内核扩展,进行漏洞研究,还是还有其他需要进入macOS / iOS内核,XNU,有时你需要附加调试器.当你这样做时,使用源 ...
- MySql轻松入门系列——第二站 使用visual studio 对mysql进行源码级调试
一:背景 1. 讲故事 上一篇说了mysql的架构图,很多同学反馈说不过瘾,毕竟还是听我讲故事,那这篇就来说一说怎么利用visual studio 对 mysql进行源码级调试,毕竟源码面前,不谈隐私 ...
- 专治不会看源码的毛病--spring源码解析AOP篇
昨天有个大牛说我啰嗦,眼光比较细碎,看不到重点.太他爷爷的有道理了!要说看人品,还是女孩子强一些.原来记得看到一个男孩子的抱怨,说怎么两人刚刚开始在一起,女孩子在心里就已经和他过完了一辈子.哥哥们,不 ...
- idea看源码
idea看源码,可以直接搜索.看接口具体调用的是哪个类里面的方法(多态)
- windbg源码驱动调试 + 无源码驱动调试
windbg源码驱动调试 环境信息 虚拟机:win7 32位 windbg:6.12(版本不存在太大影响) 设置过程 windbg与虚拟机连接:链接 配置windbg 配置好双机调试后,点击win ...
- Eclipse项目里面看源码和文档
Eclipse项目里面看源码 1.新建项目列表 2.进入struts2-core-2.3.20.jar,双击之后,看不到源码 3.右键struts2-core-2.3.20.jar,选择propert ...
- FastJson遇见的问题或项目实战中优化的问题,看源码都可以解决
1:感觉见鬼了一般存储JSONObject中的字段竟然不见了? JSONObject object=new JSONObject(); Map fields = new HashMap(); fiel ...
- python3-开发进阶 django-rest framework 中的 版本操作(看源码解说)
今天我们来说一说rest framework 中的 版本 操作的详解 首先我们先回顾一下 rest framework的流程: 请求进来走view ,然后view调用视图的dispath函数 为了演示 ...
随机推荐
- AT4144-[ARC098D]Donation【Kruskal重构树,dp】
正题 题目链接:https://www.luogu.com.cn/problem/AT4144 题目大意 \(n\)个点\(m\)条边的一张无向联通图,每个点有两个值\(a_i,b_i\).表示经过该 ...
- pycharm中安装扩展包
在使用Pycharm编写代码时,如果遇到了所需要的扩展包没有的情况时,可以使用以下方法来添加自己需要的扩展包. 1.点击File->settings 2.选择Project Interprete ...
- Anaconda和canda简介及区别
Anaconda简介: 1.是一个开源的Python发行版本,其包含了conda.Python等软件包,numpy,pandas(数据分析),scipy等科学计算包,而无需再单独下载配置. 可以在同一 ...
- Skywalking-12:Skywalking SPI机制
SPI机制 基本概述 SPI 全称 Service Provider Interface ,是一种服务发现机制.通过提供接口.预定义的加载器( Loader )以及约定俗称的配置(一般在 META-I ...
- java统一返回标准类型
一.前言.背景 在如今前后端分离的时代,后端已经由传统的返回view视图转变为返回json数据,此json数据可能包括返回状态.数据.信息等......因为程序猿的习惯不同所以返回json数据的格式也 ...
- $\Large{\LaTeX}$ 常用公式
$$\Large{\LaTeX}$$: \[\Large{\LaTeX} \] $ $ 表示行内 $$ $$ 表示独立 $\operatorname{lcm}(x)$\(\operatorname{l ...
- Jenkins 进阶篇 - 单元测试覆盖率
我们做项目开发,肯定免不了要写单元测试,不管是 Java 项目.Python 项目.PHP 项目,甚至是 nodejs 项目,都应该要写单元测试,本小节就来介绍单元测试的覆盖率报告输出和展示,在后面的 ...
- docker初探和基础搭建
个人博客 docker中文手册 Docker 是什么? docker是一个开源的软件部署解决方案: docker也是轻量级的应用容器框架: docker可以打包.发布.运行任何的应用. 在我的粗浅理解 ...
- SharkCTF2021 Babyhttp && get_or_lose
两道web. Babyhttp: 直接dirsearch,发现同时存在git和bak泄露:经验证,git的没用. 访问index.php.bak, 下载源码: 抓包,改包,发包即可. get_or_l ...
- 性能利器 Takin 来了!首个生产环境全链路压测平台正式开源
6 月 25 日,国内知名的系统高可用专家数列科技宣布开源旗下核心产品能力,对外开放生产全链路压测平台产品的源代码,并正式命名为 Takin. 目前中国人寿.顺丰科技.希音.中通快递.中国移动.永辉超 ...