让自己也惊叹的#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,网页格式,经典。 立即下载

相关推荐

Dify工作流自动化:如何用Trae AI助手10倍提升你的开发效率(含避坑指南)

本文详细介绍了如何利用Trae AI助手自动化生成Dify工作流,实现开发效率的10倍提升。通过构建DSL示例库、精准需求描述和四步实战法,开发者可将重复的配置工作交给AI,快速生成可运行的工作流,并提供了关键的避坑指南。

weixin_29062865的博客 369

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

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

xiangsiersheng0的博客 989

CANOE仿真someip报文配置说明

利用canoe测试车辆控制器someip报文收发的步骤

AUTOSAR架构汽车软件开发 1万+

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

基于YOLOv10深度学习的花生种子霉变检测系统

YOLO(You Only Look Once)是当前最先进的目标检测算法之一,具有快速、精准的特性。YOLOv10是YOLO系列的最新版本,相较于之前的版本,YOLOv10在特征提取、模型精度和速度上都有了显著的提升。YOLOv10采用了更深的卷积神经网络、更多的跨层特征融合方法,使得其在不同尺寸物体的检测和复杂场景的处理上都表现出了优异的性能。YOLOv10特别适合应用在需要快速处理并检测大量图像的任务中,如花生种子霉变检测等,能够实现精准、高效的检测。

2201_76125393的博客 648

AI游戏制作07——波次计时器,敌人按波次生成

AI游戏制作07——波次计时器,敌人按波次生成

qq_40572023的博客 47

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

Ollama本地大模型-个性化AI:训练自己的风格模型和数据投喂打造专属智能体验

之前我们使用Ollama下载了deepseek模型,现在我想将其训练成自己风格的模型,应该怎么做?

瑶山的博客 1782

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

【实战篇】【硅基流动API+Cherry Studio搭建个人知识库全流程解析:从零到精通的超详细指南】

在人工智能技术高速发展的今天,基于大语言模型的知识库已成为开发者提效的必备工具。然而云端服务存在响应延迟、数据隐私、硬件依赖等痛点。通过硅基流动API与的深度整合,我们既能享受大模型的强大能力,又能实现本地化部署与高效管理。本文将从环境配置到高阶调优,手把手带你构建企业级知识库系统。

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1082

论文翻译:2024 High-Confidence Computing A survey on large language model (LLM) security and privacy: The

大型语言模型(LLMs),如ChatGPT和Bard,已经彻底改变了自然语言理解和生成。它们具有深度语言理解能力、类似人类的文本生成能力、上下文意识和强大的问题解决技能,使它们在各个领域(例如搜索引擎、客户支持、翻译)中变得不可或缺。同时,LLMs也在安全领域获得了关注,揭示了安全漏洞并展示了它们在安全相关任务中的潜力。本文探讨了LLMs与安全性和隐私的交集。具体来说,我们研究了LLMs如何积极影响安全性和隐私,与它们使用相关的潜在风险和威胁,以及LLMs内部的固有漏洞。

CSPhD-winston的博客 1722

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

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

weixin_29325007的博客 201

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Emacs gdb 配置和使用

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

cctvzxxz1的专栏 2374

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Emacs-GDB 项目教程

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

gitblog_00016的博客 406

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

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

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

frog845的专栏 1129

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、付费专栏及课程。

余额充值