You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity使用Application.logMessageReceived能否捕获崩溃日志及StackOverflowException

问题答复

1. 崩溃场景下onLogMessageReceived是否会触发?

分两种场景判断:

  • 若崩溃由托管层可捕获异常触发(如普通空引用、数组越界异常),且异常抛出后进程未被立刻终止,该事件会正常触发
  • 若为以下崩溃场景,事件不会触发:
    • 引擎原生C++层报错(如内存访问越界、渲染管线故障、Native插件抛出未处理异常)
    • 进程被系统直接回收(如内存不足OOM、应用无响应用户/系统强制杀进程)

2. 该方案能否保存崩溃场景下的日志?

仅能覆盖托管层可捕获异常对应的崩溃场景,无法覆盖原生层崩溃、进程被强杀的场景。另外需要注意:如果writeReportInFile方法的IO操作存在耗时、或执行写文件逻辑时触发了新的异常,也可能出现日志未写完进程就退出的情况。如果需要更完整的崩溃日志采集,建议搭配Unity自带的崩溃日志收集能力,或额外实现Native层的崩溃捕获逻辑。

3. 能否捕获StackOverflowException?

不能。StackOverflowException属于.NET运行时层面的不可恢复严重异常,一旦抛出运行时会直接终止进程,不会走常规的异常分发流程,也不会触发Application.logMessageReceived事件,该监听方案无法捕获这类异常。

内容的提问来源于stack exchange,提问作者Aditya kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 06:30:00