Catch “The program stopped working” on Vista

无人久伴 提交于 2019-12-07 02:56:47

问题


On Vista, I got a problem with the application crash handler. Basically, if something unexpected occurs which cannot be captured by SEH, I get this pop-up window with "The application stopped working", blablabla, "Close program/Debug program" -- that is, after I disable the error reporting using the system control panel. With error reporting enabled, you would get a task dialog with search for solution online, close, debug.

This is not so funny if it happens in automated tools, and I wonder whether there is a way to get rid of it totally, read, if my app crashes, it just crashes to the command line or disappears but does not bring up a dialog.


回答1:


Use

SetErrorMode(SetErrorMode(0)|SEM_NOGPFAULTERRORBOX);

But I would suggest to install an exceptions handler which creates a dump so you can verify what happened. For example crashrpt (or here).

See also

  • http://msdn.microsoft.com/en-us/library/ms680621(VS.85).aspx



回答2:


Function signal works on all POSIX platforms:

signal(SIGSEGV, &signal_handler);

If you need to trap an exception that isn't supported by signal, you can also take a look at AddVectoredExceptionHandler, a function specific to W32.



来源:https://stackoverflow.com/questions/312300/catch-the-program-stopped-working-on-vista

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!