首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 動態編譯執行調試(二):動態實例建立與偵錯支援

     編輯:關於C語言

動態建立實例

`CreateInstance(code, typeName)` / `CreateInstanceFromFile(file, typeName)`:依型別名稱(完整名稱或介面名)自動尋找並實例化第一個符合類別。

關鍵約束:`MarshalByRefObject`


[Serializable]
public class HelloWorld : MarshalByRefObject, IHelloWorld
{
    public string Say() => "Hi";
}
  • **必須繼承 `MarshalByRefObject`**,否則主域持有序列化複本引用,子域卸載後記憶體無法釋放(洩漏)。
  • 介面 `IHelloWorld` 定義於共用組件,主域與子域雙向參考。

動態程式碼偵錯三步驟

  1. 編譯生成偵錯資訊:`CompilerParameters.IncludeDebugInformation = true`。
  2. 原始碼映射:
    • 檔案編譯:`.pdb` 自動記錄原始碼路徑,支援偵錯。
    • 記憶體編譯:未找到指定原始碼路徑的 API,**目前僅支援檔案編譯偵錯**。
  3. 設定中斷點:程式碼中插入 `System.Diagnostics.Debugger.Break()`,或 Visual Studio 附加至進程下斷點。

偵錯效果示意

動態程式碼偵錯畫面

動態編譯的程式碼現可在 Visual Studio 中單步偵錯、檢視變數、呼叫堆疊。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved