您当前的位置:首页 > 新闻 > 科技

使用gdbgui在浏览器中远程多语言调试

时间:2020-07-17 16:20:19  来源:  作者:

 

 

 

码农需要开花大量时间调试和维护项目代码。代码调试是每个码农的最基础技能之一。大多数人都喜欢IDE给你带来的便利的可视化调试体验,少数人则喜欢GDB式命令行的高效调试,那么有没有什么方法能把两者结合起来呢?

在本文中,虫虫要给大家介绍一个这样的工具gdbgui,是gdb的一个Web可视化扩展,可以让我们通过Web在线可视化的调试。

概述

GDB是GNU项目推出的强大开发调试利器,支持跨平台操,跨语言的软件调试。GDB和GCC、Emacs构成了GUN编程的宇宙最强组合。目前GDB可用于调试诸如C,C++,Golang,Rust等编译语言,和Mac,windowslinux和BSD等几乎所有的操作系统。GDB可以帮助我们:

发生错误时捕获程序变量和上下文的概况;

如果由于崩溃或异常终止而引起core dump,可以找到什么表达式引起的;

在程序运行时暂停问题的程序部分;

在调试时测试和尝试程序用来缩小或修复问题。

GDB常用的功能可总结如下:

使用gdbgui在浏览器中远程多语言调试

 

尽管GDB很强大也很高效,但是需要在命令行下使用,对不熟悉命令行的人有些事不是很方便。

gdbgui是另一个基于gdb构建的调试工具。主要区别在于gdbgui向开发人员提供Web展示前端,因此可以在浏览器中实现断点添加,堆栈查看跟踪以及更改上下文和参数值等操作。

使用gdbgui在浏览器中远程多语言调试

 

gdbgui体系结构

ddbgui库利用了WebSockets的优势。每当前端调试工具启动时,都会建立WebSocket连接,用于浏览器与后端之间的通信通道。在每个已建立的WebSocket之后,后端都会启动一个新的托管gdb子进程以解析输出,同时生成一个单独的子进程以不断检查其他子进程的输出。最后,它使用相同的WebSocket将输出传输到客户端。

安装

gdbgui的运行依赖于Python 3,所以首先得有一个Python 3环境,然后可以用pipx安装 。

首先,安装pipx

python3 -m pip install --user pipx

在用户路径添加新的路径

python3 -m userpath Append ~/.local/bin

最后,安装gdbgui

pipx install gdbgui

使用gdbgui进行调试

使用gdbgui调试一个简单的C++程序,熟悉其功能。进入到源代码目录:

cd examples/c

make

运行这些命令后,调试器会在浏览器中弹出打开。

使用gdbgui在浏览器中远程多语言调试

 

这样会在本地浏览器打开,也可以通过执行gdbgui启动一个gdbgui实例,默认是监听127.0.0.1的本地5000端口。可以通过--port指定监听端口,通过-r指定监听0.0.0.0 这样就可以远程用IP:port访问了(注意安全)。

gdbgui调试界面详解

gdbgui的web界面有很多部件,包括顶部Load Binary条,右上角的调试控制器工具条、设置按钮和信息菜单;

页面中间是调试内容页分左中右三块,分别为文件树,代码区和右边的调试信息窗口。

页面的底部是信息输出和最下面的DGB命令工具。

顶部工具栏

执行文件加载:gdbgui的web界面有很多选项。在页面顶部,看到一个名为Load Binary的部分,可用于加载程序二进制文件(具有gdbgui运行所在的相对路径),可以给它传递参数。请注意,这儿仅接受可执行文件。

使用gdbgui在浏览器中远程多语言调试

 

调试控制器:

在页面的右侧,是gdbgui的控制器部分,控制器将允许开发人员控制调试的一些流程:比如从头开始重新启动程序跳到下一个断点步进(循环单步模式)退出函数退出到一个功能调用。所有控件也支持键盘快捷键。

使用gdbgui在浏览器中远程多语言调试

 

系统设置

可以通过单击页面右上方的齿轮图标来浏览调试器的设置部分。设置项的信息都很明确,不过需要懂英文。

使用gdbgui在浏览器中远程多语言调试

 

"Add breakpoint to main after loading executable",加载可执行文件后给main函数添加断点。

"Maximum number of source file lines to display":源文件显示最大行数,设置数字。

"Pretty print dynamic variables (requires restart",美化动态变量显示

"Refresh all components when a command is sent from the console",向终端发送命令时刷新组件,可以在每个命令之后刷新所有视觉视图(例如输入n下一行执行内容)。

"Print all sent commands in console, including those sent automatically by gdbgui",在控制台中打印所有命令的这个复选项,选中后选就可以在信息输出框显示运行的所有命令,还会显示gdbgui调试时候在后台运行的所有命令。在大多数情况下,最好取消选中此选项,因为它会使终端控制台输出比较杂乱不好读取。

