Flurry 分析在 Windows Phone 7 中崩溃
我已将 Flurry (http://www.flurry.com/) 集成到我的 Phone 7 应用程序中。唯一需要的代码是应用程序启动中的这一行。
FlurryWP7SDK.Api.StartSession(ApiKeyValue);
但是,一旦命中该行,应用程序就会崩溃并出现 KeyNotFoundException。下面包含堆栈跟踪。它似乎正在查询独立的存储设置,并且当密钥不存在时失败。
有没有人有过此错误的经验,甚至成功地将 flurry 集成到 Phone 7 应用程序中?
at System.ThrowHelper.ThrowKeyNotFoundException()
at System.Collections.Generic.Dictionary`2.get_Item(String key)
at System.IO.IsolatedStorage.IsolatedStorageSettings.get_Item(String key)
at A.ca98fb38190f0d5cad84c67a779d17229.c204dba68825403c905efd7bfd067b17b(String ce0360de492f1f363775feaf6d6a8ced5, Object c8d4be677f7ee63f6756e13f285072523)
at A.c3f1105d518a239d73e2236200494de25.set_cfca54db015a16ab23de44b4d5c65e9a3(String c8d4be677f7ee63f6756e13f285072523)
at FlurryWP7SDK.Api.StartSession(String apiKey)
at AppName.App.Application_Launching(Object sender, LaunchingEventArgs e)
at Microsoft.Phone.Shell.PhoneApplicationService.FireLaunching()
at Microsoft.Phone.Execution.NativeEmInterop.FireOnLaunching()
编辑
与 Flurry 支持人员讨论后,发现 KeyNotFoundException 被 Flurry 代码捕获。但是,如果您的调试器设置要在引发异常时中断,则无论如何您都将中断调试器。然后继续执行就会起作用,因为异常被 Flurry 捕获并处理。
我无法验证这是否是解决方案,因为我无法再访问指示错误的开发环境,但这似乎是一个可能的解决方案。
I've integrated Flurry (http://www.flurry.com/) into my phone 7 app. The only code needed is this line in application launching
FlurryWP7SDK.Api.StartSession(ApiKeyValue);
However, as soon as that line is hit the application crashes with a KeyNotFoundException. The stack trace is included below. It appears to be querying isolated storage settings and failing when the key doesn't exist.
Does anyone have any experience with this error or even successfully integrating flurry into a Phone 7 app?
at System.ThrowHelper.ThrowKeyNotFoundException()
at System.Collections.Generic.Dictionary`2.get_Item(String key)
at System.IO.IsolatedStorage.IsolatedStorageSettings.get_Item(String key)
at A.ca98fb38190f0d5cad84c67a779d17229.c204dba68825403c905efd7bfd067b17b(String ce0360de492f1f363775feaf6d6a8ced5, Object c8d4be677f7ee63f6756e13f285072523)
at A.c3f1105d518a239d73e2236200494de25.set_cfca54db015a16ab23de44b4d5c65e9a3(String c8d4be677f7ee63f6756e13f285072523)
at FlurryWP7SDK.Api.StartSession(String apiKey)
at AppName.App.Application_Launching(Object sender, LaunchingEventArgs e)
at Microsoft.Phone.Shell.PhoneApplicationService.FireLaunching()
at Microsoft.Phone.Execution.NativeEmInterop.FireOnLaunching()
Edit
After discussions with Flurry support it appears that the KeyNotFoundException is caught by Flurry code. However if your debugger settings are to break when the exception is thrown you will break into the debugger regardless. Continuing execution will then work because the exception is caught and handled by Flurry.
I can't verify that this is the solution because I no longer have access to the dev environment that was indicating the error, but it appears to be a likely solution.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我为 Flurry 工作。我们在 Windows 7 平台上有许多成功的部署。您和 Buju 可能正在遇到一个我们之前没有注意到的新问题。请发送电子邮件至 [email protected],因为诊断可能涉及讨论帐户特定详细信息。一旦我们确定了根本原因,我们就可以发回此帖子,以便社区从我们的调查中受益。感谢您与 Flurry 合作。
编辑
我只是想跟进 Mac 的评论,因为在调试过程中 KeyNotFoundException 可能会以两种方式表现出来。正如 Mac 所指出的,我们确实捕获了 KeyNotFoundException,但是,调试器首先会看到异常,然后我们才能在库中处理它。调试器的行为由“调试”>“调试”中的设置决定。例外情况。
如果选中 Thrown 下的复选框,程序将停止并输出上面的堆栈跟踪。如果未选中“Thrown”下的复选框,则输出将生成如下错误:
mscorlib.dll 中发生了“System.Collections.Generic.KeyNotFoundException”类型的第一次机会异常(这是 Buju 收到的消息)
程序将继续遵循此消息,因为它只是作为程序中某处发生异常的通知。有关首次机会异常的更多信息,请参阅以下文章:
什么是首次机会异常 - http://blogs.msdn.com/b/davidklinems/archive/2005/07/12/438061.aspx
如何处理(禁用)首次机会报告 - http://www.helixoft.com/blog/archives/24
I work for Flurry. We have many successful deployments on the Windows 7 platform. You and Buju may be experiencing an emerging issue that has not come to our attention previously. Please email [email protected] as the diagnosis may involve discussing account specific details. Once we determine the underlying cause we can post back to this thread so the community has the benefit of our investigation. Thanks for working with Flurry.
Edit
I just wanted to follow up on Mac's comment as the KeyNotFoundException may manifest in two ways during debugging. As Mac noted we do caputure the KeyNotFoundException, however, the debugger sees the exception first before we can handle it within our library. The debugger's behavior is dictated by the setting in Debug > Exceptions.
If the checkboxes under Thrown are selected the program will be stopped and the stack trace above will be output. If the checkboxes under Thrown are not selected the output will generate an error like the following:
A first chance exception of type 'System.Collections.Generic.KeyNotFoundException' occurred in mscorlib.dll (this is the message Buju received)
The program will continue following this message as it just serves as a notice that an exception occurred somewhere within the program. More information on first chance exceptions can be found in the following articles:
What is a first chance exception - http://blogs.msdn.com/b/davidklinems/archive/2005/07/12/438061.aspx
How to handle (disable) first chance reporting - http://www.helixoft.com/blog/archives/24