# cursor-csharp **Repository Path**: await29/cursor-csharpc ## Basic Information - **Project Name**: cursor-csharp - **Description**: 这是一个用于在Cursor中调试C#/.NET Core应用程序的插件。它提供了强大的调试功能,支持断点管理、表达式求值、变量监视等特性。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-02-23 - **Last Updated**: 2025-02-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Cursor C# 调试插件 这是一个用于在Cursor中调试C#/.NET Core应用程序的插件。它提供了强大的调试功能,支持断点管理、表达式求值、变量监视等特性。 ## 最新更新 ### 2024-02-23 - 优化了日志系统,支持多参数日志记录 - 改进了错误处理和消息格式化 - 修复了断点管理中的类型问题 - 优化了调试器性能和内存使用 ## 开发指南 ### 构建和打包 ```bash # 安装依赖 npm install # 编译 npm run compile # 运行测试 npm run test # 构建和打包(包含编译、lint检查和webpack打包) npm run build # 创建 VSIX 包(用于发布) npx vsce package # 或指定基础URL npx vsce package --baseContentUrl https://gitee.com/await29/cursor-csharpc/raw/master --baseImagesUrl https://gitee.com/await29/cursor-csharpc/raw/master # 安装VSIX包 cursor --install-extension cursor-csharp-debugger.vsix ``` ### 项目结构 ``` cursor-csharpc/ ├── src/ # 源代码目录 │ ├── extension.ts # 扩展入口点 │ │ ├── debugger.ts # 调试器核心 │ │ ├── logger.ts # 日志系统 │ │ └── ... │ └── __tests__/ # 测试文件 ├── extension/ # 打包输出目录 │ └── out/ # 编译输出 ├── .vscode/ # VS Code 配置 ├── package.json # 项目配置 └── README.md # 项目文档 ``` ## 功能特性 ### 基础调试器框架 ✅ - [x] 基于 VSCode 调试适配器协议的调试器框架 - [x] 与 .NET Core 调试器的通信协议 - [x] 调试器生命周期管理(启动、连接、断开) - [x] 支持多线程调试 ### 断点管理 ✅ - [x] 源代码断点设置和删除 - [x] 条件断点支持 - [x] 断点状态管理和验证 - [x] 多文件断点管理 - [x] 函数断点支持 - [x] 日志点功能 - [x] 命中计数条件 ### 表达式求值 ✅ - [x] 监视窗口表达式求值 - [x] 悬停提示值显示 - [x] 复杂表达式求值 - [x] 函数调用支持 - [x] 支持 Lambda 表达式 - [x] 支持成员访问和数组索引 - [x] 支持条件表达式 ### 变量和作用域 ✅ - [x] 本地变量查看 - [x] 全局变量查看 - [x] 复杂对象展开和查看 - [x] 变量引用管理 - [x] 变量修改支持 - [x] 变量类型信息显示 ### 调试会话控制 ✅ - [x] 基本调试命令(继续、暂停) - [x] 单步执行(进入、跳过、跳出) - [x] 入口点自动停止 - [x] 调试会话配置 - [x] 异常处理和捕获 ### 性能优化 🔄 - [x] 变量引用缓存 - [x] 表达式解析缓存 - [x] 断点信息缓存 - [ ] 大型对象增量加载 - [ ] 延迟加载优化 - [ ] 内存使用优化 ### 用户体验 🔄 - [x] 详细的错误提示 - [x] 调试状态指示 - [x] 断点验证反馈 - [ ] 智能提示完善 - [ ] 配置自动补全 - [ ] 调试器路径自动检测 ## 系统要求 - Cursor 编辑器 (最新版本) - .NET Core SDK 3.1+ 或 .NET 5.0+ - Node.js >= 16.0.0 - netcoredbg 调试器 ## 快速开始 ### 1. 安装 #### 从 VSIX 安装 ```bash cursor --install-extension cursor-csharp-debugger.vsix ``` #### 从源码构建 ```bash # 克隆仓库 git clone https://github.com/cursor-csharp/cursor-csharp-debugger.git cd cursor-csharp-debugger # 安装依赖 npm install # 编译 npm run compile # 运行测试 npm run test # 打包 npm run package # 打包插件 npx vsce package npx vsce package --baseContentUrl https://gitee.com/await29/cursor-csharpc/raw/master --baseImagesUrl https://gitee.com/await29/cursor-csharpc/raw/master # 安装插件 cursor --install-extension dist/cursor-csharp-debugger.vsix ``` ### 2. 配置 在项目根目录创建或编辑 `.vscode/launch.json`: ```json { "version": "0.2.0", "configurations": [ { "name": "C# Debug", "type": "coreclr", "request": "launch", "program": "${workspaceFolder}/bin/Debug/net7.0/YourApp.dll", "args": [], "cwd": "${workspaceFolder}", "stopAtEntry": false, "env": { "ASPNETCORE_ENVIRONMENT": "Development" }, "logging": { "moduleLoad": false, "engineLogging": true, "programOutput": true, "exceptions": true }, "sourceFileMap": { "/Views": "${workspaceFolder}/Views" }, "justMyCode": true, "requireExactSource": false, "console": "internalConsole" }, { "name": "C# Attach", "type": "coreclr", "request": "attach", "processId": "${command:pickProcess}", "justMyCode": true, "logging": { "moduleLoad": false, "engineLogging": true } } ] } ``` #### 配置项说明 ##### 启动配置 (Launch) - `name`: 配置名称,显示在调试下拉菜单中 - `type`: 调试器类型,使用 "coreclr" 表示 .NET Core - `request`: 调试请求类型,"launch" 表示启动新进程 - `program`: 要调试的程序路径,通常指向编译后的 DLL - `args`: 传递给程序的命令行参数 - `cwd`: 工作目录,默认为项目根目录 - `stopAtEntry`: 是否在程序入口点停止 - `env`: 环境变量设置 - `logging`: 日志配置 - `moduleLoad`: 是否记录模块加载信息 - `engineLogging`: 是否记录调试引擎日志 - `programOutput`: 是否记录程序输出 - `exceptions`: 是否记录异常信息 - `sourceFileMap`: 源文件映射配置 - `justMyCode`: 是否只调试用户代码 - `requireExactSource`: 是否要求源文件完全匹配 - `console`: 控制台类型选择 ##### 附加配置 (Attach) - `name`: 配置名称 - `type`: 调试器类型 - `request`: 使用 "attach" 表示附加到现有进程 - `processId`: 要附加的进程ID - `justMyCode`: 是否只调试用户代码 - `logging`: 日志配置 ### 3. 使用 #### 基本调试操作 - `F5`: 开始调试/继续 - `Shift+F5`: 停止调试 - `F9`: 切换断点 - `F10`: 单步跳过 - `F11`: 单步进入 - `Shift+F11`: 单步跳出 #### 高级功能 1. 条件断点 - 右键断点 → 编辑断点 - 输入条件表达式 2. 监视表达式 - 在监视窗口添加表达式 - 支持复杂表达式和函数调用 3. 变量查看 - 悬停查看变量值 - 在变量窗口展开对象 - 修改变量值 ## 故障排除 ### 常见问题 1. 调试器无法启动 - 检查 .NET Core SDK 版本 - 验证 netcoredbg 路径 - 确认项目配置正确 2. 断点不生效 - 检查 PDB 文件是否生成 - 验证源码映射配置 - 确认断点位置有效 3. 表达式求值失败 - 检查表达式语法 - 验证变量是否在作用域内 - 确认表达式上下文正确 ### 诊断 1. 启用详细日志 ```json { "logging": { "engineLogging": true, "programOutput": true, "exceptions": true } } ``` 2. 日志位置 - Windows: `%USERPROFILE%\.cursor\extensions\logs` - Linux/macOS: `~/.cursor/extensions/logs` ## 贡献指南 1. Fork 项目并克隆到本地 2. 创建新的功能分支 3. 提交更改并添加测试 4. 推送到你的 Fork 5. 创建 Pull Request ### 开发规范 1. 代码风格 - 使用 TypeScript - 遵循 ESLint 规则 - 添加适当的注释 2. 测试要求 - 单元测试覆盖率 > 80% - 添加集成测试 - 包含性能测试 3. 文档要求 - 更新 API 文档 - 添加功能说明 - 更新示例代码 ## 许可证 MIT ## 支持 如果你遇到问题或有建议: 1. 查看 [故障排除指南](./docs/Troubleshooting.md) 2. 提交 [Issue](https://github.com/cursor-csharp/cursor-csharp-debugger/issues) 3. 参考 [API文档](docs/API.md)