diff --git a/modules/juce_core/juce_core.h b/modules/juce_core/juce_core.h index 10c5b4138e..13aef04c83 100644 --- a/modules/juce_core/juce_core.h +++ b/modules/juce_core/juce_core.h @@ -168,7 +168,7 @@ class FileOutputStream; class XmlElement; class JSONFormatter; -extern JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger(); +extern JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger() noexcept; extern JUCE_API void JUCE_CALLTYPE logAssertion (const char* file, int line) noexcept; #include "memory/juce_Memory.h" diff --git a/modules/juce_core/native/juce_android_Threads.cpp b/modules/juce_core/native/juce_android_Threads.cpp index 2cca156bbd..585b97a7e6 100644 --- a/modules/juce_core/native/juce_android_Threads.cpp +++ b/modules/juce_core/native/juce_android_Threads.cpp @@ -62,16 +62,11 @@ JUCE_API void JUCE_CALLTYPE Process::setPriority (ProcessPriority prior) pthread_setschedparam (pthread_self(), policy, ¶m); } -JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger() +JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger() noexcept { return false; } -JUCE_API bool JUCE_CALLTYPE Process::isRunningUnderDebugger() -{ - return juce_isRunningUnderDebugger(); -} - JUCE_API void JUCE_CALLTYPE Process::raisePrivilege() {} JUCE_API void JUCE_CALLTYPE Process::lowerPrivilege() {} diff --git a/modules/juce_core/native/juce_linux_SystemStats.cpp b/modules/juce_core/native/juce_linux_SystemStats.cpp index 9ac6901b93..85062bf2e3 100644 --- a/modules/juce_core/native/juce_linux_SystemStats.cpp +++ b/modules/juce_core/native/juce_linux_SystemStats.cpp @@ -197,7 +197,7 @@ bool Time::setSystemTimeToThisTime() const return settimeofday (&t, 0) == 0; } -JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger() +JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger() noexcept { #if JUCE_BSD return false; diff --git a/modules/juce_core/native/juce_linux_Threads.cpp b/modules/juce_core/native/juce_linux_Threads.cpp index b9d3d45067..465acee8df 100644 --- a/modules/juce_core/native/juce_linux_Threads.cpp +++ b/modules/juce_core/native/juce_linux_Threads.cpp @@ -52,11 +52,6 @@ JUCE_API void JUCE_CALLTYPE Process::setPriority (const ProcessPriority prior) pthread_setschedparam (pthread_self(), policy, ¶m); } -JUCE_API bool JUCE_CALLTYPE Process::isRunningUnderDebugger() -{ - return juce_isRunningUnderDebugger(); -} - static bool swapUserAndEffectiveUser() { int result1 = setreuid (geteuid(), getuid()); diff --git a/modules/juce_core/native/juce_mac_Threads.mm b/modules/juce_core/native/juce_mac_Threads.mm index 8150a15e08..b8b793b630 100644 --- a/modules/juce_core/native/juce_mac_Threads.mm +++ b/modules/juce_core/native/juce_mac_Threads.mm @@ -75,23 +75,11 @@ JUCE_API void JUCE_CALLTYPE Process::setPriority (ProcessPriority) } //============================================================================== -JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger() +JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger() noexcept { - static char testResult = 0; - - if (testResult == 0) - { - struct kinfo_proc info; - int m[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() }; - size_t sz = sizeof (info); - sysctl (m, 4, &info, &sz, 0, 0); - testResult = ((info.kp_proc.p_flag & P_TRACED) != 0) ? 1 : -1; - } - - return testResult > 0; -} - -JUCE_API bool JUCE_CALLTYPE Process::isRunningUnderDebugger() -{ - return juce_isRunningUnderDebugger(); + struct kinfo_proc info; + int m[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() }; + size_t sz = sizeof (info); + sysctl (m, 4, &info, &sz, 0, 0); + return (info.kp_proc.p_flag & P_TRACED) != 0; } diff --git a/modules/juce_core/native/juce_win32_Threads.cpp b/modules/juce_core/native/juce_win32_Threads.cpp index 71d697a328..7bef2ec2b5 100644 --- a/modules/juce_core/native/juce_win32_Threads.cpp +++ b/modules/juce_core/native/juce_win32_Threads.cpp @@ -259,16 +259,11 @@ void JUCE_CALLTYPE Process::setPriority (ProcessPriority prior) } } -JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger() +JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger() noexcept { return IsDebuggerPresent() != FALSE; } -bool JUCE_CALLTYPE Process::isRunningUnderDebugger() -{ - return juce_isRunningUnderDebugger(); -} - static void* currentModuleHandle = nullptr; void* JUCE_CALLTYPE Process::getCurrentModuleInstanceHandle() noexcept diff --git a/modules/juce_core/system/juce_PlatformDefs.h b/modules/juce_core/system/juce_PlatformDefs.h index d9f31a1f39..2ff33bcdf3 100644 --- a/modules/juce_core/system/juce_PlatformDefs.h +++ b/modules/juce_core/system/juce_PlatformDefs.h @@ -111,7 +111,7 @@ //============================================================================== #if JUCE_DEBUG || DOXYGEN /** Writes a string to the standard error stream. - Note that as well as a single string, you can use this to write multiple items + Note that as well as a single string, you can use this to write multiple items as a stream, e.g. @code DBG ("foo = " << foo << "bar = " << bar); diff --git a/modules/juce_core/threads/juce_Process.h b/modules/juce_core/threads/juce_Process.h index eb5d59df8f..5274be3b87 100644 --- a/modules/juce_core/threads/juce_Process.h +++ b/modules/juce_core/threads/juce_Process.h @@ -98,7 +98,7 @@ public: //============================================================================== /** Returns true if this process is being hosted by a debugger. */ - static bool JUCE_CALLTYPE isRunningUnderDebugger(); + static bool JUCE_CALLTYPE isRunningUnderDebugger() noexcept; //============================================================================== diff --git a/modules/juce_core/threads/juce_Thread.cpp b/modules/juce_core/threads/juce_Thread.cpp index d195b66d10..721f7410b6 100644 --- a/modules/juce_core/threads/juce_Thread.cpp +++ b/modules/juce_core/threads/juce_Thread.cpp @@ -268,6 +268,12 @@ void SpinLock::enter() const noexcept } } +//============================================================================== +bool JUCE_CALLTYPE Process::isRunningUnderDebugger() noexcept +{ + return juce_isRunningUnderDebugger(); +} + //============================================================================== #if JUCE_UNIT_TESTS