1
3
好的,我发现了更多关于这个的信息。在我的例子中,安装的是Windows 7 kiusercallbackexceptionhandler 作为异常处理程序,在调用wndproc并给我执行控制之前。这是由 NTDLL!KiuserCallbackDispatcher(KiuserCallbackDispatcher) . 我怀疑这是微软为防止黑客入侵SEH而采取的安全措施。 解决方案是用try/except框架包装wndproc(或hookproc),以便在Windows捕获异常之前捕获该异常。 感谢Skywing http://www.nynaeve.net/
我用了“!exchanin“—windbg中获取此信息的命令。 |
2
1
您可以使用矢量异常处理,而不是包装wndproc或挂接所有wndproc: |
3
0
首先,两种行为都是正确的。取消对空指针的引用是“未定义的行为”,而不是保证访问冲突。 首先,找出这是与异常引发有关,还是只与访问内存位置零有关(尝试其他异常)。 如果将Visual Studio配置为在首次访问冲突时停止,它是否会中断? 在glmakecurrent和compare之前和之后调用virtualquery(空,…)。可能是Nvidia OpenGL驱动程序virtualloc page zero(一个坏主意,但不是不可能或非法的)。 |
4
0
我也有类似的行为(Nvidia的驱动程序安装了一个向量异常处理程序,最终导致崩溃),请参见: https://stackoverflow.com/questions/4876796/why-does-an-exception-handled-by-nvidias-opengl-driver-in-copydown-memmove-late 它在安装最新的Nvidia驱动程序时就消失了(2011年1月)。 |
5
0
我在研究类似问题时发现了这个问题。我们的问题是在64位Windows上运行32位应用程序时对异常的无声消费。 微软提供了一个修复方案,但是如果您有多个目标平台,部署它有点困难: http://support.microsoft.com/kb/976038 下面是一篇关于描述行为的主题的文章: 堆栈溢出上的这个线程还描述了我遇到的问题: Exceptions silently caught by Windows, how to handle manually? |
SRobertJames · 使用printf的gdb显示 1 年前 |
Subin · 在vscode中运行c时出错 1 年前 |
Community wiki · 如何调试Python内存故障? 1 年前 |
Kai · 有什么方法可以轻松优化VSCode中的锈迹? 2 年前 |
Chris Brandon · 如何使节点在堆栈溢出时中断? 2 年前 |