日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

C#腳本實踐(五): 調(diào)試器

 quasiceo 2012-12-17

C#腳本實踐(五): 調(diào)試器

分類: 引擎研究 1139人閱讀 評論(5) 收藏 舉報
  • 以前用過lua, 調(diào)試時很痛苦. 當然現(xiàn)在已經(jīng)有比較成熟的調(diào)試器了, 比如decoda
  • 在沒有調(diào)試器之前都是怎么調(diào)試的呢?
    • printf打印到控制臺之類的輸出窗口. 如果做了熱更新的話可以邊改邊看
    • 輸入命令, 讓控制臺顯示結(jié)果. 對于C++來說控制臺是個很不爽的東西, 因為每個指令都要寫個解析函數(shù). 而腳本則可以直接把腳本語句當指令敲進去, 比如CsharpRepl
  • 當然, 最理想的情況還是能夠下斷點, 單步跟蹤
  • Unity使用MonoDevelop作為調(diào)試器, 幸運的是, MonoDevelop和UnityDebugger插件都是開源的, 所以很容易山寨過來
  • MonoDevelop有兩種方式啟動調(diào)試:
    • 直接執(zhí)行, 就像VS里按F5一樣.
    • 掛接到進程, 就是先啟動程序, 然后把調(diào)試器掛上去. 這種對于腳本來說比較實用, 因為可以修改一下繼續(xù)調(diào)試, 不用重新啟動游戲
  • Mono調(diào)試時是有個調(diào)試服務器的, 可以通過socket連接客戶端與服務器. 如果從MD里啟動, 則MD是調(diào)試服務器. 如果是Attach方式, 則游戲是那個server.
  • 以Attach方式為例: 
    1.  int port = (int)(56000 + (GetCurrentProcessId() % 1000));  
    2.  char options[255];  
    3.  sprintf_s(options, 255, "--debugger-agent=transport=dt_socket,address=127.0.0.1:%d,server=y", port);  
    4.  char* args = options;  
    5.  mono_jit_parse_options (1, &args);  
    6.  mono_debug_init (MONO_DEBUG_FORMAT_MONO);  

  • MD那邊可以直接使用Unity的debugger插件, 當然它只認"unity"開頭的進程:
  • 另外需要注意的是, 調(diào)試的DLL必須有mdb文件, 相當于pdb文件. MD默認是生成pdb文件的, 所以需要改成mdb的調(diào)試信息才可以.
  • 之后就一切順利了, 斷點, 單步跟蹤, 監(jiān)視器什么的都很完美:

C#腳本實踐(四): 反射與序列化

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多