"Add syntax highlighting to source files",对源文件语法高亮。

还可以设置调试器的主题(比如码农们喜欢的深色模式monokai)。

调试内容页

加载可执行文件时,会在页面中间看到带有已应用断点的源代码。此外,还有一个下拉部分,其中显示了用于编译可执行文件的所有源文件的列表。

一般无需通过下拉菜单中指定源文件,但是对于一些语言比如Rust和Golang需要从文件树指定mail函数所在文件。

使用gdbgui在浏览器中远程多语言调试

 

在最右侧面板是最重要调试信息面板。

调用堆栈和局部变量:显示了在某个断点上的位置(文件和指令地址,这是指向断点的代码中的指针)。还可以探索与被攻击的断点有关的局部变量。通过单击此处的语言环境,都可以看到详细的树状视图,该视图可以以可视格式显示变量之间的复杂关系。

使用gdbgui在浏览器中远程多语言调试

 

下面接着是一个表达式部分,可以在程序的整个程序生命周期中持续观察某个值。对于预期在程序的不同序列中发生变化的变量,这将很有用。

使用gdbgui在浏览器中远程多语言调试

 

查看变量Tree

使用gdbgui在浏览器中远程多语言调试

 

调试器的一个很酷的功能是它将内存地址转换成超链接,因此可以单击这些内存变量。然后可以在下面的内存框中查看它所指的字符。

使用gdbgui在浏览器中远程多语言调试

 

调试器还有一个独特的变量可视功能是可以根据时间监视图表上某些变量的值。

使用gdbgui在浏览器中远程多语言调试

 

如果单击表达式部分中的图表图标,就可以显示带有X和Y线的图形。如果表达式的值在调试器的运行时中发生变化,则可以在图形上直观地看到此变化。

使用gdbgui在浏览器中远程多语言调试

 

接着下边则是断点信息框,信号框和寄存器信息框

使用gdbgui在浏览器中远程多语言调试

 

我们可以可以很清晰的查看设置的断点位置、断点对应的代码信息,寄存器信息也显示很详细。

信息输出框和gdb命令栏

页面底部是信息输出框和gdb命令输出部分。支持在此处输出gdb的命令行指令,熟悉gdb命令的同学也可以大显身手。

使用gdbgui在浏览器中远程多语言调试

 

结论

本文虫虫给大家介绍了一个GDB的web插件gdbgui,通过该插件可以实现通过Web浏览器进行程序调试。同时支持远程进行调试,调试界面优美,功能强大,就算是有好用的IDE,该工具也值得大家去尝试一下。



