转自机器之心

DeBug 太枯燥?让 VS Code 画个图,自动帮你理清数据结构与代码思路,这就是 Reddit 2K 多点赞的开源新工具。

项目地址:https://github.com/hediet/vscode-debug-visualizer

写代码,难免会遇到各种神奇的问题,代码短我们在脑海中「运行」一遍也就差不多能找出原因。但代码要是比较长,错误就会隐藏比较深了,这个时候,不论你是采用 print() 大法,还是善用 assert 语句,或者干脆设置断点,DeBug 总是一条慢慢排除的道路。

那么,能不能有一种更优雅的 DeBug 方式,以更简洁的信息快速帮我们找到代码的问题所在?

有的,VS Code 最新推出的可视化 DeBug,便能以图的方式快速展示数据结构。

我们先看看效果,如下动图将断点设置为第 32 行定义双向链表,随后一行行运行代码就会在右图展现出对应的数据结构图。

这种可视化非常优雅,而且该工具也会根据数据结构以不同的方式展现,例如树形、表格、曲线和图等。如下动图展示几种不同的可视化方式:

效果上确实非常惊艳,它与之前的 DeBug 方式采用完全不同的展现形式。目前该 VS Code Debug Visualizer 在 JavaScript/TypeScript 上有比较好的效果,在 C#、Java 和 PHP 上也正在积极测试,其它语言也还都能用。

正确的使用姿势

安装此扩展程序后,使用命令< Open a new Debug Visualizer View >打开新的可视化视图。在此视图里,设置断点逐步执行后,表达式的执行与动态可视化都会展示在里面。右上角的刷新键可将当前的可视化工具视图弹出到新的浏览器窗口,同时还可以通过展开详细信息的窗口去选择数据提取器以及可视化调试器。

可视化调试器使用的是特定的 JSON 数据,相关支持的 JSON 数据模式可参考原 GitHub 项目。

当前的可视化表达式应该是作为 JSON 对象字符串来进行运算的,并与所支持的可视化调节器相匹配。而这个 JSON 字符串可能被单引号或者双引号所包含(也有可能没有引号),因此不能忽略转义符。

举一个案例:

"{ "kind": { "text": true }, "text": "some text\nmore text" }".

对于 TypeScript/JavaScript 等语言,因为已经集成了数据抽取器,因此可以直接自动可视化。而其它没有数据抽取器的语言,就需要自定义数据结构与可视化器之间的关系了

多种可视化器皆可定制

该扩展还内置了其他可自定义的可视化调节器,尤其在 debug 时使用起来非常直观,可以根据面对不同的处理对象,可选择更易于理解的可视化方式。比如图表可视化,Plotly 可视化,Tree 可视化,网格可视化,文本可视化等等。在其种类非常丰富的同时,操作性也较为简便,效果非常直观,小编选取了几种类型作为案例:

Plotly 可视化

AST 可视化

在使用 AST 可视化还会呈现源代码,在选择其节点时,还会突出显示源代码中的跨度。

Python 怎么解?

我们读者最常用的就是 Python 语言,然而遗憾的是,Debug Visualizer 并不支持 Python 数据结构的自动可视化。不过,Python 开发者还是非常热情的,他们尝试手动添加自定义可视化功能。

项目维护者正在讨论添加对 Python 的支持。

那么如果要手动调用 Debug Visualizer,开发者在 Demo 中新提交了一个 Python 示例。我们需要以 JSON 格式来表示数据,并完成自定义可视化,注意该 JSON 需要满足 Debug Visualizer 的格式定义。

如果在循环语句中设置断点,那么就可以导入 json_graph 来可视化结果,如下所示为 10 个节点的可视化展示。

在 Reddit 社区上,也有很多开发者在讨论 Python 是不是能用,有没有更便捷的方式自动可视化 DeBug,而不是在 DeBug 前还需要手动先配置一番。

VS Code Debug Visualizer 确实非常酷,但支持 Python 的它会更有意思。现在不论是项目维护者还是其它开发者,都在关注这个问题,期待过一段时间它能完美支持 Python。

参考链接:https://www.reddit.com/r/programming/comments/f88zom/i_made_an_extension_for_visual_debugging_in_vs/

推荐阅读 ↓↓↓

1.不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事

2.如何才能成为优秀的架构师?

3.从零开始搭建创业公司后台技术栈

4.“37岁,985毕业,年薪50万,被裁掉只用了10分钟”

5.37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...

6.副业&接私活必备的 10 个开源项目!

7.你知道哪10大算法统治着全球吗?

8.15张图看懂瞎忙和高效的区别!

