From 58f14b7107d73d02c3f68c0c35a39da4ee2bb2c4 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 1 Oct 2022 08:06:20 +0800 Subject: [PATCH] 1 --- server/gameserver/tracemgr.cc | 23 +++++++++++++++++++++++ server/gameserver/tracemgr.h | 1 + 2 files changed, 24 insertions(+) diff --git a/server/gameserver/tracemgr.cc b/server/gameserver/tracemgr.cc index b56b3fa0..60cc0a44 100644 --- a/server/gameserver/tracemgr.cc +++ b/server/gameserver/tracemgr.cc @@ -1,5 +1,7 @@ #include "precompile.h" +#include + #include "tracemgr.h" #ifdef DEBUG @@ -47,4 +49,25 @@ void TraceMgr::Trace(const std::string& hint) #endif } +std::string TraceMgr::GetBackTrace() +{ + const int BT_BUF_SIZE = 1024 * 10; + + std::string data; + + void *buffer[BT_BUF_SIZE]; + char **strings = nullptr; + int nptrs = backtrace(buffer, BT_BUF_SIZE); + strings = backtrace_symbols(buffer, nptrs); + if (strings) { + for (int i = 0; i < nptrs; i++) { + data += strings[i]; + data += "\n"; + } + free(strings); + } + + return data; +} + #endif diff --git a/server/gameserver/tracemgr.h b/server/gameserver/tracemgr.h index 6698cba8..e0191e39 100644 --- a/server/gameserver/tracemgr.h +++ b/server/gameserver/tracemgr.h @@ -19,6 +19,7 @@ class TraceMgr : public a8::Singleton void UnInit(); void Trace(const std::string& hint); + std::string GetBackTrace(); private: std::string filename_;