Unity 使用ILRuntime时,错误日志看不懂的问题,无法快速定位热更新层的报错行号

Unity在接入 ILRuntime之后,如果程序报错,有些情况下的日志压根看不懂
例如:

InvalidOperationException: Collection was modified; enumeration operation may not execute.
在这里插入图片描述对于类似问题,很难快速定位到错误的地方,我们要去寻找错误地方时,往往需要打印很多日志,才能定位到出错的位置,常常因为找错浪费大量的时间。

因此我先到了一种方案,将错误捕获下来,将异常信息打印出来
如下:
双击以下文件
在这里插入图片描述
进入之后可以看到 ILIntepreter.cs文件之后可以看到这一句
在这里插入图片描述
修改:我们在外面 套一层错误捕获
如下图
在这里插入图片描述

                                                    try
                                                    {
                                                        esp = redirect(this, esp, mStack, cm, false);
                                                    }
                                                    catch (Exception e)
                                                    {
                                                        var stacktrace =
                                                            this.AppDomain.DebugService.GetStackTrace(this);
                                                        Debug.LogError(stacktrace);
                                                        throw new NotSupportedException(stacktrace + "\r\n" +
                                                            e.Message);
                                                    }

我们在重新运行试试
在这里插入图片描述
由此方法,可以很快定位到我们热更层代码锁报错的行号。
我们就可以正对性的专门调试对应的位置即可
NotSupportedException: IL_025a: call System.Boolean System.Collections.Generic.Dictionary`2/Enumerator<System.String,Game.HexInfo>::MoveNext()

如果热更新层遇到类似其他错误,导致看不懂,可以采用类似的方法,捕获错误来快速定位热更新的错误行号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天不走 明天就要跑了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值