CORE: improved stacktrace output

master
Martin Gerhardy 2022-04-29 17:52:16 +02:00
parent 932a65d857
commit 1447cb34e9
1 changed files with 11 additions and 7 deletions

View File

@ -12,19 +12,23 @@
void core_stacktrace() {
#ifdef HAVE_BACKWARD
std::ostringstream os;
backward::StackTrace st;
st.load_here(32);
backward::TraceResolver tr;
tr.load_stacktrace(st);
for (size_t __stacktrace_i = 0; __stacktrace_i < st.size(); ++__stacktrace_i) {
const backward::ResolvedTrace& trace = tr.resolve(st[__stacktrace_i]);
Log::error("#%i %s %s [%p]", int(__stacktrace_i), trace.object_filename.c_str(), trace.object_function.c_str(), trace.addr);
backward::Printer printer;
printer.print(st, os);
std::string stacktrace = os.str();
char *c = stacktrace.data();
while (char *l = SDL_strchr(c, '\n')) {
*l = '\0';
Log::error("%s", c);
c = l + 1;
}
#endif
}
SDL_AssertState core_assert_impl_message(SDL_AssertData &sdl_assert_data, char *buf, int bufSize,
const char *function, const char *file, int line, const char *format, ...) {
SDL_AssertState core_assert_impl_message(SDL_AssertData &sdl_assert_data, char *buf, int bufSize, const char *function,
const char *file, int line, const char *format, ...) {
va_list args;
va_start(args, format);
SDL_vsnprintf(buf, bufSize - 1, format, args);