#include #include #include "il2cpp-config.h" #include "mono-api.h" #include "il2cpp-mono-support.h" #include "icalls/mscorlib/System.Diagnostics/StackTrace.h" namespace mono { namespace icalls { namespace mscorlib { namespace System { namespace Diagnostics { MonoArray* StackTrace::get_trace(MonoException *exc, int32_t skip, bool need_file_info) { MonoArray *ta = mono_unity_exception_get_trace_ips(exc); MonoClass* stackFrameClass = mono_unity_defaults_get_stack_frame_class(); if (ta == NULL) { /* Exception is not thrown yet */ return MonoArrayNew(stackFrameClass, 0); } int len = (int)mono_array_length(ta); MonoArray* res = MonoArrayNew(stackFrameClass, len > skip ? len - skip : 0); for (int i = skip; i < len; i++) { MonoStackFrame* sf = (MonoStackFrame*)mono_object_new(g_MonoDomain, stackFrameClass); MonoMethod* method = mono_array_get(ta, MonoMethod*, i); mono_unity_stackframe_set_method(sf, method); mono_array_setref(res, i, sf); } return res; } } /* namespace Diagnostics */ } /* namespace System */ } /* namespace mscorlib */ } /* namespace icalls */ } /* namespace mono */