void vogl_fail(const char *pExp, const char *pFile, unsigned line) { char buf[512]; vogl::vogl_sprintf_s(buf, sizeof(buf), "%s(%u): Failure: \"%s\"\n", pFile, line, pExp); vogl_output_debug_string(buf); fputs(buf, stderr); vogl::dynamic_string_array backtrace; if (get_printable_backtrace(backtrace)) { vogl_output_debug_string("Backtrace:"); for (uint i = 0; i < backtrace.size(); i++) vogl_output_debug_string(backtrace[i].get_ptr()); } if (vogl_is_debugger_present()) vogl_debug_break(); #ifdef VOGL_USE_WIN32_API if (g_fail_exceptions) RaiseException(VOGL_FAIL_EXCEPTION_CODE, 0, 0, NULL); else #endif if (g_exit_on_failure) exit(EXIT_FAILURE); }
void trace(const char *pFmt, va_list args) { if (vogl_is_debugger_present()) { char buf[512]; vogl::vogl_vsprintf_s(buf, sizeof(buf), pFmt, args); vogl_output_debug_string(buf); } };
void vogl_assert(const char *pExp, const char *pFile, unsigned line) { char buf[512]; vogl::vogl_sprintf_s(buf, sizeof(buf), "%s(%u): Assertion failed: \"%s\"\n", pFile, line, pExp); vogl_output_debug_string(buf); fputs(buf, stderr); #if 0 vogl::dynamic_string_array backtrace; if (get_printable_backtrace(backtrace)) { vogl_output_debug_string("Backtrace:"); for (uint32_t i = 0; i < backtrace.size(); i++) vogl_output_debug_string(backtrace[i].get_ptr()); } #endif vogl_debug_break_if_debugging(); }