LAPTOP-SNT8I5JK\Boounion
2025-07-28 bfe14e41fa5b07771d78af4511ba18d706bc23cc
SourceCode/Bond/Servo/Context.cpp
@@ -1,7 +1,34 @@
#include "stdafx.h"
#include "Context.h"
#include <dbghelp.h>
#pragma comment(lib, "dbghelp.lib")
void PrintStackTrace()
{
   void* stack[62]; // 最多抓62层
   USHORT frames = CaptureStackBackTrace(0, 62, stack, NULL);
   HANDLE process = GetCurrentProcess();
   SymInitialize(process, NULL, TRUE);
   for (USHORT i = 0; i < frames; ++i) {
      DWORD64 address = (DWORD64)(stack[i]);
      char buffer[sizeof(SYMBOL_INFO) + MAX_SYM_NAME * sizeof(TCHAR)];
      PSYMBOL_INFO symbol = (PSYMBOL_INFO)buffer;
      symbol->SizeOfStruct = sizeof(SYMBOL_INFO);
      symbol->MaxNameLen = MAX_SYM_NAME;
      if (SymFromAddr(process, address, 0, symbol)) {
         TRACE(">>>> name:%s\n", symbol->Name);
      }
      else {
         TRACE(">>>> name:%s\n", "SymFromAddr failed");
      }
   }
   SymCleanup(process);
}
CContext::CContext()
{
   m_onReleaseCallback = nullptr;