AppBoxFuture: 服務模型的在線調試

  框架內的服務模型(ServiceModel)用於處理各類業務邏輯(如最簡單的CRUD操作),在設計時以類似於僞代碼的形式存在,發佈時後端會通過Roslyn轉換並編譯爲運行時代碼。爲了方便開發者更簡單的調試服務模型,作者利用開源的netcoredbg初步實現了在線調試功能。

一、實現原理

  原本想參照VSCode實現調試功能,但VSCode使用的vsdbg調試器有許可限制,無法用於第三方IDE,好在GitHub上的netcoredbg項目使用MIT許可且支持VSCode的調試協議。作者畫了個流程圖簡要說明一下調試流程:

  1. WebIDE定位需要調試的服務方法並設置相應的斷點後啓動調試(如果方法有參數則需要輸入參數值);
  2. 服務端DebugService收到調試請求後轉換並編譯Debug版本的服務代碼,然後啓動netcoredbg子進程(需要重定向標準輸入輸出,netcoredbg通過標準輸入輸出接收調試指令並響應),初始化調試子進程後發送運行命令啓動AppContainer子進程,AppContainer子進程在啓動時加載已編譯好的目標服務實例並注入容器內;
  3. 服務端DebugService在一切準備就緒後發送調用服務方法(調試目標)的請求至AppContainer子進程,開始調試過程(處理netcoredbg調試事件)。

VSCode調試協議參考:

  1. https://github.com/Microsoft/vscode-debugadapter-node/blob/master/debugProtocol.json
  2. https://github.com/Microsoft/vscode-debugadapter-node/blob/master/protocol/src/debugProtocol.ts

二、調試演示

  1. 目前僅實現了通過鼠標定位變量查看相應值;
  2. 尚未實現查看虛擬實體類及其成員的值。

三、本篇小結

  本篇介紹瞭如何實現IDE的服務模型調試功能,GitHub上的運行時已更新可供測試。作者還在努力爭取到年底前達到基本可用的狀態,請您多多點贊支持!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章