让自己也惊叹的#emacs##gdb#联动,这才是最好的emacs-gdb

掌握emacs-gdb:GNU Emacs中的GDB图形界面 Emacs-GDB是GNU调试器GDB与Emacs文本编辑器集成的工具,它为开发者提供了一个强大的、可定制的调试环境。它结合了Emacs的文本处理优势和GDB的调试功能,形成一个综合的软件开发工具,特别适合于需要复杂源代码操作的调试场景。Emacs-GDB不仅支持源代码级别的调试,还提供了丰富的交互式控制和分析功能,使得调试过程更加高效、直观。本文将详细介绍Emacs-GDB的安装、配置、使用及优化,以帮助IT专业人士提升开发调试效率。 阅读详情

由于最近在做比较深入的android ndk开发,又不得不和命令行gdb打交道了——eclipse连gdb太慢了!
我觉得在emacs中用gud来操控ndk-gdb一直不妥。所以退而改用命令行方式。

对于bt(backtrace)命令打出来的call stack,一直都是再次从terminal中copy到emacs中查看的。
这天多花了点心思,想用define命令把这个call stack一次性显示到emacs的buffer中。

define不是最好的gdb扩展方法,因为现在有python gdb扩展接口了。只可惜team里的gdb高人没空帮我编译
with-python的gdb。

几番info文档查看,发现巧用logging命令,可以把gdb的内容输出到emacs中,这个简单而又诡异有用的脚本如下:

define gobt
  set logging file ~/.gdb.btt
  set logging overwrite on
  set logging redirect on
  set logging on
  bt
  set logging off
  shell echo \#Local Variables: \# >>  ~/.gdb.btt
  shell echo \#mode: compilation \# >>  ~/.gdb.btt
  shell echo \#End: \# >>  ~/.gdb.btt
  shell emacsclient -n ~/.gdb.btt
end



如果emacs的server启动了,会得到一个可交互的call stack,在哪行拍回车就跳转到相应的调用位置查看代码。

另一个命令更简单:
define eb
  source ~/.gdb.line
end



它的强大在于和以下emacs lisp配合:

(defun jr-debug-line ()
  (interactive)
  (let ((fn buffer-file-name)
        (ln (line-number-at-pos)))
    (with-temp-buffer (insert (format "b %s:%d" fn ln))
                      (write-region (point-min) (point-max) "~/.gdb.line"))
    (kill-new (format "b %s:%d" fn ln))))
