#pragma once
#include <panda/string.h>
#if defined(__linux__)
#include <cstdio>
#include <cstdlib>
#include <execinfo.h>
namespace panda { namespace unievent { namespace debug {
// see https://www.gnu.org/software/libc/manual/html_node/Backtraces.html
inline panda::string get_trace() {
void *array[10];
size_t size;
char **strings;
panda::string result;
size = backtrace(array, 10);
strings = backtrace_symbols(array, size);
for(size_t i = 0; i < size; i++) {
result += strings[i];
result += "\n";
}
free(strings);
return result;
}
}}}
#else
namespace panda { namespace unievent { namespace debug {
inline panda::string get_trace() {}
}}}
#endif