C# Flurry Analytics未记录未处理的异常

C# Flurry Analytics未记录未处理的异常,c#,windows-phone-8,flurry,C#,Windows Phone 8,Flurry,我在我的应用程序中使用Flurry Analytics for Windows Phone已有相当一段时间了。正常的日志记录工作得很好,但是我从来没有能够用WP8 v3.1.1版(目前是最新版本)的SDK捕获未处理的异常 我已经按照App.xaml.cs文件中关于装配SDK的说明进行了操作: private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) {

我在我的应用程序中使用Flurry Analytics for Windows Phone已有相当一段时间了。正常的日志记录工作得很好,但是我从来没有能够用WP8 v3.1.1版(目前是最新版本)的SDK捕获未处理的异常

我已经按照App.xaml.cs文件中关于装配SDK的说明进行了操作:

private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
    if (Debugger.IsAttached)
    {
        // An unhandled exception has occurred; break into the debugger
        Debugger.Break();
    }
    else
    {
        FlurryWP8SDK.Api.LogError("Application_UnhandledException", e.ExceptionObject);
    }
}
Windows Phone开发中心通过其“崩溃报告”图表告诉我,我的应用程序偶尔会崩溃,但在慌乱的“技术”>“错误”中,我从未看到任何错误被记录

有人知道为什么我没有通过Flurry获得这些有价值的反馈吗?我希望用它来强调任何可能通过测试的问题

为了澄清。。。我正在尝试从live应用程序、野外记录异常,而不是从本地开发/调试环境记录异常

另外,为了确认,Flurry会话正在按照建议启动:

private void Application_Launching(object sender, LaunchingEventArgs e)
{
    FlurryWP8SDK.Api.StartSession(AppSettings.FlurryApiKey);
}

private void Application_Activated(object sender, ActivatedEventArgs e)
{
    FlurryWP8SDK.Api.StartSession(AppSettings.FlurryApiKey);
    ...
}

试试这个,它会有用的

private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
        {
            if (Debugger.IsAttached)
            {
                // An unhandled exception has occurred; break into the debugger
                FlurryWP8SDK.Api.LogError("Application_UnhandledException", e.ExceptionObject);
                Debugger.Break();
            }
        }

不幸的是,Flurry从未向我提供修复,因此我最终将Flurry替换为用于捕获未处理的异常。BugSense工作得很好,为我提供了有意义的异常报告,我可以采取行动。

尝试添加EndSession()方法:


FlurryWP8SDK.Api.EndSession()调用强制创建会话文件,因此崩溃将存储在设备上。

谢谢,但我正在尝试在live app中捕获异常详细信息,而不是在开发过程中。抱歉-我应该说得更清楚。@Gavin如果您删除
if(Debugger.IsAttached)
部分,它就会工作。您应该始终捕获所有异常!我建议您订阅UnhandledException事件,调用Flurry的LogError,然后将异常标记为已处理。我有点困惑。我以为Debugger.IsAttached在设备上运行时总是错误的?我认为此检查允许在针对设备/仿真器进行测试时,通过Debugger.Break()从Visual Studio进行调试,在这种情况下,我对使用Flurry记录异常不感兴趣。我只对在野外记录实时错误感兴趣,但上面的代码表明我只在安装调试程序时记录错误。@yasen-这基本上就是我的原始代码所做的,因此没有任何进展。除非在live Windows手机上总是附加了调试器,这听起来是错误的?好吧,这里有两个想法。是否有仓促的会议开始?如果没有-这将不起作用。每件事都应该在一次会议中发生。另外,如果您没有将错误标记为已处理,并且应用程序立即退出,则Flurry可能没有足够的时间来存储错误信息。@yasen-感谢您的想法-非常感谢。。。有推荐的代码用于启动会话,而且确实正在捕获分析。但话说回来,我只知道有撞车事件发生,而对它们一无所知,所以我猜你描述的情况可能会发生。是否有某种方法将异常标记为在应用程序\u UnhandledException中处理?如果应用程序实际上无法捕获任何内容,那么建议将他们的代码添加到应用程序_UnhandledException中似乎没有什么意义。我想知道是否有更好的方法包装他们的代码,以便及时存储错误信息。顺便说一句:我也为这个问题打开了一张支持票,但到目前为止他们还没有回复。我只是希望有人遇到了这个问题并找到了解决办法。也许我应该问一个关于Flurry的替代方案的问题,它实际上可以成功地记录异常。可能是Flurry在WP上并不流行。要测试Flurry,您可以在调试时启用错误日志记录,并创建一个按钮或总是抛出异常的东西。查看他们是否记录了它(在不使用internet的情况下进行测试,以便您可以在独立存储中的文件中查看它)。UnhandledException事件的参数具有已处理属性。只要将其设置为true,异常将被忽略(应用程序不会关闭,商店中也不会出现崩溃报告)。检查将其标记为已处理是否会使Flurry工作。@yasen-我可以确认,即使我将handled设置为true,Flurry文件夹中也不会出现任何会话文件。我确实看到FlurryWP8SDK.Api.LogEvent调用出现了一个文件,只是没有看到FlurryWP8SDK.Api.LogError。
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
    if (Debugger.IsAttached)
    {
        // An unhandled exception has occurred; break into the debugger
        Debugger.Break();
    }
    else
    {
        FlurryWP8SDK.Api.LogError("Application_UnhandledException", e.ExceptionObject);
        FlurryWP8SDK.Api.EndSession();
    }
}