写点什么

VS Code 调试太难?这款可视化代码调试工具值得拥有

  • 2020-02-27
  • 本文字数:2013 字

    阅读完需:约 7 分钟

VS Code调试太难?这款可视化代码调试工具值得拥有

这是一个在调试期间可视化数据结构的 VS Code 扩展,使用它之后,你可以清晰明了的看到不同数据之间的关系。


一个名叫 hediet 的外国程序员开源了一个在调试期间可视化数据结构的 VS Code 扩展——Debug Visualizer。



这个扩展程序可以在 VS Code 中调试任何编程语言,当然,目前最适配的编程语言是 JavaScript 和 TypeScript,另外 C#、Java 和 PHP 也进行了相应的测试。

如何安装使用?

安装此扩展后,使用命令 Open a new Debug Visualizer View 打开新的可视化器视图。在这个视图中,你可以输入一个表达式,该表达式在逐步分析你的代码时会进行评估和可视化,例如


    kind: { graph: true },    nodes: [ { id: "1", label: "1" }, { id: "2", label: "2" } ],    edges: [{ from: "1", to: "2", label: "edge" }]}
复制代码


你可以通过编写自己的函数,从自定义数据结构中提取这些调试数据。

哪些数据可被可视化呢?

很多人可能会问,这个可视化代码调试工具都支持哪些东西可视化呢?基本上你能想到的,它都可以做到可视化。

图形可视化

Graphviz 和 Vis.js 可视化工具可以渲染与 Graph 界面匹配的数据。


interface Graph {  kind: { graph: true };  nodes: NodeGraphData[];  edges: EdgeGraphData[];}
interface NodeGraphData { id: string; label?: string; color?: string; shape?: "ellipse" | "box";}
interface EdgeGraphData { from: string; to: string; label?: string; id?: string; color?: string; dashes?: boolean;}
复制代码


graphviz 可视化工具可以通过使用 SVG 查看器来查看 viz.js 创建的 SVG。


Plotly 可视化

plotly visualizer 可以通过 plotly 来渲染与界面匹配的 JSON 数据。


export interface Plotly {  kind: { plotly: true };  data: Partial<Plotly.Data>[];}// See plotly docs for Plotly.Data.

复制代码


Tree 可视化

树可视化器渲染与 Tree 接口匹配的数据。


interface Tree<TData = unknown> {  kind: { tree: true };  root: TreeNode<TData>;}interface TreeNode<TExtraData> {  id: string | undefined;  name: string;  value: string | undefined;  emphasizedValue: string | undefined;  children: TreeNode<TExtraData>[];  data: TExtraData;  isMarked: boolean;}

复制代码


AST 可视化

AST 可视化工具渲染与 Ast 接口匹配的数据。


interface Ast  extends Tree<{      position: number;      length: number;    }>,    Text {  kind: { text: true; tree: true; ast: true };}
复制代码


除了树视图外,AST 可视化工具还会高亮显示源代码的来源。


Grid 可视化

Grid 可视化工具会渲染与以下接口匹配的数据。


export interface Grid {  kind: { array: true };  columnLabels?: { label?: string }[];  rows: {    label?: string;    columns: {      content?: string;      tag?: string;      color?: string;    }[];  }[];  markers?: {    id: string;
row: number; column: number; rows?: number; columns?: number;
label?: string; color?: string; }[];}
复制代码

Text 可视化

文本可视化工具渲染与 Text 接口匹配的数据。


interface Text {  kind: { text: true };  text: string;  mimeType?: string;  fileName?: string;}
复制代码


mimeType 和 fileName 的文件扩展名用于语法高亮显示。

SVG 可视化

SVG 可视化工具渲染与 Svg 接口匹配的数据。实际的 SVG 数据必须存储在 text 中。


interface Svg extends Text {  kind: { text: true; svg: true };}
复制代码


点图可视化


点图可视化工具渲染与 DotGraph 接口匹配的数据。


interface DotGraph extends Text {  kind: { text: true; dotGraph: true };}
复制代码


Viz.js(Graphviz)用于渲染。

哪些数据可被提取?

该工具中包含有 JavaScript/TypeScript 数据提取器,数据提取器可将任意值转换为可视化数据。这个扩展会自动在被调试者中注入以下数据提取器,当然用户也可以注册自定义数据提取器。

ToString

只需对值调用 .toString() ,就可将数据转换为文本类型。

TypeScript AST

  • 直接可视化 ts.Node

  • Record 和 [ts.Node] 的可视化。如果记录包含 fn 键,则将为每个节点显示它们的值。

