MCPcopy Create free account
hub / github.com/GaijinEntertainment/daScript / print_backtrace_frames

Function print_backtrace_frames

src/hal/crash_handler.cpp:262–287  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

260 }
261
262 static void print_backtrace_frames(void **pcs, CrashFrame *frameInfo, int nframes) {
263 if (nframes <= 0) return;
264 CrashFrame collectedFrames[DAS_CRASH_HANDLER_MAX_STACK_FRAMES];
265 int frameCount = 0;
266 fprintf(stderr, "Stack trace:\n");
267 char **symbols = backtrace_symbols(pcs, nframes);
268 if (symbols) {
269 for (int i = 0; i < nframes; i++) {
270 char *d = demangle(symbols[i]);
271 fprintf(stderr, " [%2d] %s\n", i, d ? d : symbols[i]);
272 if (g_crash_handler_frame_filter && d
273 && g_crash_handler_frame_filter(d)
274 && frameCount < DAS_CRASH_HANDLER_MAX_STACK_FRAMES) {
275 collectedFrames[frameCount++] = frameInfo[i];
276 }
277 free(d);
278 }
279 free(symbols);
280 } else {
281 backtrace_symbols_fd(pcs, nframes, STDERR_FILENO);
282 }
283 fflush(stderr);
284 if (g_crash_handler_extra_info && frameCount > 0) {
285 g_crash_handler_extra_info(collectedFrames, frameCount);
286 }
287 }
288
289 static void crash_signal_handler(int sig, siginfo_t *info, void *ucontext_ptr) {
290 fprintf(stderr, "\nCRASH: %s (signal %d)", signal_to_string(sig), sig);

Callers 2

crash_signal_handlerFunction · 0.85

Calls 3

fprintfFunction · 0.85
demangleFunction · 0.85
freeFunction · 0.50

Tested by

no test coverage detected