I am trying to grab a call stack as quickly as possible. Right now this is what I have:
void* addrs[10] = {}; DWORD hash; RtlCaptureStackBackTrace(0, 10, addrs, &hash); for( size_t i = 0; i <10; ++i ) { std::cout << addrs[i] << '\n'; }
This is intended for use in a memory tracking system, so it’s absolutely wonderful that in the end I get an array of addresses if they can later be turned into something human readable (with some user-controlled event).
addrs
RtlCaptureStackBackTrace
Edit:
, SymFromAddr SymGetLineFromAddr64. new, CaptureStackBackTrace, ~ 30 , , - . !
SymFromAddr
SymGetLineFromAddr64
new
CaptureStackBackTrace
- ?
, , , . -, "" ... , - EBP RBP, , 32- x86 x86_64. , , UNIX (ABI) Windows ABI, . , , :
EBP
RBP
, 64- ABI UNIX , -... ; . 64- ABI UNIX.
, , - -. , , . , , , , , , .
- , - , . .
, , . MMgc - ( ). , .
, , , RtlCaptureStackBacktrace Windows. , - , ; , - . - - Windows API .
RtlCaptureStackBacktrace