mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-03-25 16:43:33 +00:00
Allow to disable crash catcher on Windows
This commit is contained in:
parent
ebdcb7acbd
commit
d2ed62ec3a
@ -560,9 +560,6 @@ static bool is_debugger_present()
|
|||||||
|
|
||||||
void crashCatcherInstall(int argc, char **argv, const std::string &crashLogPath)
|
void crashCatcherInstall(int argc, char **argv, const std::string &crashLogPath)
|
||||||
{
|
{
|
||||||
if (const auto env = std::getenv("OPENMW_DISABLE_CRASH_CATCHER"))
|
|
||||||
if (std::atol(env) != 0)
|
|
||||||
return;
|
|
||||||
if ((argc == 2 && strcmp(argv[1], crash_switch) == 0) || !is_debugger_present())
|
if ((argc == 2 && strcmp(argv[1], crash_switch) == 0) || !is_debugger_present())
|
||||||
{
|
{
|
||||||
int s[5] = { SIGSEGV, SIGILL, SIGFPE, SIGBUS, SIGABRT };
|
int s[5] = { SIGSEGV, SIGILL, SIGFPE, SIGBUS, SIGABRT };
|
||||||
|
@ -314,16 +314,21 @@ int wrapApplication(int (*innerApplication)(int argc, char *argv[]), int argc, c
|
|||||||
setupLogging(cfgMgr.getLogPath().string(), appName, mode);
|
setupLogging(cfgMgr.getLogPath().string(), appName, mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (const auto env = std::getenv("OPENMW_DISABLE_CRASH_CATCHER"); env == nullptr || std::atol(env) == 0)
|
||||||
|
{
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
const std::string crashLogName = Misc::StringUtils::lowerCase(appName) + "-crash.dmp";
|
const std::string crashLogName = Misc::StringUtils::lowerCase(appName) + "-crash.dmp";
|
||||||
Crash::CrashCatcher crashy(argc, argv, (cfgMgr.getLogPath() / crashLogName).make_preferred().string());
|
Crash::CrashCatcher crashy(argc, argv, (cfgMgr.getLogPath() / crashLogName).make_preferred().string());
|
||||||
#else
|
#else
|
||||||
const std::string crashLogName = Misc::StringUtils::lowerCase(appName) + "-crash.log";
|
const std::string crashLogName = Misc::StringUtils::lowerCase(appName) + "-crash.log";
|
||||||
// install the crash handler as soon as possible. note that the log path
|
// install the crash handler as soon as possible. note that the log path
|
||||||
// does not depend on config being read.
|
// does not depend on config being read.
|
||||||
crashCatcherInstall(argc, argv, (cfgMgr.getLogPath() / crashLogName).string());
|
crashCatcherInstall(argc, argv, (cfgMgr.getLogPath() / crashLogName).string());
|
||||||
#endif
|
#endif
|
||||||
ret = innerApplication(argc, argv);
|
ret = innerApplication(argc, argv);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ret = innerApplication(argc, argv);
|
||||||
}
|
}
|
||||||
catch (const std::exception& e)
|
catch (const std::exception& e)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user