安装EmmyLua 怎么配置lua launch.json文件 用id的那个
时间: 2025-07-22 10:51:26 浏览: 5
<think>我们正在配置EmmyLua的调试环境,特别是通过进程ID附加的方式进行调试。根据引用[3]中的步骤,我们需要配置VSCode的launch.json文件,选择"通过进程ID附加"(Attach to Process by ID)。以下是详细步骤:
1. 安装EmmyLua插件:在VSCode的扩展市场中搜索并安装EmmyLua插件。
2. 打开项目文件夹,并创建或打开launch.json文件:
- 在VSCode中打开你的项目文件夹。
- 转到“运行和调试”视图(快捷键Ctrl+Shift+D)。
- 点击“创建一个launch.json文件”或者如果已有launch.json则点击齿轮图标打开。
3. 配置launch.json:
- 在配置下拉菜单中,选择“EmmyLua New Debugger”或类似选项(具体名称可能因插件版本而异)。
- 然后选择“通过进程ID附加”(Attach to Process by ID)作为调试方式。
4. 填写配置信息:
- 在launch.json文件中,我们需要设置`type`为`emmylua_new`(根据插件文档,也可能是`emmylua`,请参考最新文档),并且`request`为`attach`。
- 需要指定进程ID(PID)。但是,通常我们不会在launch.json中写死PID,而是在启动调试时动态输入。不过,我们可以配置一个模板,然后在每次调试时输入PID。
一个示例的launch.json配置如下:
```json
{
"version": "0.2.0",
"configurations": [
{
"name": "EmmyLua Attach Debug",
"type": "emmylua_new",
"request": "attach",
"processId": "${command:pickProcess}",
"port": 7003 // 注意:端口号可能需要根据你的实际情况调整
}
]
}
```
这里使用了`${command:pickProcess}`,这样在启动调试时VSCode会弹出进程列表供你选择。
5. 获取Unity进程ID(如果你调试的是Unity中的Lua):
- 打开任务管理器(在Windows下按Ctrl+Shift+Esc),在“详细信息”选项卡中找到Unity进程,记录其PID。
- 或者,你也可以在启动调试时,在VSCode弹出的进程列表中选择Unity进程。
6. 启动调试:
- 在VSCode中,选择你刚刚配置的调试配置(“EmmyLua Attach Debug”),然后按F5或点击“启动调试”。
- 此时,VSCode会列出当前运行的进程,选择你要附加的Unity进程(或者直接输入PID)。
7. 在Unity中启动Lua调试:
- 确保你的Unity项目已经按照EmmyLua的要求配置了调试环境(例如,在Unity中执行了相应的Lua脚本来启动调试服务器,如引用[1]中提到的`debug.lua`)。
注意:端口号可能需要与Unity中启动的调试服务器端口一致。默认情况下,EmmyLua调试器使用7003端口,但也可以在launch.json中通过`port`属性指定。
引用[3]中还提到,如果Unity已经在运行,启动调试后VSCode会连接到Unity。当Unity停止运行后,需要重新选择新的进程ID(因为每次运行Unity可能会产生新的进程ID)。
另外,引用[2]提到EmmyLua支持多种Lua环境(如cocos, lua51, tolua, slua, xlua等),所以确保你的配置与你的Lua环境匹配。
如果遇到问题,请检查:
- 是否在Unity中正确启动了调试服务器(通过执行`require 'lua.debug'`等)。
- 端口号是否匹配。
- 防火墙是否阻止了连接。
§§相关问题§§
1. 如何确认EmmyLua调试器已成功附加到Unity进程?
2. 在配置EmmyLua调试时遇到连接失败的问题,应该如何排查?
3. 除了通过进程ID附加,EmmyLua还支持哪些调试方式?</think>### 配置 EmmyLua 的 launch.json 文件(通过进程ID调试)
以下是详细配置步骤,基于引用[3]的操作流程优化:
#### **步骤 1:安装必要插件**
1. 在 VSCode 扩展商店搜索安装 **EmmyLua** 插件
2. 建议同步安装 **Lua Debugger**(增强调试支持)
#### **步骤 2:创建 launch.json 文件**
1. 打开项目根目录
2. 进入 VSCode 调试界面(`Ctrl+Shift+D` 或点击左侧调试图标)
3. 点击 ➕ 创建配置文件,选择 **EmmyLua (Attach)** 模板
#### **步骤 3:配置 launch.json**
```json
{
"version": "0.2.0",
"configurations": [
{
"name": "EmmyLua 进程附加调试",
"type": "emmylua_new", // 核心配置项
"request": "attach",
"processId": "${command:pickProcess}", // 动态选择进程ID
"port": 7003, // 默认调试端口
"sourceRoot": "${workspaceFolder}" // 项目根路径
}
]
}
```
*关键参数说明:*
- `type`:必须为 `emmylua_new`(新版调试器)
- `request`:固定值 `attach`(附加进程)
- `processId`:使用 `${command:pickProcess}` 动态选择进程
- `port`:需与 Unity 调试端口一致(默认为 7003)
#### **步骤 4:获取 Unity 进程 ID**
1. 启动 Unity 编辑器
2. 打开任务管理器(Windows)或终端(macOS/Linux):
- **Windows**:任务管理器 → 详细信息 → 查找 `Unity.exe` 的 PID
- **macOS/Linux**:终端执行 `ps aux | grep Unity`
#### **步骤 5:启动调试**
1. 在 VSCode 按 `F5` 启动调试
2. 在弹出的进程列表中:
- 输入 Unity 的 **PID 数字**
- 或选择包含 "Unity" 的进程名
#### **验证成功标志**
调试控制台出现以下输出即表示连接成功:
```log
[Emmy] Debugger attached to process: [Unity PID]
[Emmy] Breakpoints ready at ${workspaceFolder}/example.lua
```
> **重要提示**:每次重启 Unity 后 PID 会变更,需重新执行步骤 4-5[^3]。
---
### 常见问题解决
| 问题现象 | 解决方案 |
|---------|----------|
| 连接超时 | 1. 检查防火墙设置<br>2. 确认 Unity 已执行 `require 'lua.debug'`[^1] |
| 断点不生效 | 1. 检查 `sourceRoot` 路径是否正确<br>2. 确认 Lua 文件在项目目录内 |
| PID 无效 | 1. 重启 VSCode 和 Unity<br>2. 使用任务管理器强制结束残留进程 |
---
阅读全文
相关推荐

















