MCPcopy Create free account
hub / github.com/crownengine/crown / writeCallstack

Function writeCallstack

3rdparty/bx/src/debug.cpp:626–685  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

624 }
625
626 int32_t writeCallstack(WriterI* _writer, const uintptr_t* _stack, uint32_t _num, Error* _err)
627 {
628 BX_ERROR_SCOPE(_err);
629
630 char demangleBuf[4096];
631 size_t demangleLen = BX_COUNTOF(demangleBuf);
632
633 int32_t total = write(_writer, _err, "Callstack (%d):\n", _num);
634
635 total += write(_writer, _err, "\t #: %-*s Line %-*s Function ---\n", kWidth, "File ---", kWidthPc, "PC ---");
636
637 CallbackData cbData;
638
639 for (uint32_t ii = 0; ii < _num && _err->isOk(); ++ii)
640 {
641 backtrace_pcinfo(s_stCtx.state, _stack[ii], backtraceFullCb, NULL, &cbData);
642
643 StringView demangledName = "<Unknown?>";
644
645 if (1 == backtrace_syminfo(s_stCtx.state, _stack[ii], backtraceSymInfoCb, NULL, &cbData)
646 && !cbData.resolvedName.isEmpty() )
647 {
648 demangleLen = BX_COUNTOF(demangleBuf);
649 int32_t demangleStatus;
650 abi::__cxa_demangle(cbData.resolvedName.getPtr(), demangleBuf, &demangleLen, &demangleStatus);
651
652 if (0 == demangleStatus)
653 {
654 demangledName.set({demangleBuf, narrowCast<int32_t>(demangleLen) });
655 }
656 }
657
658 const StringView fileName = strTail(cbData.fileName, kWidth);
659
660 total += write(_writer, _err
661 , "\t%2d: %-*S % 5d %*p %S\n"
662 , ii
663 , kWidth
664 , &fileName
665 , cbData.line
666 , kWidthPc
667 , _stack[ii]
668 , &demangledName
669 );
670
671 if (0 == strCmp(demangledName, "main", 4) )
672 {
673 if (0 != _num-1-ii)
674 {
675 total += write(_writer, _err
676 , "\t... %d more stack frames below 'main'.\n"
677 , _num-1-ii
678 );
679 }
680 break;
681 }
682 }
683

Callers 2

debugOutputCallstackFunction · 0.85
defaultAssertHandlerFunction · 0.85

Calls 15

strTailFunction · 0.85
strCmpFunction · 0.85
strFindFunction · 0.85
openFunction · 0.85
fromStringFunction · 0.85
strWordFunction · 0.85
strLTrimSpaceFunction · 0.85
strLTrimNonSpaceFunction · 0.85
strConsumeToFunction · 0.85
getCPtrMethod · 0.80
writeFunction · 0.70
readFunction · 0.70

Tested by

no test coverage detected