问题
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