feat: allow to obtain the stack trace as a string (#1075)

diff --git a/src/glog/logging.h b/src/glog/logging.h
index a0759df..9ab897e 100644
--- a/src/glog/logging.h
+++ b/src/glog/logging.h
@@ -1736,6 +1736,9 @@
 GLOG_EXPORT void InstallFailureWriter(void (*writer)(const char* data,
                                                      size_t size));
 
+// Dump stack trace as a string.
+GLOG_EXPORT std::string GetStackTrace();
+
 }  // namespace google
 
 #endif  // GLOG_LOGGING_H
diff --git a/src/logging.cc b/src/logging.cc
index fb283fd..fc63995 100644
--- a/src/logging.cc
+++ b/src/logging.cc
@@ -1705,8 +1705,7 @@
     std::snprintf(fileline, sizeof(fileline), "%s:%d", data_->basename_, line);
 #ifdef HAVE_STACKTRACE
     if (FLAGS_log_backtrace_at == fileline) {
-      string stacktrace;
-      DumpStackTraceToString(&stacktrace);
+      string stacktrace = GetStackTrace();
       stream() << " (stacktrace:\n" << stacktrace << ") ";
     }
 #endif
diff --git a/src/utilities.cc b/src/utilities.cc
index bd949ef..92bc5e5 100644
--- a/src/utilities.cc
+++ b/src/utilities.cc
@@ -287,12 +287,6 @@
 }
 REGISTER_MODULE_INITIALIZER(utilities, MyUserNameInitializer())
 
-#ifdef HAVE_STACKTRACE
-void DumpStackTraceToString(string* stacktrace) {
-  DumpStackTrace(1, DebugWriteToString, stacktrace);
-}
-#endif
-
 // We use an atomic operation to prevent problems with calling CrashReason
 // from inside the Mutex implementation (potentially through RAW_CHECK).
 static std::atomic<const logging::internal::CrashReason*> g_reason{nullptr};
@@ -323,4 +317,13 @@
 }
 
 }  // namespace glog_internal_namespace_
+
+#ifdef HAVE_STACKTRACE
+std::string GetStackTrace() {
+  std::string stacktrace;
+  DumpStackTrace(1, DebugWriteToString, &stacktrace);
+  return stacktrace;
+}
+#endif
+
 }  // namespace google
diff --git a/src/utilities.h b/src/utilities.h
index 581bff7..8096f1c 100644
--- a/src/utilities.h
+++ b/src/utilities.h
@@ -162,8 +162,6 @@
 // (Doesn't modify filepath, contrary to basename() in libgen.h.)
 const char* const_basename(const char* filepath);
 
-void DumpStackTraceToString(std::string* stacktrace);
-
 void SetCrashReason(const logging::internal::CrashReason* r);
 
 void InitGoogleLoggingUtilities(const char* argv0);