For macOS builds, disable isDebuggerActive() for non-AppleClang targets. Fixes #1588

This commit is contained in:
Torfinn Berset 2019-04-05 11:39:13 +02:00 committed by Martin Hořeňovský
parent edde6f4736
commit 5ce355a38c

View File

@ -18,19 +18,23 @@
# include <stdbool.h> # include <stdbool.h>
# include <sys/types.h> # include <sys/types.h>
# include <unistd.h> # include <unistd.h>
# include <sys/sysctl.h>
# include <cstddef> # include <cstddef>
# include <ostream> # include <ostream>
namespace Catch { #ifdef __apple_build_version__
// These headers will only compile with AppleClang (XCode)
// For other compilers (Clang, GCC, ... ) we need to exclude them
# include <sys/sysctl.h>
#endif
namespace Catch {
#ifdef __apple_build_version__
// The following function is taken directly from the following technical note: // The following function is taken directly from the following technical note:
// http://developer.apple.com/library/mac/#qa/qa2004/qa1361.html // https://developer.apple.com/library/archive/qa/qa1361/_index.html
// Returns true if the current process is being debugged (either // Returns true if the current process is being debugged (either
// running under the debugger or has a debugger attached post facto). // running under the debugger or has a debugger attached post facto).
bool isDebuggerActive(){ bool isDebuggerActive(){
int mib[4]; int mib[4];
struct kinfo_proc info; struct kinfo_proc info;
std::size_t size; std::size_t size;
@ -60,6 +64,12 @@ namespace Catch {
return ( (info.kp_proc.p_flag & P_TRACED) != 0 ); return ( (info.kp_proc.p_flag & P_TRACED) != 0 );
} }
#else
bool isDebuggerActive() {
// We need to find another way to determine this for non-appleclang compilers on macOS
return false;
}
#endif
} // namespace Catch } // namespace Catch
#elif defined(CATCH_PLATFORM_LINUX) #elif defined(CATCH_PLATFORM_LINUX)