(global-set-key (kbd "C-c b") 'jr-debug-line)


这样一来,就可以所见即所得地在emacs中对文件下断点了!

最后一个设置是EDITOR环境变量,为了用emacs查看gdb的当前行,正确的设置是:
export EDITOR="emacsclient -n "



这时,ed(it)命令会把你发送到gdb当前frame的当前行。

一个半双工的调试环境完成了。TUI的C-x C-a不够用时,ed就是神器呀。

P.S:上述gobt生成的back trace可以保存到任意位置,随时查看现场。这可比eclipse和intelij强大。


using gdb in emacs 在emacs中使用gdb,网页格式,经典。 立即下载

相关推荐

Mac用户必看:Parallels Desktop 18.1.1最新破解版安装与优化全攻略(附资源)

本文为Mac用户提供Parallels Desktop 18.1.1的详细安装与优化指南,涵盖虚拟化技术选型、专业级配置流程及性能调优技巧。重点解析Parallels Desktop在图形加速、系统资源调度方面的核心优势,并分享生产力增强技巧与典型应用场景实战方案,帮助用户最大化利用这一高效虚拟化工具。

weixin_29240343的博客 819

gdb搭配emacs调试(比ddd好用)

gdb调试小方法 set args -i a.txt 命令行参数 file main 加载主函数 start 运行主函数,pc指向第一条代码段。(注意全局变量和初始化区自动跳过) b + line号 加断点 delet + 断点号 删除断点 delet + breakpoints 删除所有断点 up 返回上级函数查看 finish 结束当前函数,跳回上级函数 until + line号 自动跳到某行,等待执

xiangsiersheng0的博客 989

百度无人车ApolloAuto使用入门

1.安装原版ubuntu 14.04 http://www.ubuntu.org.cn/download/alternative-downloads 2.安装对应ubuntu 14.04的indigo版ROS http://wiki.ros.org/indigo/Installation/Ubuntu 3.安装Apollo Kernel https://github.co

ss910的博客 3万+

157_emacs中尝试使用gdb

对我来说算是新鲜东西,但是使用后发现果真是GNU体系血统,emacs和gdb结合的可真好啊! 运行一个简单的demo: 一份测试代码如下: #include "stdio.h" int i = 0; int main(void) { printf("%d\n",i++); printf("%d\n",++i); ...

小灰笔记 784

Python 逆向解析知乎盐选反爬字体,实现内容精准还原

本文详细解析了知乎盐选内容的反爬字体机制,并提供了使用Python逆向解析WOFF字体文件的完整方案。通过fontTools库构建解码字典,实现乱码文本的精准还原,帮助开发者应对动态字体策略,同时强调法律与道德风险。

weixin_29268385的博客 1295

【PADS-开发指南】

馒头破戒大师

sinat_23896491的博客 3215

Emacs + gdb单步调试汇编代码(一)

1.编译 # gcc -g test.c -o test 2.使用emacs单步调试汇编和C对照 # emacs M-x gdb M-x gdb-many-windows //把某个窗口替换成反汇编或者寄存器的监控 M-x gdb-display-disassembly-buffer (gdb) b main (gdb) s 这里可以看到汇编和C源码汇编对应 ...

Android系统攻城狮 2393

初探802.11协议(6)——Wi-Fi 6新特性简介

Wi-Fi 6新机制(特性)介绍

FanFF的博客 1522

Emacs-GDB:GNU Emacs的GDB图形界面

Emacs-GDB:GNU Emacs的GDB图形界面 项目基础介绍和主要编程语言 Emacs-GDB是一个为GNU Emacs开发的GDB图形界面项目。该项目的主要编程语言包括C和Emacs Lisp。通过使用C语言编写的动态模块,Emacs-GDB能够高效地解析GDB/MI输出,从而提供一个快速且直观的调试界面。 项目核心功能 Emacs-GDB的核心功能包括: 快速调试:通过C语言编写的动...

gitblog_00770的博客 444

Qt5.15.7编译报错问题汇总:python2安装环境导致的问题

导致编译生成的:RegExpJitTables.h文件大小为0。RegExpJitTables.h 能生成且大小不为0KB。可以看到,正确的python路径,执行编译路径后。再执行 configure XXX…尝试直接改,将其改为正确的路径。

MusicScore的博客 1439

基于CNN-LSTM融合模型的环卫车动态称重算法研究:从频率感知到精准质量估计

摘要: 针对环卫车辆动态称重需求,本研究提出一种基于CNN-LSTM融合网络的频率分析方法。通过在实验室构建振动频率采集系统,获取不同载重下的结构响应数据,经MATLAB进行信号处理和特征提取后,建立频率-质量的非线性映射模型。实验表明,该算法在静态和模拟动态场景下平均绝对误差小于1.5%,显著优于传统方法,为环卫车智能化管理提供了高精度实时称重方案。 关键词: 动态称重;深度学习;频率分析;CNN-LSTM;MATLAB。

AI的内部世界的博客 374

EMACS gdb调试mysql_emacs+gdb qemu+emacs+gdb调试内核-Go语言中文社区

1引言Emacs除了具有强大的编辑功能,还可以作为调试工具gdb的前端,对程序进行调试。使用Emacs进行调试,可以将程序的编写与调试统一到Emacs中,并利用Emacs强大的功能辅助调试,是将Emacs作为IDE使用的一项必备功能。本文假定读者具有基本的程序调试知识,希望知道在Emacs下进行基本调试的对应操作。水平有限,欢迎拍砖。2准备工作:将调试信息编译在程序中要使程序能被gdb调试,需...

weixin_29325007的博客 201

Vue3 - Element Plus 组件库 Tabs 标签页右侧区域插入按钮,<el-tabs> / <el-tab-pane> 选项卡组件右侧自定义插槽内容教程(右边区域添加自定义按钮功能区)

vue3,elementplus,tabs选项卡如何在插槽按钮,tabs标签页组件怎么自定义右侧内容,vue3elementplustabs组件右侧插槽按钮,element-plus在el-tabs组件的最右侧添加按钮,如何在选项卡右边加入按钮搜索框等内容,哪个属性能在tab选项卡右侧插入自定义按钮,在el-tabs组件最右侧添加按钮,vue3el-tabs组件怎么自定义右侧插槽内容,Tabs标签页右侧自定义插槽,ElementPlusTab右边加按钮,el-tabs组件自定义右侧按钮,在E

🏆 前端领域优质创作者 7015

Emacs gdb 配置和使用

<!-- @page {margin:2cm} p {margin-bottom:0.21cm} --> Emacsgdb配置和使用 1 引言 Emacs除了具有强大的编辑功能,还可以作为调试工具gdb的前端,对程序进行调试。使用Emacs进行调试,可以将程序的编写与调试统一到Emacs中,并利用Emacs强大的功能辅助调试,是将Emacs作为IDE使用的一项必

cctvzxxz1的专栏 2374

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Emacs-GDB 项目教程

Emacs-GDB 项目教程 1. 项目介绍 Emacs-GDB 是一个为 GNU Emacs 提供的 GDB 图形界面。该项目旨在提供一个快速且直观的调试界面,作为内置包 gdb-mi 的替代品。Emacs-GDB 通过使用 C 语言编写的动态模块来解析 GDB/MI 输出,从而实现更快的性能。它还提供了易于记忆的键绑定,灵感来自 Visual Studio 和 Qt Creator,旨在提供最...

gitblog_00016的博客 406

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Emacs+GDB远程调试ARM-LINUX程序

首先我们需要为arm-linux目标平台编译gdb和gdbserver,根据宿主机gdb的版本(比如我的rhel5.5上的gdb版本是6.8)在http://www.gnu.org/software/gdb现在对应版本的源代码。 解压到/opt目录下,详细的编译指令如下:

frog845的专栏 1129

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Emacs-GDB 开源项目教程

Emacs-GDB 开源项目教程 项目介绍 Emacs-GDB 是一个将 GDB(GNU 调试器)集成到 Emacs 编辑器中的开源项目。通过这个项目,开发者可以在 Emacs 环境中直接进行代码调试,无需切换到其他调试工具,从而提高开发效率。该项目充分利用了 Emacs 的强大文本编辑功能和 GDB 的调试能力,为开发者提供了一个无缝的调试体验。 项目快速启动 安装 Emacs-GDB 首先,确...

gitblog_01165的博客 464

推荐开源项目:Emacs的GDB图形界面增强版

推荐开源项目:Emacs的GDB图形界面增强版 项目地址:https://gitcode.com/gh_mirrors/em/emacs-gdb 在软件开发的前线,调试工具是工程师们不可或缺的武器。今天,我们要向大家隆重推荐一个为GNU Emacs精心打造的GDB图形界面增强版——一个旨在提供极速和直观体验的开源项目。 项目介绍 该项目提供了一个针对GDB调试器的高度优化的图形界面,它不仅是一个原...

gitblog_00019的博客 423

Emacs-GDB 项目常见问题解决方案

Emacs-GDB 项目常见问题解决方案 项目基础介绍 Emacs-GDB 是一个为 GNU Emacs 提供的 GDB 图形界面项目。该项目旨在提供一个快速且直观的 GDB 调试界面,作为内置 gdb-mi 包的替代品。Emacs-GDB 项目主要使用 C 语言编写,同时也包含一些 Emacs Lisp 代码。 新手使用注意事项及解决方案 1. 依赖问题 问题描述:新手在安装和使用 Emacs-...

gitblog_00743的博客 809

Emacs中学习gdb调试

Emacs中学习gdb调试 Emacs中学习gdb调试1. 编译首先,编辑好c++程序(以c++例),如test.cpp然后,编译M-x compile,把那一行命令改成g++ test.cpp -g -o test,参数“-g”是为了加入调试信息。要不然后面的...

140

在Emacs中使用gdb调试程序

1 引言 2 准备工作:将调试信息编译在程序中 3 开始:开启Emacs的调试模式GUD 3.1 运行gdb 3.2 gdb界面 3.3 小结 4 调试:设置断点,控制程序流程 4.1 设置、删除断点 4.2 运行程序 4.3 单步执行、运行到光标处 4.4

QQIANQQ的专栏 982

Emacs和gdb常用命令

Emacs 在我的实际配置情况下,C代表Ctrl键,M代表Alt键 退出emacs                                                                             C-x C-c 输入shell命令

Copy anywhere 964

emacs中用gdb调试

在emacs中用gdb调试c/c++还是很方便的,不过一直以来用惯了vc6,按起gud默认的按键来说确实不很方便,所以就作了一些按键映射来模仿vc6的调试: (setq gdb-many-windows t)(global-set-key [f5] gdb)(global-set-key [C-f5] gud-run)(global-set-key [S-f5] gud-co

meteor1113的专栏 7469

emacs入门

emacs和vim一样是受欢迎的编辑器之一。目前国内用vim的用户较多,vim有编辑器之神的号称,而emacs被称为神的编辑器,开个玩笑,哈哈,希望通过这个教程可以让大家喜欢上emacs

上一篇: 受够了每次向emacs粘贴xcode日志都要用keep-lines了。 (first-line-filter-mode)
下一篇: The silver search(ag)比ack-grep还快
JoyerHuang_悦
博客等级 码龄23年 101粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值