From 7c35ff8d9a626f69a8a8b7de3d73dc9d73de9dd7 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期六, 13 九月 2025 10:51:32 +0800
Subject: [PATCH] 1. 解决读取报警文件错误的问题,提高兼容性(可能文件是在MacOS编辑的,导致换行符不一样)
---
SourceCode/Bond/Servo/Context.cpp | 27 +++++++++++++++++++++++++++
1 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/Servo/Context.cpp b/SourceCode/Bond/Servo/Context.cpp
index d71cf34..dff60f2 100644
--- a/SourceCode/Bond/Servo/Context.cpp
+++ b/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;
--
Gitblit v1.9.3