步骤:
1. 调用RtlCaptureContext函数(MSDN)获取上下文(context)。
2. 把寄存器地址填充到STACKFRAME结构中。
3. 循环调用StackWalk64函数(MSDN)回溯调用栈(call stack)。
4. 调用SymFromAddr函数(MSDN)获得符号(symbol),再调用SymGetLineFromAddr64函数(MSDN)获取源码地址与行号。
Sample:
void dumpStack(void)
{
const UINT max_name_length = 256; // Max length of symbols' name.
CONTEXT context; // Store register addresses.
STACKFRAME64 stackframe; // Call stack.
HANDLE process, t