如何从使用C#编写的WinRT应用程序获取崩溃日志和堆栈跟踪?

8
我刚开始在C#上编写一个Windows Store应用程序,它还没有发布到Windows Store。当我将正在开发的应用程序的调试版本交给我的测试团队时,如果崩溃了,他们在哪里可以找到崩溃日志和堆栈跟踪?在构建应用程序时,我需要做些什么吗?我正在寻找标准解决方案,而不是第三方库或从最终用户那里发送报告的东西。我来自Android世界,在那里ADB logcat始终包含Java堆栈跟踪,我正在寻找C#/WinRt中的等效方法。

1
有一个标准的方法。你需要自己处理创建日志文件的整个过程。这对于任何.NET应用程序都是适用的。你可以获取迷你转储文件:https://dev59.com/5GvXa4cB1Zd3GeqPL7jq?rq=1 或使用质量报告:http://blogs.msdn.com/b/windowsstore/archive/2012/06/27/improving-apps-with-quality-reports.aspx - Security Hound
我的应用程序还没有在商店中发布,我现在正在开发中,我没有访问任何Windows Store仪表板的权限。 - satur9nine
最有可能的方法是使用Windows中的EventViewer(查看事件日志)。几乎所有应用程序崩溃都会在此报告。对于.NET应用程序(包括ModernUI),据我所知,记录了相当不错的错误描述。 - paiden
我查看了事件查看器,发现了崩溃的信息,但没有看到C#堆栈跟踪。 - satur9nine
这篇文档页面看起来很有帮助:http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.application.unhandledexception.aspx。看起来我必须在这里注册一个事件处理程序并自己将堆栈跟踪写入日志文件?可怕的是它说:“但是,此异常对象的类型、消息和堆栈跟踪不能保证与引发的原始异常相匹配”。 - satur9nine
@satur9nine - 如果你想要堆栈跟踪信息,你需要编写自己的日志文件来记录这些信息。 - Security Hound
1个回答

0

崩溃转储将包含调用堆栈和更多信息。

要收集崩溃转储,请先执行以下 regedit 脚本:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps]
"DumpFolder"="C:\\Temp\\CrashDumps"
"DumpCount"=dword:00000002
"DumpType"=dword:00000002

第二步,重现崩溃。

第三步,通过执行以下命令停止崩溃转储收集:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps]
"DumpFolder"=-
"DumpCount"=-
"DumpType"=-

接下来,从 C:\Temp\CrashDumps 获取崩溃转储信息。

请参阅 MSDN 获取更多信息


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接