Piotr Caban (@piotr) commented about dlls/msvcrt/exit.c:
if ((MSVCRT_error_mode == _OUT_TO_MSGBOX) || ((MSVCRT_error_mode == _OUT_TO_DEFAULT) && (MSVCRT_app_type == 2))) {
+#ifdef _CRTDEBUG DoMessageBox("Runtime error!", "abnormal program termination"); +#endif
The message box should be displayed in older versions of msvcr dlls (e.g. msvcr90). ucrtbase (I didn't test other versions) is also not printing any message to console.
Did you consider defining _DEBUG instead of _CRTDEBUG?