惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
罗磊的独立博客
雷峰网
雷峰网
量子位
V
Visual Studio Blog
Vercel News
Vercel News
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Cloudflare Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
宝玉的分享
宝玉的分享
月光博客
月光博客
Martin Fowler
Martin Fowler
aimingoo的专栏
aimingoo的专栏
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Microsoft Security Blog
Microsoft Security Blog
博客园 - 叶小钗
腾讯CDC
Engineering at Meta
Engineering at Meta
博客园 - Franky
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
Jina AI
Jina AI
A
About on SuperTechFans

博客园_首页

Linux实操--组管理、权限管理和定时任务 Java + EasyExcel 实现单个接口导出多个Excel Mem0 源码解析系列(二):提示词工程的深度剖析 Openclaw TaskFlow究竟是什么?和普通Skill技能有什么区别 博文阅读密码验证 - 博客园 嘉立创开源:应该是全网MicroPython教程最多的开发板 Hermes Agent 集成实践:从协议到生产 2026年AI编程工具横评:Cursor、Codex、Claude Code、Zed、Windsurf Java程序员必看的RAG入门教程 2026 AI效率神器:Superpowers + Claude Code 保姆级教程 本地大模型部署全攻略:从 0 到 1 玩转 Ollama 【从0到1构建一个ClaudeAgent】内存管理-上下文压缩 .NET 高级开发 | 设计、实现一个事件总线框架 电子小白入门之NE555 3. WorkBuddy:隐藏玩法,一键召唤专家,让 AI 以"专家身份"给你干活 和AI一起搞事情#3:Claude Teammate 游戏开发翻车实录 【OpenClaw】通过 Nanobot 源码学习架构---(7)Memory C# .NET 周刊|2026年3月3期 我在 Debian 11 上把 K8s 单机搭起来了,过程没你想的那么顺(/opt 目录版) 深度学习进阶(七)Data-efficient Image Transformer CLI+Skill搭建浏览器AI自动化框架,告别一切重复枯燥任务 告别Token账单无底洞:OpenClaw本地部署,重塑企业数据主权的唯一解 FastAPI+Vue:文件分片上传+秒传+断点续传,这坑我帮你踩平了! SBTI 爆火后,我做了个程序员版的 CBTI。。已开源 + 附开发过程 多模态检索开始进入工程期:用 Sentence Transformers 搭建可落地的 Multimodal RAG 100多行代码实现一个最简单的Agent(用ReAct) Claude Code 通关手册(八):推荐 5 个 Hooks,代码质量提升 3 倍 老板:“有人截图了!”。安全部门:“收到,马上查暗水印!” - why技术 技术之外,皆是人间 C#/.NET/.NET Core技术前沿周刊 | 第 69 期(2026年4.01-4.12)
GDB TUI窗口管理
ttkwzyttk · 2026-06-28 · via 博客园_首页

在使用GDB命令行调试程序时,命令输入、命令输出以及源码显示通常会混杂在同一个终端窗口中。尤其是使用list查看源码时,源码内容会和调试命令、打印结果交织在一起,阅读起来不够直观。

为了解决这个问题,GDB提供了TUI功能。TUI全称为Text User Interface,即文本用户界面。它可以在终端中将界面划分为多个窗口,例如源码窗口、汇编窗口、寄存器窗口和命令窗口,从而让调试过程更加清晰。

TUI是GDB原生支持的功能,通常只要安装的是完整版本的GDB,就可以直接使用。

一、常用窗口布局命令

GDB TUI中可以使用layout命令切换不同的窗口布局。

命令 作用
layout src 显示源码窗口
layout asm 显示汇编窗口
layout regs 显示寄存器窗口
layout split 同时显示源码窗口和汇编窗口
fs src/asm/reg 切换窗口焦点
i win 查看当前拥有焦点的窗口
layout next 切换到下一个布局
layout prev 切换到上一个布局
ctrl+x+a 退出窗口模式
接下来以一个实际的例子来演示这些命令的作用
#include <stdio.h>

int add(int a, int b)
{
    int sum = a + b;
    return sum;
}

int main()
{
    int x = 10;
    int y = 20;

    int result = add(x, y);

    printf("result = %d\n", result);

    return 0;
}

对源代码进行编译以及启动GDB调试后,进入调试界面,输入layout src打开TUI界面

可以看见上方为源码显示区域,下方为GDB的命令输入区域,上方被绿色的边框选中,说明当前的窗口焦点在上方,在这种状态下,使用方向键是调整的源码区域的内容。也可以使用i win查看当前的窗口焦点信息。如果想要使用方向键快捷使用gdb历史命令,需要先将窗口焦点切换到命令行窗口上fs cmd

使用b main命令在main函数处添加断点,执行r命令之后,可以看见程序在第11行处中断下来,前面的断点标识变为大写的B,说明该断点至少命中过了一次,对于在第14行添加的断点,可以看见程序还未运行到此处,所以目前断点标识为小写的b,断点标识后的+号标识当前断点为使能状态。

同时在源码窗口的下方,还会显示当前对应的程序状态。显示信息包括PC指针,当前运行线程,当前所在函数等信息。

使用layout split可以将当前的源码窗口分隔成两块部分

862

可以看见,中间部分出现了汇编代码的内容,使用layout asm可以将可视化窗口部分切换为汇编代码。

845

GDB的TUI模式可以把普通命令行调试变成多窗口调试界面,使源码、汇编、寄存器和命令输入区域分开显示,避免信息混杂在一起。常用的命令包括layout srclayout asmlayout regslayout split 等;如果需要在不同窗口之间切换操作焦点,可以使用focus或其简写fs;如果想退出TUI模式,可以使用Ctrl+x+a。对于需要频繁查看源码、寄存器和汇编的调试场景,TUI会比普通命令行模式更加直观。