使用VsCode偵錯UE5的PuerTs

2022-11-02 18:01:28

使用VsCode偵錯UE5的PuerTs

1、下載測試的Demo專案

設定PuerTs的步驟這裡不贅述。

2、準備工作

2.1 開啟專案

正常來說,直接開啟專案可以看到如下畫面


如果直接點選執行,可以發現下方的 Output Log 視窗已經開始 Print 了很多案例。
是因為該專案預設執行的是QuickStart.ts。

2.2 開啟TsGameInstance.cpp

3、新增VsCode斷點

3.1 在VsCode找到QuickStart.ts,隨便斷一個點

(這裡我們以 L17 為例)

4、 修改虛擬機器器埠 (8889)

(如果不知虛擬機器器的用途,可以檢視ZombieYang大佬的推文
回到TsGameInstance.cpp中
將 註釋的程式碼 取消註釋

圖片過長,目前程式碼如下:

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設定

5.2 選擇 Node.js : Attach

5.3 更改埠為 (8889)

6、開始Debug

6.1 啟動VsCode待命

①首先選擇5.2新增的Debug設定

②點選左側綠色 三角形
可以看到如下示意框

6.2 啟動2.1的專案

不出意外已經成功被中斷。

7、 盡情Debug~




參考:

[UE] 1.64.2的VSCode無法斷點偵錯TS

Puerts Inspector指南(一)在UE4和Unity裡偵錯Javascript