代码调试神器:VS Code 开源新工具!相关推荐

  1. 实时可视化 Debug:VS Code 开源新工具,一键解析代码结构

    来自机器之心 有没有一种更优雅的 DeBug 方式,以更简洁的信息快速帮我们找到代码的问题所在? 有的,它就是 VS Code 最新推出的可视化 DeBug,能以图的方式快速展示数据结构. 我们先看看 ...

  2. python 如何边改代码边调试_Python 代码调试神器:PySnooper

    给大家推荐本我自己写的电子书<PyCharm中文指南>,把各种 PyCharm 的高效的使用技巧用GIF动态图的形式展示出来.有兴趣的可以看它的在线文档: http://pycharm.i ...

  3. vue 代码调试神器

    一.序 工欲善其事,必先利其器.作为一名资深程序员,相信必有一款调试神器相伴左右,帮助你快速发现问题,解决问题.作为前端开发,我还很年轻,也喜欢去捣鼓一些东西,借着文章的标题,先提一个问题:大家目前是 ...

  4. PHP代码调试神器Whoops

    1.传统的PHP代码调试全靠页面抛出的堆栈信息找出错误位置,效率低而且不直观 但是自从安装了Whoops这个组件一切都变得很简单 2.首先确保自己的机器已经安装compose 3.然后在项目的根目录下 ...

  5. 微软免费的开源代码编辑器Visual Studio Code 1.17新增多项功能

    微软在2017年9月发布的免费开源代码编辑器Visual Studio Code(v1.17)进行了一些重要的更新.支持将区域标记带入代码折叠,并提升内置终端的性能. 通过代码折叠,开发人员可以使用行 ...

  6. 查找论文对应开源代码的神器 Papers with Code

    Papers with Code 是一个总结了机器学习论文及其代码实现的网站.大多数论文都是有GitHub代码的.这个网站最好的地方就是对机器学习做了任务分类,检索对应的模型非常方便. 带有代码的论文 ...

  7. 一周焦点 | 李飞飞离职谷歌;Facebook推OCR神器Rosetta;TensorFlow开源新库TFDV

    ▌业界焦点 1.阿里从来不只属于马云,但马云会永远属于阿里 9 月 10 日教师节,阿里巴巴集团创始人马云发出题为"教师节快乐"的公开信宣布:一年后的阿里巴巴 20 周年之际,即 ...

  8. 如何使用FT2232H适配器和开源调式工具OpenOCD对ARM Cortex M7系列MCU进行SWD接口调试

    该篇幅介绍如何使用FT2232H适配器和开源调式工具OpenOCD对ARM Cortex M系列MCU进行SWD接口调试? 如何连接FT2232HL Debuger Adapter和目标板的的SWD调 ...

  9. 优秀的开源测试工具和框架推荐:精选十大神器!

    目录 引言 Katalon Studio Selenium Appium JMeter SOAP UI Robot Framework Watir JUnit Robotium Citrus 结语 引 ...

  10. 阿里发布新工具,直接帮你改代码!网友:工作量又减轻了~

    欢迎关注方志朋的博客,回复"666"获面试宝典 来自:掘金,作者:阿里妈妈前端快爆 链接:https://juejin.cn/post/6977259197566517284 Vu ...

最新文章

  1. WKWebView 的使用简介
  2. 任何时候不要把普通PC机接入到三层交换机
  3. 通讯录新建分组功能php,微信通讯录分组怎么设置
  4. 编写Tesseract的Python扩展
  5. 『协议』XML-RPC 协议规格说明
  6. 存储基础 — 文件描述符 fd 究竟是什么?
  7. fedora 19 gnome 3.8 关闭笔记本盖子的动作
  8. java如何调用linux命令_java程序中如何调用linux命令
  9. tt c mysql t4 bll_通过T4模板实现代码自动生成
  10. 记录一个表,COUNT多列的写法
  11. 当年的好记星、诺亚舟都去哪了?
  12. TTL电路和CMOS电路的区别和…
  13. 第十届全国大学生GIS应用技能大赛下午(试题及参考答案)
  14. idea 查询项目代码行数_idea统计代码行数Statistic的步骤详解
  15. win7桌面上计算机图标名称怎么改,win7电脑桌面图标排列方式如何设置 win7电脑桌面图标排列方法...
  16. 界面配色方案(转载)
  17. Oracle EBS MRP模块之预测冲减
  18. kubernetes(K8S)容器部署,重新启动后,node节点提示notready无法正常工作。
  19. STM32CubeIDE 复制工程
  20. 华为测试心率软件,华为运动健康如何测心率 华为运动健康测心率方法

热门文章

  1. 构建Python软件大厦系列
  2. 做程序员的老婆应该注意的一些事情
  3. [cocos2d-x]动作+场景切换
  4. 累加数据段中的前3个字型数据
  5. Linux sites
  6. 「代码随想录」关于多重背包,你该了解这些!
  7. Illustrator 教程,如何在 Illustrator 中重新塑造文本?
  8. 如何在 Apple TV 上获得电影推荐?
  9. AeroSpike踩坑手记1:Architecture of a Real Time Operational DBMS论文导读
  10. 对话DDM:分布式数据库中间件全解析