

VS Code 开源新工具!实时可视化Debug,一键解析代码结构
source link: http://mp.weixin.qq.com/s?__biz=MzAxMTg2MjA2OA%3D%3D&%3Bmid=2649848702&%3Bidx=4&%3Bsn=7a40b815efaa5f7d6a8c16fc5c4eccc4
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本文转载 自:机器之心 | 参与:思、jamin
DeBug 太枯燥?让 VS Code 画个图,自动帮你理清数据结构与代码思路,这就是 Reddit 2K 多点赞的开源新工具。
项目地址: https://github.com/hediet/vscode-debug-visualizer
写代码,难免会遇到各种神奇的问题,代码短我们在脑海中「运行」一遍也就差不多能找出原因。但代码要是比较长,错误就会隐藏比较深了,这个时候,不论你是采用 print() 大法,还是善用 assert 语句,或者干脆设置断点,DeBug 总是一条慢慢排除的道路。
之前机器之心曾介绍过极简 DeBug 工具PySnooper ,我们只需要向感兴趣的函数增加一个装饰器,就能得到该函数的详细 log,包含哪行代码能运行、什么时候运行以及本地变量变化的确切时间等等。这个 GitHub 12.3K Star 量的 DeBug 工具,输出风格是这样色的:
左边是运行信息,右边是对应 NumPy 代码。
这种复杂的 DeBug 工具,看起来就比较劝退。此外,在 PyCharm 上使用断点调试,它输出的也是各种变量的定义与值,同样是一堆详细信息。
那么能不能有一种更优雅的 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/
---------- END ----------
推荐一个技术号
号主是非科班进微软的软件工程师 ,他会分享AI领域的机器学习、深度学习、NLP 、Python等前沿知识、技术资讯、干货笔记和优质资源。 关注就无套路送你一份BAT算法大礼包。
点个在看少个 bug :point_down:
Recommend
-
81
亚马逊在 AR 和 VR 的发展上的努力和前瞻性,大家应该没有太大的疑问,他们最新更推出了开发者服务工具 Sumerian,让使用者简易地创作 AR 和 VR app,或一般的 3D app 也可以。通过拖放物件到画面,就可以创建 3D 场景,而且通过 AWS 云端服务的能力,能进一步制作...
-
33
从 PDF 表格中获取数据是一项痛苦的工作。不久前,一位开发者提供了一个名为 Camelot 的工具,使用三行代码就能从 PDF 文件中提取表格数据。 PDF 文件是一种非常常用的文件格式,通常用于正式的电子版文件。它能够很好的将不同的...
-
29
Python 一键下载 UNPKG 项目代码解析 2020/7/8 0 人评论 7,129 次阅读 最近,州的先生打算用饿了么团队开源的Ele...
-
15
阿里妈妈出的新工具,给批量修改项目代码减轻痛苦冯雨感谢你关注我,微信:feng1234yu作...
-
8
新工具开源!一款双11养猫5亿用户的互动引擎 - 阿里巴巴淘系技术官方的个人空间 - OSCHINA - 中文开源技术交流社区
-
9
阿里妈妈又做了新工具,帮你把 Vue2 代码改成 Vue3 的 Vue3 已经出来有一段时间了,很多朋友早已熟读了文档,写了好几个 Demo,馋 Composition API 等新特性已久了。无奈,在实际工作中,大部分朋友还是不得不守着成千上...
-
7
V2EX › 程序员 Go-sword 一键生成 CRUD 可视化 web 后台 V2.0.0 升级发布 sunshinev ·...
-
3
作为一个前端或管理者,您是否遇到过以下场景 作为前端老鸟照样需要写页面布局,虽然你已经写了无数遍,但是效率和三年前的你差别不大 项目死亡线越来越近,而你还得出页面 /组件, 无法专注于业务逻辑 你已经费尽心力抽象了很多组...
-
9
Nginx 可视化神器!复杂配置一键生成,监控管理一条龙! 2022-12-31 18:22:23 nginxWebUI也可管理多个nginx服务器集群, 随时一键切换到对应服务器上进行nginx配置,也可以一键将某台服务器配置同步到其他服务器...
-
6
首页技术宅NginxWebUI Nginx配置 可视化一键生成 nginx.conf 配置文件NginxWebUI Nginx配置 可视化一键生成 nginx.conf 配置文件...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK