使用VsCode调试UE5的PuerTs

1、下载测试的Demo项目

配置PuerTs的步骤这里不赘述。

2、准备工作

2.1 打开项目

正常来说,直接打开项目可以看到如下画面

使用VsCode调试UE5的PuerTs-LMLPHP
如果直接点击运行,可以发现下方的 Output Log 窗口已经开始 Print 了很多案例。
是因为该项目默认执行的是QuickStart.ts。

2.2 打开TsGameInstance.cpp

使用VsCode调试UE5的PuerTs-LMLPHP

3、添加VsCode断点

3.1 在VsCode找到QuickStart.ts,随便断一个点

(这里我们以 L17 为例)
使用VsCode调试UE5的PuerTs-LMLPHP

4、 修改虚拟机端口 (8889)

(如果不知虚拟机的用途,可以查看ZombieYang大佬的推文
回到TsGameInstance.cpp中
将 注释的代码 取消注释
使用VsCode调试UE5的PuerTs-LMLPHP
图片过长,目前代码如下:

void UTsGameInstance::OnStart()
{
    //GameScript = MakeShared<puerts::FJsEnv>();
    GameScript = MakeShared<puerts::FJsEnv>(std::make_unique<puerts::DefaultJSModuleLoader>(TEXT("JavaScript")), std::make_shared<puerts::FDefaultLogger>(), 8889);
    GameScript->WaitDebugger();
    TArray<TPair<FString, UObject*>> Arguments;
    Arguments.Add(TPair<FString, UObject*>(TEXT("GameInstance"), this));
    GameScript->Start("QuickStart", Arguments);
}

注意看修改后的代码。我这里已经将端口更改为 " 8889 "
同时打开了WaitDebugger(),目的是Client等待V8的虚拟机(Client和V8虚拟机的关系同样可以查看ZombieYang大佬的推文

5、添加VsCode配置

5.1 打开VsCode的Debug配置

使用VsCode调试UE5的PuerTs-LMLPHP

5.2 选择 Node.js : Attach

使用VsCode调试UE5的PuerTs-LMLPHP

5.3 更改端口为 (8889)

使用VsCode调试UE5的PuerTs-LMLPHP

6、开始Debug

6.1 启动VsCode待命

①首先选择5.2添加的Debug配置
使用VsCode调试UE5的PuerTs-LMLPHP
②点击左侧绿色 三角形 使用VsCode调试UE5的PuerTs-LMLPHP
可以看到如下示意框
使用VsCode调试UE5的PuerTs-LMLPHP

6.2 启动2.1的项目

不出意外已经成功被中断。

7、 尽情Debug~

使用VsCode调试UE5的PuerTs-LMLPHP




参考:

[UE] 1.64.2的VSCode无法断点调试TS

Puerts Inspector指南(一)在UE4和Unity里调试Javascript

11-02 17:28