运行时,当myApp.exe崩溃时,我会收到“未处理的Win32异常”,但我怎么知道发生了哪个异常?出了什么问题?
运行时,当myApp.exe崩溃时,我会收到“未处理的Win32异常”,但我怎么知道发生了哪个异常?出了什么问题?
通常,Windows 也会给你几个十六进制数。异常代码很可能是 0xC0000005
。这是访问冲突的代码。当发生这种情况时,你还将获得三个额外的信息:违反地址、被违反的地址和违反类型(读取、写入或执行)。
Windows 不会进一步缩小范围,而且通常也无法缩小范围。例如,如果你在程序中超出数组的末尾,Windows 可能甚至不会意识到你正在迭代一个数组。它只看到“读取:OK,读取:OK,读取:越界 => 页面错误 => 访问冲突”。你需要从违反地址(你的数组迭代代码)和被违反的地址(数组后面的越界地址)中找出问题所在。
UnhandledException
事件添加一个处理程序。你可以在此处找到更多关于此的信息和一些示例代码 here。catch throw
来强制在抛出异常时触发断点,应该有类似的功能。