13#include "third_party/abseil-cpp/absl/debugging/symbolize.h"
29 if (!absl::Symbolize(symbol,
name,
sizeof(
name))) {
37 return CaptureStackBackTrace(0, size, symbols, NULL);
39 return ::backtrace(symbols, size);
44 constexpr size_t kMaxFrames = 256;
45 void* symbols[kMaxFrames];
46 const auto available_frames =
Backtrace(symbols, kMaxFrames);
47 if (available_frames <= 0) {
54 std::stringstream stream;
55 for (
int i = offset;
i < available_frames; ++
i) {
56 stream <<
"Frame " <<
i - offset <<
": " << symbols[
i] <<
" "
96 return std::to_string(signal);
109 <<
" during program execution." << std::endl
120 if (::signal(signal_name,
handler) == SIG_ERR) {
121 FML_LOG(ERROR) <<
"Could not attach signal handler for " << signal_name;
128 if (!IsDebuggerPresent()) {
129 _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG);
130 _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);
134 if (exe_path.first) {
135 absl::InitializeSymbolizer(exe_path.second.c_str());
const gchar FlBinaryMessengerMessageHandler handler
#define FML_LOG(severity)
std::pair< bool, std::string > GetExecutablePath()
static std::string GetSymbolName(void *symbol)
static size_t kKnownSignalHandlers[]
std::string BacktraceHere(size_t offset)
static std::string SignalNameToString(int signal)
bool IsCrashHandlingSupported()
static void ToggleSignalHandlers(bool set)
static int Backtrace(void **symbols, int size)
void InstallCrashHandler()
static void SignalHandler(int signal)
static std::string kKUnknownFrameName