共用方式為


公用語言執行時間和運算式評估

編譯器,例如 Visual Basic 和 C# (唸成 c 井字),為目標通用語言執行階段 (CLR),會產生 Microsoft 中繼語言 (MSIL),也就是較新編譯成機器碼。 CLR 提供偵錯引擎 (DE) 產生的程式碼進行偵錯。 如果您打算將您專屬的程式語言整合到 Visual Studio 的 IDE,您可以選擇要編譯為 MSIL,因此將不需要撰寫自己的 DE。 不過,您必須撰寫能夠評估您的程式語言的內容中運算式的運算式評估工具 (EE)。

討論

電腦語言的運算式通常會剖析來產生一組資料物件和一組用來操作這些運算子。 比方說,「 A + B 」 可能會被剖析以套用加法運算子 (+) 資料的運算式的物件"A"和"B、"可能會導致另一個資料物件。 總資料的物件、 運算子和其關聯的集合最常以在程式中樹狀目錄中,在樹狀結構節點的運算子和資料物件在分支。 已被分成樹狀架構形式的運算式通常稱為剖析樹狀目錄中。

一旦剖析運算式之後的符號供應商 (SP) 稱為來評估每個資料物件。 比方說,如果同時在多個方法,那麼這個問題,定義"A""的 A?"必須回答之前都可以確定 a 的值。 預存程序所傳回的回應就像一個 「 第五個堆疊框架上第三個項目 」 或者 「 靜態記憶體的開頭之外的 50 位元 a 配置給這個方法 」。

除了程式本身的產生 MSIL,CLR 編譯器也可能會產生程式資料庫 (.pdb) 檔案會被寫入的十分具有描述性偵錯資訊。 只要專屬語言編譯器會產生與 CLR 編譯器相同格式的偵錯資訊,請 CLR 預存程序是無法識別語言的名稱為資料物件。 一旦被識別為已命名的資料物件,得知 ee 給予用於繫結器物件產生關聯 (或繫結) 的資料物件保存的值,該物件的記憶體區域。 DE 然後取得或設定資料物件的新值。

專利的編譯器可以提供 CLR 偵錯資訊,藉由呼叫ISymbolWriter介面 (定義在。NET Framework 的命名空間中System.Diagnostics.SymbolStore)。 專利的編譯器編譯成 MSIL,並寫入偵錯資訊,透過這些介面,可以使用 CLR DE 和 SP. 這可以大幅地簡化專用語言整合 Visual Studio 的 IDE。

當 CLR DE 呼叫專屬的 EE 評估運算式時,DE 提供得知 ee 給予預存程序並繫結器物件的介面。 因此,撰寫 clr 偵錯引擎表示則必須只有實作適當的運算式評估工具的介面; CLR 會負責繫結,並為您處理的符號。

請參閱

其他資源

撰寫一般的語言執行階段運算式評估工具