C#脚本实践(五): 调试器

本文介绍了在C#脚本开发中,如何在没有成熟调试器的情况下,通过printf和命令输入进行调试。讨论了Unity使用MonoDevelop和UnityDebugger插件进行调试,包括直接执行和挂载到进程两种方式。重点讲述了挂载调试过程,涉及调试服务器、socket连接及调试DLL需要mdb文件的细节。
摘要由CSDN通过智能技术生成
  • 以前用过lua, 调试时很痛苦. 当然现在已经有比较成熟的调试器了, 比如decoda
  • 在没有调试器之前都是怎么调试的呢?
    • printf打印到控制台之类的输出窗口. 如果做了热更新的话可以边改边看
    • 输入命令, 让控制台显示结果. 对于C++来说控制台是个很不爽的东西, 因为每个指令都要写个解析函数. 而脚本则可以直接把脚本语句当指令敲进去, 比如CsharpRepl
  • 当然, 最理想的情况还是能够下断点, 单步跟踪
  • Unity使用MonoDevelop作为调试器, 幸运的是, MonoDevelop和UnityDebugger插件都是开源的, 所以很容易山寨过来
  • MonoDevelop有两种方式启动调试:
    • 直接执行, 就像VS里按F5一样.
    • 挂接到进程, 就是先启动程序, 然后把调试器挂上去. 这种对于脚本来说比较实用, 因为可以修改一下继续调试, 不用重新启动游戏
  • Mono调试时是有个调试服务器的, 可以通过socket连接客户端与服务器. 如果从MD里启动, 则MD是调试服务器. 如果是Attach方式, 则游戏是那个server.
  • 以Attach方式为例: 
     int port = (int)(56000 + (GetCurrentProcessId() % 1000));
     char options[255];
     sprintf_s(options, 255, "--debugger-agent=transport=dt_socket,address=127.0.0.1:%d,server=y", port);
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值