C# 如何解释这个堆栈跟踪

C# 如何解释这个堆栈跟踪,c#,c++,windows-phone-8,access-violation,C#,C++,Windows Phone 8,Access Violation,我最近发布了一个WindowsPhone8应用程序。 该应用程序有时似乎会随机崩溃,但问题是它会崩溃而不会崩溃,我得到的唯一信息是输出上的一条消息,该消息告诉我存在访问冲突,但没有提供任何详细信息。 所以在发布了坠机报告后,我能够从中获得更多的信息,但它们对我来说有点神秘 有关资料如下: Problem function: unknown //not very useful Exception type: c0000005 //this is the code for Access violat

我最近发布了一个WindowsPhone8应用程序。 该应用程序有时似乎会随机崩溃,但问题是它会崩溃而不会崩溃,我得到的唯一信息是输出上的一条消息,该消息告诉我存在访问冲突,但没有提供任何详细信息。 所以在发布了坠机报告后,我能够从中获得更多的信息,但它们对我来说有点神秘

有关资料如下:

Problem function: unknown //not very useful
Exception type: c0000005 //this is the code for Access violation exception
Stack trace: 
Frame    Image        Function      Offset 
0        qcdx9um8960                0x00035426 
1        qcdx9um8960                0x000227e2
我不习惯使用内存指针et similia,也不习惯看到这样的堆栈跟踪

所以我有这些问题:

  • 我应该如何解释/阅读这些信息,每一条信息的含义是什么
  • 有没有办法利用这些信息来针对我的问题搜索
  • 在VS2012中调试时,是否有方法获取这些信息
  • 注:

    • 我不是问什么是访问违规
    • <> Li >我把它标记为C和C++,因为我的代码是在C语言中,但是通过C++实现生成异常(我是半猜测),对于WebBuffor组件
    编辑:

    我尝试将调试类型设置为纯本机,这让我获得了与开发中心崩溃报告中相同的信息。这样,当抛出异常时,调试器会中断,并让我查看已解除配置的代码,不幸的是,没有qcdx9um8960.pdb文件(即使在Microsoft Symbol Server上),因此我不知道导致错误的函数名

    这种崩溃“不应该”是由托管代码引起的,因此您可以寻找应用程序错误调用某些系统或库API的情况。那太乏味了。问题可能与你的应用程序无关,它可能完全是其他人代码的内部问题。例如,当用户浏览到某个邪恶的页面时,WebBrowser可能会崩溃。或者,失败的代码可能运行在一个甚至从未运行过代码的线程上。根据您观察到的调试器在访问冲突之前没有显示任何消息,以及调用堆栈上只有两个帧的事实,我怀疑这是最有可能的

    因此,您应该首先关注(相当)可靠的重新编程场景:将(经常或通常)产生崩溃的(最小)步骤集。这可能涉及采访经历过崩溃的用户,或者可能涉及您的一些测试自动化,以尝试加快失败率


    一旦你做到了这一点,微软(或其他第三方)将承担责任——托管代码永远不会导致未经处理的异常,比如访问冲突。该场景可能会提示您如何更改应用程序的行为以避免出现问题,因为真正的修复程序可能需要很长时间才能发布和分发。

    奇怪的是,在web上搜索图像名称“qcdx9um8960”会返回多个引用Windows Phone 8和WebBrowser控件的结果。收集答案和回复(有些甚至是通过MSFT),以下是您可能需要了解的内容:

    • 如果您将应用程序从Windows Phone 6/7升级到8,请确保您仍然没有引用任何6/7 DLL。一,
    • 确保您没有在调试模式下测试或发布软件。可能缺少“qcdx9um8960.pdb”文件,从而导致访问冲突。一,
    • “…如果应用程序打开了多个WebBrowser副本,则可能存在已知竞争条件问题。请查看您的代码是否无意中创建了多个实例。”1
    • 该图像“qcdx9um8960”引用的是高通DirectX驱动程序DLL。也许这不是WebBrowser组件的错,而是它用来呈现网页的DirectX驱动程序。二,
    • 图像的名称表明,崩溃发生在由高通Snapdragon S4 Plus驱动、型号为MSM8960的设备上。三,
    • 假设上面的处理器,并交叉引用使用该芯片的Windows手机,您可能会看到诺基亚Lumia 920T上出现的问题。3这并不是说驱动程序不适用于多个处理器架构或手机
    在DLL存在的情况下,还有其他一些关于崩溃和调试问题的问题,所以对您来说很不幸,我认为您可能会受到一些第三方软件的影响,这些软件有一些未解决的问题


    工具书类 一,

    二,


    3

    +1用于澄清笔记中的问题和思考过程。我不知道全部答案,但“帧图像功能偏移”实际上是一个格式错误的表格,已压缩为一行,它告诉你的是,当异常发生时,你是两个堆栈帧,我认为
    偏移量
    是它退出堆栈时的值,所以第一个函数在
    0x00035426
    调用,错误发生在
    0x000227e2
    @ScottChamberlain嘿,谢谢,我从来没有想到,我在想问题是由一个物体内部的图像引起的frame@ScottChamberlain-那不是德语。看起来更像瑞典语。你有应用程序的“地图”文件吗?链接器可以生成一个映射文件,列出所有符号及其地址。地图文件将搜索“偏移量”编号。感谢您的回复,我已经找到了您建议的大部分链接。1.不是我的情况2。对我来说似乎是错误的,pdb是调试文件,但不应该导致崩溃,它们只包含调试3的符号。这可能是我们的应用程序的情况,因为它总是有多个WebBrowser,我们已经向MS发送了一封邮件,要求对该问题进行更多解释,因为这是他们的工程之一。问题:您如何发现qcdx9um8960与高通Snapdragon S4 Plus有关?Qualcomm Snapdragon S4称,谷歌仅返回qcdx9um8960的14个结果,没有任何结果Plus@FabioMarcolini:我通过参考文献2了解了高通公司的驱动程序。名称中的“qc”是Qualcomm,“dx9”是