开发工具【免费下载链接】gdbguiBrowser-based frontend to gdb (gnu debugger). Add breakpoints, view the stack, visualize data structures, and more in C, C, Go, Rust, and Fortran. Run gdbgui from the terminal and a new tab will open in your browser.项目地址https://gitcode.com/gh_mirrors/gd/gdbgui点击查看免费下载导读gdbgui是一个基于浏览器的 GDBGNU Debugger前端你只需在终端运行gdbgui浏览器便会打开一个新的调试界面即可对 C、C、Go、Rust、Fortran 等语言编译出的程序进行可视化调试。本文以官方文档 docs/screenshots.md 的功能截图总览为骨架逐模块讲解 gdbgui 的界面布局、每项核心能力的操作方式与背后的源码实现读完你将对“加载程序 → 控制执行 → 查看栈/线程 → 设置断点 → 观察变量/表达式 → 检查内存与寄存器 → 使用 gdb 控制台”的完整调试链路有系统认识并能借助 gdbgui/src/js 下的前端源码快速定位对应功能。启动界面加载二进制文件与命令行参数gdbgui 启动后进入 screenshots/ready.png 所示的就绪界面。加载被调试程序的方式与在命令行中直接执行完全一致在界面中输入二进制文件路径和运行时参数args就像在 shell 里调用它一样见 docs/screenshots.md 对 screenshots/load_binary_and_args.png 的说明。两点关键行为值得注意二进制路径会被 gdbgui 记住当 gdbgui 之后再次打开时二进制文件会被自动恢复无需重复输入与纯 gdb 相同参数直接按空格分隔例如./hello --verbose 3。仓库中 examples 目录提供了多种语言的测试程序例如 examples/c/hello.c、examples/cpp/hello.cpp、examples/golang/hello.go、examples/rust/src/main.rs编译后即可作为 gdbgui 的调试目标快速验证各功能。整体界面效果如下控制按钮运行、继续、单步与指令级调试gdbgui 提供了一组直观的执行控制按钮从左到右依次为Run重新运行、Continue继续、Next单步跳过、Step单步进入、Return跳出函数、Next InstructionNI、Step InstructionSI见 screenshots/controls.png。这组按钮的完整实现位于 gdbgui/src/js/ControlButtons.tsx其内部调用GdbApi.click_run_button()、GdbApi.click_continue_button()等方法最终映射为对应的 GDB/MI 命令。各按钮对应的键盘快捷键从按钮title中可以查到如下按钮含义快捷键Run从头启动被调试程序rContinue继续执行直到命中断点或程序退出cInterrupt (SIGINT)向 gdb 进程发送中断信号以暂停运行—Next单步跳过step over函数调用n或→Step单步进入step into函数调用s或↓Return跳出step out当前函数u或↑Next Instruction (NI)执行一条机器指令跳过函数调用mStep Instruction (SI)执行一条机器指令进入函数调用,当程序处于运行状态时位于 Continue 右侧的中断按钮会通过Actions.send_signal(SIGINT, ...)向 gdb 进程发送 SIGINT 以暂停被调试程序见 gdbgui/src/js/ControlButtons.tsx。反向调试基于 rr 的倒带执行如果底层环境支持反向调试——例如使用 Intel CPU、运行 Linux 且配合 rr 录制程序执行——gdbgui 允许你反向调试见 screenshots/reverse_debugging.png。实现上ControlButtons通过store.connectComponentState(this, [gdb_pid, reverse_supported])订阅了reverse_supported状态当该状态为真时Continue / Next / Step / NI / SI 按钮的提示文案会额外追加“shift 对应按键进行反向执行”的说明例如shift c反向 Continue、shift n反向 Next见 gdbgui/src/js/ControlButtons.tsx。Stack / Threads线程、栈帧与调用栈导航在栈/线程面板见 screenshots/stack_and_threads.png中你可以查看所有线程每个线程头部显示 target-id、线程 id、core、状态与名称查看当前线程的完整调用栈对非当前线程显示其当前所在帧通过点击在栈帧之间切换或在线程之间切换切换线程后变量检查会针对该线程的当前帧进行。该面板由 gdbgui/src/js/Threads.tsx 实现Threads.select_frame(framenum)会设置selected_frame_num并调用GdbApi.select_frame(framenum)栈表的每一行包含函数名、文件可点击跳转到源码、地址可点击进入内存查看器和函数参数四列当前选中帧以加粗显示其他可点击帧会弹出“点击选择此帧/此线程”的提示。向被调试进程发送信号gdbgui 允许你从操作系统支持的信号列表中任选一个信号发送给 inferior被调试进程。例如发送SIGINT可以模拟在纯 gdb 中按下CTRLC用于中断被调试进程如果被调试进程因故挂起可以发送SIGKILL强制终止等等见 docs/screenshots.md 对 screenshots/send_signal.png 的说明。前端在 gdbgui/src/js/Actions.ts 的send_signal(signal_name, pid)中通过/send_signal_to_pid接口将信号送达指定进程后端则由 gdbgui 服务器代为向被调试进程的 pid 发送对应信号。源代码视图断点、符号自动补全与汇编源代码面板是 gdbgui 的核心区域见 screenshots/source.png支持查看源码与汇编通过点击行号gutter添加/移除断点在源码查看器上方有一个下拉框列出编译目标的所有符号并支持自动补全提供两套配色方案深色主题monokai与默认浅色主题。这些能力由 gdbgui/src/js/SourceCode.tsx 与 gdbgui/src/js/Breakpoints.tsx 协作完成SourceCode.click_gutter(line_num)调用Breakpoints.add_or_remove_breakpoint(fullname, line)后者通过-break-insert/-break-delete等 GDB/MI 命令增删断点见 gdbgui/src/js/Breakpoints.tsx 中的add_breakpoint/delete_breakpoint断点面板还支持勾选启用/禁用断点-break-enable/-break-disable、设置断点条件-break-condition、显示命中次数、识别父/子断点例如在 inline、模板或歧义位置自动创建的断点树见is_parent_breakpoint/is_child_breakpoint的判定逻辑并显示断点所在行的源码文本缓存源码行渲染时行号列通过gutter_cls区分普通断点、禁用断点与条件断点gdb 暂停所在的当前行会以paused_on_line样式高亮并自动滚动到可见位置make_current_line_visible。汇编视图与缺失源码时的回退开启汇编后每条源码行下方会对应显示机器指令见 screenshots/source_with_assembly.png其中加粗的指令行表示 gdb 当前暂停所在的指令源码中通过比较paused_addr assm.address判断并应用current_assembly_command样式。如果源码文件找不到gdbgui 会退化为纯汇编视图见 screenshots/assembly.png你仍然可以按需求单步执行每条指令。这一点在 gdbgui/src/js/SourceCode.tsx 的source_code_state状态机中体现ASSM_CACHED仅缓存到汇编、FETCHING_ASSM、ASSM_UNAVAILABLE、FILE_MISSING等状态分别对应“仅汇编可显示”“正在拉取汇编”“无法访问地址”“文件未找到”等场景汇编行会展示地址、操作码如mov、指令、函数名与偏移量如main8。变量与表达式Locals、Hover、进制切换、XY 曲线与树视图局部变量自动展示程序暂停时所有局部变量会自动显示见 screenshots/locals.png并且可以点击展开探索其字段。GdbVariable.get_ul_for_local()会渲染 gdb 返回的 local 对象可展开的变量以前缀提示点击后通过-var-create创建完整变量对象供深入探索见 gdbgui/src/js/GdbVariable.tsx。悬停探索变量将鼠标悬停在变量上即可展开探索体验类似 Chrome 调试器见 screenshots/hover.png。GdbVariable维护了ChildVarFetcher队列通过-var-list-children --all-values串行拉取子变量悬停expr_type hover失败时静默处理不会打扰控制台。任意表达式求值与进制切换你还可以求值任意表达式见 screenshots/expressions.png这些表达式在单步执行过程中持续存在并自动刷新。在 gdbgui/src/js/Expressions.tsx 中输入框回车后调用GdbVariable.create_variable(expr, expr)创建表达式变量同时通过-var-update --all-values在每次步进后更新值并自动清理已失效in_scope invalid的变量。表达式的基数radix可以按需修改见 screenshots/radix.gifGdbVariable.change_radix()会在 16十六进制→ 2二进制→ … 之间递增切换并在 2~36 之间做防御性校验切换后数值立即以新进制重新显示见 gdbgui/src/js/GdbVariable.tsx 中的_update_radix_values。表达式历史与 XY 曲线每个表达式都会记录其历史取值并可切换为x/y 折线图展示数值随时间步进次数的变化见 screenshots/plots.png。GdbVariable._make_plot()使用 Flot 绘制曲线数值型表达式is_numeric expr_type expr会累积values数组开启绘图后每个新值追加一个数据点并支持悬停显示坐标(x, y)。树形视图表达式还可以在树形视图中交互式展开探索见 screenshots/tree_explorer.png。点击变量旁的树形图标会调用GdbVariable.click_draw_tree_gdb_variable()将变量设为树根用于大规模复杂数据结构的浏览。此外每个变量还提供复制完整路径CopyToClipboard与删除表达式-var-delete等操作。内存查看器内存查看器见 screenshots/memory.png具备以下特性所有十六进制地址都会被自动转换成可点击的链接点击即可跳转到该地址探索内存内容内存长度可配置每行显示的字节数可配置截图中为每行 10 字节。实现位于 gdbgui/src/js/Memory.tsx界面提供start address (hex)、end address (hex)、bytes per line (dec)三个输入框回车后通过-data-read-memory-bytes逐字节拉取数据并缓存。其内置默认值为DEFAULT_BYTES_PER_LINE 8、DEFAULT_ADDRESS_DELTA_BYTES 31并设定了单次最多读取MAX_ADDRESS_DELTA_BYTES 1000字节的上限——若请求范围超限会自动收窄并提示。表头为address / hex / char三列十六进制值同时换算为可读字符不可打印字符显示为.表格顶部与底部各有一个more按钮分别向前/向后按 3 行批量扩展读取范围。地址链接化通过make_addrs_into_links_react()用正则0x[\d\w]匹配实现Registers、Threads、SourceCode等组件均复用了这一能力。寄存器视图寄存器面板见 screenshots/registers.png会展示所有寄存器且发生变化的寄存器会以黄色高亮显示。gdbgui/src/js/Registers.tsx 的实现要点通过-data-list-register-names获取寄存器名只在首次获取缓存于 store通过-data-list-register-values x拉取全部寄存器当前值表格包含四列name、value (hex)、value (decimal)、description十六进制值会自动转换为可点击的内存链接并同时给出十进制换算将当前值与上一次值比较发生变化的寄存器在名称、十六进制值、十进制值三处同时应用highlight bold样式寄存器名与描述来自 gdbgui/src/js/register_descriptions.ts仅当被调试程序处于paused状态时才渲染数据程序退出时会清空缓存。gdb 控制台内置的 gdb 控制台见 screenshots/console.png具备以下能力见 docs/screenshots.md打印 gdb 输出允许你直接向底层 gdb 子进程写入命令如同在终端里使用 gdb 一样支持 Tab 键补全并提供一个按钮查看 gdb 命令的帮助可以作为学习 gdb 的入门途径可以作为没有对应 UI 控件的命令的兜底手段支持用上/下方向键翻阅历史命令。前端在 gdbgui/src/js/GdbApi.tsx 中通过send_autocomplete_command()发送 gdb 的complete命令实现补全发送命令时会校验输入、更新控制台与状态栏并可通过设置项决定是否把 gdbgui 自身发出的命令也显示在控制台中show_all_sent_commands_in_console。认证公网访问时启用 HTTP Basic Auth当 gdbgui运行在可被公开访问的 IP 地址上时可以启用认证保护见 screenshots/authentication.png。具体启用方式参见gdbgui --help中的说明。从 gdbgui/cli.py 的源码可以确认认证采用HTTP Basic Auth相关命令行参数为--auth-file指定一个文件第一行是用户名、第二行是密码用于认证--user/--password直接以命令行方式提供用户名与密码二者不能同时使用同时提供会报错认证凭据最终注入app.config[gdbgui_auth_user_credentials]。此外当服务器对外公开且未配置认证时gdbgui 会在启动时打印警告提示公开服务建议启用认证见 gdbgui/cli.py 中get_gdbgui_auth_user_credentials与相关启动逻辑。Dashboard多实例管理与多人协同调试gdbgui 的Dashboard仪表盘见 screenshots/dashboard.png用于查看由 gdbgui 管理的所有 gdb 实例并允许kill终止某个实例attach附加到某个实例多人同时附加到同一个被管理的 gdb 子进程共同参与同一个调试会话——例如某人执行一步前进所有已连接的用户都会实时看到程序前进一步。从后端结构看gdb 实例的管理逻辑集中在 gdbgui/server/sessionmanager.pygdbgui 作为中间层同时维护多个 gdb 子进程并通过 WebSocket 把 gdb 的 MI 输出广播给所有订阅该会话的浏览器标签页这正是多人实时同步的底层机制gdbgui/server/ptylib.py 则负责与 gdb 子进程进行伪终端pty交互。在 gdbgui 中验证这些功能上面介绍的每个面板都来自真实运行的界面你可以在本地快速复现。安装并启动 gdbgui 后参考 docs/installation.md用仓库自带的示例程序体验# 以 C 示例为例编译并启动调试 cd examples/c make # 生成 hello 等可执行文件 gdbgui # 启动后浏览器自动打开调试界面然后在“加载二进制与参数”输入框中填写hello或带路径的可执行文件即可依次尝试Run 运行、Next/Step 单步、点击行号设置断点、在表达式输入框求值并切换进制、悬停查看变量字段、点击十六进制地址进入内存查看器以及在控制台直接输入bt、info registers等原生 gdb 命令。对于 Rust 示例examples/rust/compile_and_debug.sh 提供了编译与调试的一体化脚本可作参考。小结从 docs/screenshots.md 的功能总览可以看出gdbgui 并非简单地把 gdb 输出“搬到”浏览器而是围绕 GDB/MI 协议构建了一套完整、可点击、可交互的调试前端执行控制、断点管理、栈与线程导航、变量/表达式观测含进制切换、历史曲线与树视图、内存/寄存器查看、原生 gdb 控制台、信号发送、认证保护与多实例多人协同。每一类界面操作都能在 gdbgui/src/js 的前端组件与 gdbgui/server 的后端会话管理中对应到具体实现这也让 gdbgui 非常适合作为学习浏览器端调试器设计、或快速搭建图形化 GDB 工作流的参考实现。赞分享开发工具【免费下载链接】gdbguiBrowser-based frontend to gdb (gnu debugger). Add breakpoints, view the stack, visualize data structures, and more in C, C, Go, Rust, and Fortran. Run gdbgui from the terminal and a new tab will open in your browser.项目地址https://gitcode.com/gh_mirrors/gd/gdbgui点击查看免费下载相关推荐【亲测免费】 gdbgui - 浏览器版GDB调试器教程gdbgui 浏览器版GDB调试器教程 1. 项目介绍 gdbgui 是一个基于Web的GDB前端它为流行的开源调试器GDB提供了友好的图形用户界面。支持多种开发工具揭秘AllTools核心功能从PE文件分析到内核监控的全方位工具集揭秘AllTools核心功能从PE文件分析到内核监控的全方位工具集 AllTools是一套功能全面的系统工具集集成了从PE文件分析到内核监控的各类实用工具全景视界终极指南10个View360全景浏览器核心功能深度解析View360全景浏览器是一款功能强大的360度全景图像和视频浏览解决方案专为现代Web应用设计。作为egjs生态系统的重要组成部分它提供了沉浸式的全景体验上一篇ruflo-sparc Refinement Completion 实战指南用 Phase 4/5 质量门将功能从已实现推向可上线下一篇AIRI 接入 Xiaomi MiMo 语音转写ASR/STT完整指南API Key、模型配置与麦克风转写实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
深入解析 go.yaml.in/yaml/v2:Go 语言 YAML 编解码库的使用与实现原理 深入解析 go.yaml.in/yaml/v2:Go 语言 YAML 编解码库的使用与实现原理 【免费下载链接】distribution The toolkit to pack, ship, store, and deliver container content 项目地址: https://gitcode.com/gh_mirrors/dis/distribution
导读
go.yaml.in/yaml… · 2026/9/24 17:18:59
浩辰CAD看图王电脑版:轻松搞定坐标测量,告别反复调试 在工程设计、施工放样的日常工作里,坐标测量是高频刚需操作。不少人都遇到过坐标读数不准、点位捕捉偏移、不同图纸坐标系不匹配的问题,反复核对半天也找不到原因,耽误了不少工作进度。浩辰CAD看图王电脑版针对这些高频痛点,把坐标… · 2026/9/24 17:18:59
AI训练数据打标痛点怎么破?基于BeeCA实现端到端智能样本标注实战 一、企业AI训练数据打标普遍面临哪些痛点?
在AI模型训练前期,高质量标注数据集是模型效果的底座。很多企业构建训练样本时,普遍遇到四类棘手问题:
1. 数据源分散割裂:训练原始数据散落在业务数据库、消息队列、文件、… · 2026/9/24 17:53:36
【嵌入式Linux】开发板、VMware虚拟机与windows之间网络环境搭建 目录
一、VMware配置
二、Windows端以太网配置
三、开发板配置 当你在虚拟机上写好代码,经过交叉编译后,生成了可执行文件,想要发到Linux开发板上运行时,你看的学习教程推荐你用scp把虚拟机上的文件传到开发板上,需… · 2026/9/24 17:53:36
法医鉴定结论写进论文写到哪算数:先看签发主体,表述边界跟着它走 把一份法医鉴定结论搬进论文,是不少人在处理实证材料时会碰上的场景。写多深,其实不取决于你的表达欲望,而取决于这份鉴定由谁签发、在什么条件下形成。免费用得上的两样,一样先立章节骨架,一样先出图表与算式。这类结… · 2026/9/24 17:53:36
hot100——滑动窗口 无重复字符的最长子串给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。注意 "bca" 和 "cab"… · 2026/9/24 17:53:36
边缘AI应用:事关家庭隐私,家用AI摄像头的哪些AI任务在本地完成 家用AI摄像头的隐私风险不在于有没有AI,而是要弄清楚AI推理发生在哪里——是在摄像头本地芯片上完成,还是把视频传到云端处理。而本地推理的任务之所以安全,是因为摄像头拍到的原始视频没有离开设备,你的摄像头安装在家里… · 2026/9/24 17:53:30
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44