# DeBugWindow
**Repository Path**: odinsam/debug-window
## Basic Information
- **Project Name**: DeBugWindow
- **Description**: vscode extensions: odinsam-DeBugWindow 一个开发时候的用的调试窗口
- **Primary Language**: TypeScript
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2025-11-22
- **Last Updated**: 2025-12-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# odin-DebugWindows



[](https://www.odinsam.com)
一个强大的 VSCode 调试窗口扩展,可以在调试暂停时解析变量并显示为表格格式,支持多种编程语言和数据类型。
[功能特性](#-功能特性) • [快速开始](#-快速开始) • [使用指南](#-使用指南) • [支持的类型](#-支持的数据类型) • [开发指南](#-开发指南)
---
## 📖 简介
**odin-DebugWindows** 是一个专为 VSCode 开发的调试辅助扩展。当程序在调试模式下暂停时,你可以直接在调试窗口中输入变量名,扩展会自动解析变量值并以表格形式展示,支持分页、筛选、导出等功能。
### ✨ 核心特性
- 🎯 **智能变量解析** - 自动识别并解析多种数据类型
- 📊 **表格可视化** - 清晰直观的表格展示,支持分页和筛选
- 🔍 **智能建议** - 自动补全当前调试上下文中的变量名
- 📤 **数据导出** - 支持导出为 CSV 和 Excel 格式
- 🌍 **多语言支持** - 支持 C#、JavaScript、TypeScript、Vue 等项目
- 🔄 **自动清理** - 编译时自动清空调试窗口内容
- ⚠️ **异常解析** - 支持 C# Exception 类型解析,显示异常详细信息
- 🔗 **堆栈跟踪链接** - 堆栈跟踪中的文件路径可点击,直接定位到代码位置
- 🎨 **现代化 UI** - 简洁美观的用户界面
## 🚀 功能特性
### 1. 变量解析
- ✅ 在调试暂停时输入变量名即可解析
- ✅ 自动识别变量类型并选择合适的解析器
- ✅ 支持复杂数据结构(嵌套对象、数组等)
- ✅ 智能处理 JSON 字符串(包括多重转义)
- ✅ **异常解析** - 支持 C# Exception 类型,显示异常类型、消息、堆栈跟踪等信息
### 2. 表格显示
- ✅ 自动渲染表格,支持大量数据
- ✅ **分页功能** - 每页显示 20 行数据
- ✅ **实时筛选** - 输入关键词快速过滤数据
- ✅ **数据导出** - 一键导出为 CSV 或 Excel 格式
- ✅ 响应式设计,适配不同窗口大小
### 3. 智能建议
- ✅ 自动获取当前调试上下文中的变量
- ✅ 输入时显示变量名建议
- ✅ 支持键盘导航选择
### 4. 项目类型检测
- ✅ 自动检测项目类型(C#、JavaScript、TypeScript、Vue、Python、Java、Go、Rust 等)
- ✅ 根据项目类型选择相应的解析器
- ✅ 显示当前项目类型信息
### 5. 异常处理
- ✅ **Exception 解析** - 自动解析 C# Exception 对象
- ✅ **详细信息显示** - 显示异常类型、消息、来源、HResult、堆栈跟踪等
- ✅ **堆栈跟踪链接** - 堆栈跟踪中的文件路径和行号可点击,直接跳转到代码位置
- ✅ **内部异常支持** - 支持显示内部异常信息
- ✅ **异常数据字典** - 显示 Exception.Data 中的键值对
## 📦 安装
### 方式一:从 VSIX 安装
1. 下载最新版本的 `.vsix` 文件
2. 在 VSCode 中按 `Ctrl+Shift+P` (Windows/Linux) 或 `Cmd+Shift+P` (Mac)
3. 输入 `Extensions: Install from VSIX...`
4. 选择下载的 `.vsix` 文件
### 方式二:从源码安装
```bash
# 克隆仓库
git clone https://gitee.com/odinsam/debug-window.git
# 进入项目目录
cd debug-window
# 安装依赖
npm install
# 编译项目
npm run compile
# 按 F5 键在扩展开发宿主窗口中运行
```
## 🎯 使用指南
### 基本使用
1. **启动调试**
- 在 VSCode 中启动调试会话(按 `F5`)
- 在断点处暂停程序
2. **打开调试窗口**
- 在侧边栏找到"调试窗口"面板
- 或使用命令面板:`Ctrl+Shift+P` → `显示调试窗口`
3. **解析变量**
- 在输入框中输入变量名(如 `users`、`dataTable`)
- 按回车键
- 变量值会自动解析并显示为表格
4. **操作表格**
- **筛选**:在筛选框中输入关键词
- **分页**:使用"上一页"/"下一页"按钮
- **导出**:点击"导出 CSV"或"导出 Excel"按钮
### 支持的命令
在输入框中可以输入以下命令:
- `help` - 显示帮助信息
- `clear` - 清空消息和表格
- `time` - 显示当前时间
- `project` - 显示当前项目类型
### 使用示例
#### JavaScript/TypeScript 示例
```javascript
// 对象数组
const users = [
{ id: 1, name: "张三", age: 25 },
{ id: 2, name: "李四", age: 30 },
];
// JSON 字符串
const jsonStr = '[{"id":1,"name":"张三"},{"id":2,"name":"李四"}]';
```
在调试窗口中输入 `users` 或 `jsonStr`,即可查看表格数据。
#### C# 示例
```csharp
// DataTable
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Rows.Add(1, "张三");
dt.Rows.Add(2, "李四");
// List
List users = new List { ... };
// Dictionary
Dictionary dict = new Dictionary();
dict.Add("name", "张三");
dict.Add("city", "北京");
```
在调试窗口中输入 `dt`、`users` 或 `dict`,即可查看表格数据。

## 📋 支持的数据类型
### JavaScript/TypeScript
| 类型 | 说明 | 示例 |
| -------------- | -------------------------- | ---------------------------------- |
| JSON 对象/数组 | 自动解析 JSON 字符串 | `'[{"id":1}]'` |
| 数组 (Array) | 对象数组、简单值数组 | `[1, 2, 3]` |
| 对象 (Object) | 普通 JavaScript 对象 | `{id: 1, name: "test"}` |
| 类数组对象 | NodeList、Arguments 等 | `document.querySelectorAll('div')` |
| 基本类型 | string, number, boolean 等 | `"hello"`, `123`, `true` |
### C#
| 类型 | 说明 | 示例 |
| ------------------------ | -------------------- | ---------------------------- |
| DataTable | 数据表 | `System.Data.DataTable` |
| List | 泛型列表 | `List` |
| Dictionary | 字典 | `Dictionary` |
| 数组 (Array) | 普通数组 | `int[]`, `string[]` |
| 对象 (Object) | C# 对象 | 自定义类实例 |
| JSON 字符串 | 自动解析 | `"[{\"id\":1}]"` |
| Exception | 异常对象 | `System.Exception` |
| 基本类型 | int, string, bool 等 | `123`, `"hello"`, `true` |
> 💡 **提示**:更多类型支持正在开发中,详见 [扩展指南](./扩展指南.md)
## 🛠️ 开发指南
### 项目结构 
```
odin-DeBugWindow/
├── src/ # 源代码目录
│ ├── extension.ts # 扩展入口文件
│ ├── parsers/ # 解析器目录
│ │ ├── VariableParser.ts # 解析器基类
│ │ ├── JavaScriptParser.ts # JavaScript/TypeScript 解析器
│ │ └── CSharpParser.ts # C# 解析器
│ ├── providers/ # 提供者目录
│ │ └── DebugWindowViewProvider.ts # 调试窗口视图提供者
│ ├── types/ # 类型定义
│ │ └── index.ts
│ └── utils/ # 工具类
│ ├── ProjectTypeDetector.ts # 项目类型检测器
│ └── TableExporter.ts # 表格导出工具
├── assets/ # 资源文件
│ └── avatar.png # 扩展图标
├── scripts/ # 脚本文件
│ └── package-with-version.js # 打包脚本
├── package.json # 项目配置
├── tsconfig.json # TypeScript 配置
└── README.md # 项目说明
```
项目采用模块化、面向对象的设计架构
### 开发命令
```bash
# 安装依赖
npm install
# 编译项目
npm run compile
# 监听模式编译(自动重新编译)
npm run watch
# 代码检查
npm run lint
# 运行测试
npm test
# 生成 CHANGELOG
npm run changelog
# 打包扩展(交互式,支持版本递增)
npm run package
# 简单打包(不询问版本)
npm run package:simple
```
### 扩展解析器
如果你想为其他语言添加解析器支持
基本步骤:
1. 创建新的解析器类(继承 `VariableParser`)
2. 在 `ProjectType` 枚举中添加新类型
3. 在 `ProjectTypeDetector` 中添加检测逻辑
4. 在 `DebugWindowViewProvider.getParser()` 中注册解析器
详细说明请查看 [扩展指南.md](./doc/ExtendedGuide.md)。
## 📝 更新日志
查看 [CHANGELOG.md](./CHANGELOG.md) 了解详细的更新历史。
## 🤝 贡献指南
我们欢迎所有形式的贡献!
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'feat: 添加新功能'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
### 提交规范
请遵循 [Conventional Commits](https://www.conventionalcommits.org/zh-hans/) 规范:
- `feat`: 新功能
- `fix`: 修复 Bug
- `docs`: 文档更新
- `style`: 代码格式
- `refactor`: 重构
- `perf`: 性能优化
- `test`: 测试相关
- `chore`: 其他变更
## 📄 许可证
本项目采用 MIT 许可证。详情请查看 [LICENSE](./LICENSE) 文件。
## 🙏 致谢
- [VSCode Extension API](https://code.visualstudio.com/api)
- [Conventional Changelog](https://github.com/conventional-changelog/conventional-changelog)
## 📮 反馈与支持
- **问题反馈**:请在 [Issues](https://gitee.com/odinsam/debug-window/issues) 中提交
- **功能建议**:欢迎在 [Issues](https://gitee.com/odinsam/debug-window/issues) 中讨论
- **仓库地址**:https://gitee.com/odinsam/debug-window
---
**如果这个项目对你有帮助,请给个 ⭐ Star 支持一下!**
Made with ❤️ by [odinsam](https://www.odinsam.com)