当我的windows winform应用程序运行时,我得到一个蓝屏。似乎只有一个用户得到了这个。我不确定在这个时候在哪里寻找问题。然而,我正在使用我在CodeProject上找到的一些代码来捕获鼠标事件和键盘事件,http://www.codeproject.com/KB/cs/globalhook.aspx,这可能是它吗?
我正在寻找关于如何捕获这个错误的建议。它只发生在40个用户中的一台计算机上,所以我有点困惑--特别是因为这个用户是主要的利益相关者。
更新:我们又多了一个事件--一个共同点就是对接端口。用户正在使用相同的坞站端口。
发布于 2010-07-13 03:10:17
您的代码不可能导致BSOD。如果你没有在内核模式下运行,那么BSOD不是你的错(如果你不介意这个双关语的话)。
OTOH,我见过托管代码在一段内核模式代码中触发错误。然后,这个bug导致了BSOD。在我的例子中,内核模式代码是一个VPN软件的一部分,它想要了解您正在运行什么代码,以便它可以决定是否允许您访问VPN。代码使用内核模式钩子来完成此操作,并且它们有一个由加载大量程序集触发的错误。
显然,他们从未在Visual Studio运行时测试过他们的代码。它在运行时加载插件等,这触发了它们的bug。一段简单地将大量程序集加载到AppDomain中(然后卸载AppDomain并重新开始)的C#代码也触发了它们的错误,因此这不是Visual Studio的问题。
这个故事的寓意是,有人需要查看崩溃转储并找出导致崩溃的是哪一块内核模式软件,然后也许你就可以找出系统中发生了什么,从而触发内核模式软件崩溃。
发布于 2010-07-13 03:18:47
问题不会直接出在你的应用程序上,而是他的系统出现了一些问题,所以正如roufamatic所说的,check是事件日志。然而,有两个常见的“硬件”错误往往会导致这类问题,你可以检查这两个错误,看看它们是否会给你提供线索。
编辑:正如评论中指出的,任何糟糕的硬件或糟糕的驱动程序都可能导致这种行为。我只是简单地强调内存和打印机驱动程序,因为经验表明,这两种驱动程序是最常见的原因,因此值得首先考虑。
发布于 2010-07-13 05:16:49
我以前就必须解决这个问题。我正在编写用户模式的C#代码,以便与USB总线上的HID设备通信。这个问题发生在我的笔记本电脑上,而不是其他人的机器上。事实证明,它造成了问题,因为我运行的是64位操作系统,因此有64位驱动程序。所有其他用户都有32位驱动程序,这没有问题。这是一组适度控制的用户。我认识每个用户,他们都是有能力的用户,他们可以向我提供有关他们的硬件、操作系统和驱动程序的信息。我们也都在使用相同的设备。
我不记得我是如何确定这个问题的。但我通过将应用程序项目设置为仅针对32位Windows来非常简单地解决了它。如果没有64位应用程序,故障驱动程序将永远不会被使用。
让用户更新他们的驱动程序、硬件或更改代码,以避免完全使用驱动程序。
https://stackoverflow.com/questions/3231371
复制相似问题