As Is 数据提取器

将数据直接输入到可视化工具。

使用方法 getDebugVisualization

调用 .getDebugVisualization(),就可将数据转换为可视化工具的直接输入。

Plotly y-Values

使用 plotly 绘制数字数组。

对象图

构造一个图形,其中包含从表达式求值到的对象可到达的所有对象。使用广度搜索构造图,在 50 个节点后停止。

Array Grid

可以为数组数据创建 Grid visualization。

其它事项

该扩展支持多行表达式,例如点击 shift+enter 可添加新行,点击 ctrl+enter 可计算表达式。当只有一行时, enter 是提交当前表达式,当有多行时,enter 插入另一个换行符。



经过该扩展程序开发者的测试,可与 TypeScript / JavaScript 库一起很好地工作。


GitHub 开源地址:


https://github.com/hediet/vscode-debug-visualizer/tree/master/extension


2020-02-27 14:555452

评论

发布
暂无评论
发现更多内容

《Operating System Concepts》阅读笔记:p626-p628

codists

操作系统

北京大风来,带了什么来

AI时代的一滴水

人生修炼

上千元改一份简历,真的值得吗

安全乐谷

面试 找工作 简历 实习

摩尔线程精彩亮相2025中国移动云智算大会,以全栈AI赋能智算新时代

新消费日报

香港首届Web3人工智能与RWA产业投融生态对接峰会蓄势待发

TechubNews

人工智能 AI

香港首届Web3人工智能与RWA产业投融生态对接峰会蓄势待发

TechubNews

区块链 人工智能 AI

如何使用通义灵码玩转Docker - AI助手提升开发效率

阿里巴巴云原生

Docker

PIRF 429:True or False

Echo!!!

English

PIRF430 - Job Interview

Echo!!!

English

冲破次元壁!初音未来梦幻联名丨华硕ROG DAY暨2025新品发布会

新消费日报

ATRNX.AI 全智能量化 Agent 引领金融科技新浪潮——第七届全国金融大数据及 AI 战略融合发展大会在杭召开

TechubNews

区块链 人工智能 web3

GitHub封锁?推荐5个国产的Git仓库替代平台

程序员晚枫

GitHub 开源

《Operating System Concepts》阅读笔记:p629-p635

codists

操作系统

如何使用 Grafana 连接 Easyearch

极限实验室

Grafana easysearch

2025年最佳的5个找工作AI助手:全面指南

安全乐谷

AI 面试 找工作 实习 agent

智能游戏开发神器 ,Dimensity Profiler让掉帧、内存飙升问题无所遁形

科技热闻

征程 6 VIO Frame 时间戳介绍

地平线开发者

自动驾驶 算法 地平线征程6

【HarmonyOS 5】敏感信息本地存储详解

GeorgeGcs

鸿蒙 本地存储 敏感信息

Easysearch S3 备份实战

极限实验室

S3 easysearch

区块链 ETF 类 APP 的主要功能

北京木奇移动技术有限公司

软件外包公司 区块链ETF ETF软件

通义灵码助力JavaScript开发:快速获取API与智能编码技巧

阿里巴巴云原生

js

星闪技术代际领先,低时延、精定位、大带宽引领无线短距通信升级

科技热闻

【征程 6】工具链VP示例中Cmakelists解读

地平线开发者

算法 自动驾驶; 地平线征程6

如何使用通义灵码玩转Docker - AI助手提升开发效率

阿里云云效

Docker

2025黑神话悟空更新了什么内容 Mac电脑怎么玩黑神话悟空

阿拉灯神丁

mac电脑虚拟机 CrossOver Mac下载 Mac游戏下载 苹果电脑游戏推荐 黑神话悟空

Arthas profiler(使用async-profiler对应用采样,生成火焰图)

刘大猫

教育 Arthas 大模型 社会科学 人文学科

【HarmonyOS 5】鸿蒙实现手写板

GeorgeGcs

鸿蒙 HarmonyOS 本地存储 敏感信息

欢迎投稿!Community Over Code Asia 2025 议题征集全面启动!

Apache IoTDB

深入研究:京东商品评论API详解

tbapi

京东商品评论接口 京东API 京东评论API 京东商品评论采集

深入研究:京东店铺所有商品API详解

tbapi

京东API 京东店铺所有商品API 京东店铺商品采集

深入研究:京东商品视频 API 详解

tbapi

京东API 京东商品视频API

VS Code调试太难?这款可视化代码调试工具值得拥有_语言 & 开发_hediet_InfoQ精选文章