Tags:浏览器   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一. 配置yum源在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repovim /etc/yum.repos.d/google-chrome.repo按i进入编辑模式写入如下内容:[google-chrome]name=googl...【详细内容】
2021-12-23  Tags: 浏览器  点击:(7)  评论:(0)  加入收藏
Safari是苹果在iPhone和iPad上的默认网络浏览器。虽然我们天天都在使用,但是,你是否深入研究了Safari的所有功能和设置?"无痕浏览"、"阅读器"视图和下载文件等标准选项只是其...【详细内容】
2021-12-16  Tags: 浏览器  点击:(21)  评论:(0)  加入收藏
大家好,我是Stark-C。油猴简介【油猴】一款免费的浏览器扩展和最为流行的用户脚本管理器,它是一个附加组件(扩展程序),让用户安装一些脚本使大部分HTML为主的网页改变得更方便易...【详细内容】
2021-12-13  Tags: 浏览器  点击:(46)  评论:(0)  加入收藏
年末,又到了各大厂商盘点年度最佳的时候了。不过让世超感到意外的是 Google 竟然给自己 Chrome 的插件,做了一个 2021 年精选集锦,挑选出了 13 款今年最热门的 Chrome 插件。...【详细内容】
2021-12-13  Tags: 浏览器  点击:(19)  评论:(0)  加入收藏
当我们浏览知乎、Youtube、贴吧、CSDN等等,总会遇到服务商一些广告;复制文章的时候,剪切板总是自带一些版权信息;还有一些网页配色很亮,眼睛看着很不舒服。反正就是各种不爽。给...【详细内容】
2021-12-08  Tags: 浏览器  点击:(27)  评论:(0)  加入收藏
谷歌访问助手插件是专门针对chrome谷歌浏览器而开发的一款访问插件,可以为谷歌搜索,谷歌chrome商店,gmail邮箱提供加速服务,解决打不开的问题。这款插件可以帮助我们在使用谷歌...【详细内容】
2021-12-03  Tags: 浏览器  点击:(13)  评论:(0)  加入收藏
微软似乎正努力增强 Edge 浏览器和网页端 Office 之间的整合联动。Reddit 社区用户 u/Leopeva64-2指出,Edge Canary 的最新版本在标签的右键菜单中有一个新选项。如果你在窗...【详细内容】
2021-11-11  Tags: 浏览器  点击:(35)  评论:(0)  加入收藏
IOS15推送后,Safari也支持扩展了,这里给大家推荐几款Safari扩展软件,希望对你手机使用有所帮助。 扩展功能 IOS15可以通过设置——Safari浏览器——更多扩...【详细内容】
2021-11-08  Tags: 浏览器  点击:(135)  评论:(0)  加入收藏
一、判断是否IE浏览器(支持判断IE11与edge)function IEVersion() {var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串var isIE = userAgent.indexOf("comp...【详细内容】
2021-11-02  Tags: 浏览器  点击:(40)  评论:(0)  加入收藏
作为当今最差的浏览器,虽说IE即将推出历史的舞台,但是因为项目需要还是需要支持。那么必须判断是否是IE,如果是IE,需要做些特殊处理。document.documentMode 是IE特有的属性,可以...【详细内容】
2021-10-25  Tags: 浏览器  点击:(36)  评论:(0)  加入收藏
▌简易百科推荐
非法购买公民信息、开发人脸认证规避技术……今年年初,广东省公安厅网安部门侦破全国首例破解“青少年防沉迷系统”的新型网络犯罪案件,抓获犯罪嫌疑人13名,查处非...【详细内容】
2021-12-28    人民日报客户端  Tags:数据安全步   点击:(5)  评论:(0)  加入收藏
就在今天,腾讯方面宣布将在2022年1月31日下架企业QQ和营销QQ,其实这一消息的降临并不让笔者意外,因为早在今年的10月28日20点之后,企业QQ和营销QQ就被停止了续费服务。相信很多...【详细内容】
2021-12-27  科技探险家    Tags:企业QQ   点击:(20)  评论:(0)  加入收藏
日前,上海交通大学发布《全球电竞之都评价报告》,对全球15个致力于发展电竞之都的城市进行评价,上海作为中国城市电竞发展的排头兵,其拥有众多优质电竞企业及完整产业集群,因此排...【详细内容】
2021-12-27  经济日报    Tags:电竞   点击:(3)  评论:(0)  加入收藏
为优化网络氛围环境,微博又开始整顿用户信息了。本月月初,微博官方发布公告,要求昵称中带有如“二货”“SB”“瘪三”“娘炮”等明显低俗或侮辱性词汇的用户尽快修改,否则将面临...【详细内容】
2021-12-24  运了个营    Tags:微博   点击:(10)  评论:(0)  加入收藏
昨日谷歌宣布,自2022年12月19日开始停止对OnHub的软件支持,OnHub路由器仍将提供Wi-Fi信号,但用户无法用谷歌Home应用程序管理它。无法更新Wi-Fi网络设置、添加额外的Wifi设备或...【详细内容】
2021-12-22  雷峰网    Tags:Google OnHub   点击:(5)  评论:(0)  加入收藏
IT之家 12 月 20 日消息,百度网盘青春版 iOS 客户端今日晚间率先开启内测,安卓客户端将在稍后内测。使用苹果 iPhone 的IT之家小伙伴可以点此下载内测版,需要先下载 TestFlight...【详细内容】
2021-12-21  IT之家    Tags:百度网盘   点击:(10)  评论:(0)  加入收藏
对于拼车单,是接还是不接,不少网约车司机表示很矛盾。接吧,钱少事多,常常跑了个寂寞,不接吧,车多客少,挑三拣四没饭吃。 在平台大力推广拼车单之下,不少司机迫于生活压力,最终还是打...【详细内容】
2021-12-17  网约车情报分享    Tags:滴滴   点击:(9)  评论:(0)  加入收藏
蓝鲸TMT频道12月16日讯,据饿了么官方微信公众号,近日,在圆桌会上,蓝骑士与平台交流了配送安全问题。饿了么表示,线上将技术手段融入安全防护;线下将持续进行安全培训,并试点智能头...【详细内容】
2021-12-17    金融界  Tags:饿了么   点击:(24)  评论:(0)  加入收藏
开源最前线(ID:OpenSourceTop) 猿妹编译项目地址: https://github.com/restic/restic全球知名代码托管平台 GitHub 今天就重磅发布了今年的年度报告——《2021 年度 O...【详细内容】
2021-12-17  Python部落    Tags:   点击:(9)  评论:(0)  加入收藏
新京报快讯 据中国网络视听节目服务协会网站消息,12月15日,中国网络视听节目服务协会发布了《网络短视频内容审核标准细则》(2021)。中国网络视听节目服务协会组织有关短视频平...【详细内容】
2021-12-16    新京报  Tags:短视频   点击:(11)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条