mirror of
https://gitlab.freedesktop.org/monado/monado.git
synced 2024-12-29 11:06:18 +00:00
st/oxr: Add a debug option to break/trap on error.
Might be useful for debugging, since once the consuming call has returned, you've lost most of the context of what led to the error.
This commit is contained in:
parent
d7850f2c79
commit
891eb7f1c4
|
@ -16,8 +16,13 @@
|
||||||
#include "oxr_objects.h"
|
#include "oxr_objects.h"
|
||||||
#include "oxr_logger.h"
|
#include "oxr_logger.h"
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
// needed for __debugbreak()
|
||||||
|
#include <intrin.h>
|
||||||
|
#endif // _MSC_VER
|
||||||
|
|
||||||
DEBUG_GET_ONCE_BOOL_OPTION(entrypoints, "OXR_DEBUG_ENTRYPOINTS", false)
|
DEBUG_GET_ONCE_BOOL_OPTION(entrypoints, "OXR_DEBUG_ENTRYPOINTS", false)
|
||||||
|
DEBUG_GET_ONCE_BOOL_OPTION(break_on_error, "OXR_BREAK_ON_ERROR", false)
|
||||||
|
|
||||||
static const char *
|
static const char *
|
||||||
oxr_result_to_string(XrResult result);
|
oxr_result_to_string(XrResult result);
|
||||||
|
@ -85,12 +90,22 @@ oxr_error(struct oxr_logger *logger, XrResult result, const char *fmt, ...)
|
||||||
fprintf(stderr, " in %s", logger->api_func_name);
|
fprintf(stderr, " in %s", logger->api_func_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fprintf(stderr, ": ");
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
vfprintf(stderr, fmt, args);
|
vfprintf(stderr, fmt, args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
|
if (debug_get_bool_option_break_on_error()) {
|
||||||
|
/// Trigger a debugger breakpoint.
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
__debugbreak();
|
||||||
|
#else
|
||||||
|
__builtin_trap();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue