【问题标题】:Godot Sentry Crash reportingGodot Sentry 崩溃报告
【发布时间】:2020-06-19 10:38:25
【问题描述】:

我目前正在做一个小项目,我想在其中使用哨兵捕捉崩溃。该项目正在使用 Godot 的 c# 实现。

Sentry 需要包装所有正在执行的代码以捕获异常。

是否有一个通用入口点可以放置这个 try/catch 块,或者我需要将它添加到 Godot 调用的代码的每个部分中吗?

提前谢谢:)

【问题讨论】:

  • 对 Godot 人来说似乎更像是一个问题。当任何脚本出现错误时,AppDomain.UnhandledException 事件是否会触发? Sentry 会自动捕获它。否则,错误通知的方式是什么?
  • 在我的常规应用程序中,我只需要将它添加到包含所有必需调用的常规 MainWindow 方法中。
  • 有一个pull request使用C++实现crash reporting into Godot,但现在不太可能合并。

标签: c# mono sentry godot


【解决方案1】:

设置完成后,Sentry C# 客户端会将自身附加到一些 dotnet 框架异常挂钩,例如 AppDomain.UnhandledException。

因此,您不需要在任何地方植入 try / catch 子句。

只需像这样初始化SentrySDK 对象:

SentrySdk.Init(o => {
    o.Dsn = new Dsn("https://451cf9b0fd9e4f0294a0d15b6c36bce2@sentry.io/5170198");
});

框架应调用 Sentry 并自行创建报告。

我最近写了an article demonstrating just that。

【讨论】:

    【解决方案2】:

    我最近实现了 Sentry SDK,但 AppDomain.UnhandledException 在 Godot C# 单声道实现中不起作用。 您必须手动捕获未处理的异常,如下所示:

    SentrySdk.Init(opts => { opts.Dsn = "<sentry dsn url>"; });
    
    GD.UnhandledException += (sender, args) => {
        if (SentrySdk.IsEnabled) {
            SentrySdk.CaptureException(args.Exception);
        }
    };
    

    这是在 Godot 3.3+ 版本中添加的 https://github.com/godotengine/godot/pull/46174

    【讨论】:

      猜你喜欢
      • 2020-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      相关资源
      最近更新 更多