// Returns true if the current process is being debugged (either // running under the debugger or has a debugger attached post facto). bool CFDebuggerAttached() { bool debuggedB(false); #if defined(kDEBUG) || DEBUG #if !defined(_HELPERTOOL_)// && !_YAAF_
#if OPT_WINOS { debuggedB = IsDebuggerPresent(); } #else // OPT_MACOS { int junk; int mib[4]; struct kinfo_proc info; size_t size; // Initialize the flags so that, if sysctl fails for some bizarre // reason, we get a predictable result. info.kp_proc.p_flag = 0; // Initialize mib, which tells sysctl the info we want, in this case // we're looking for information about a specific process ID. mib[0] = CTL_KERN; mib[1] = KERN_PROC; mib[2] = KERN_PROC_PID; mib[3] = getpid(); // Call sysctl. size = sizeof(info); junk = sysctl(mib, sizeof(mib) / sizeof(*mib), &info, &size, NULL, 0); assert(junk == 0); // We're being debugged if the P_TRACED flag is set. debuggedB = ( (info.kp_proc.p_flag & P_TRACED) != 0 ); } #endif // OPT_MACOS #endif // !defined(_HELPERTOOL_) && !_YAAF_ #endif // DEBUG return debuggedB; } > On Apr 23, 2024, at 7:33 AM, Alexander Dyagilev <alervd...@gmail.com> wrote: > > Hello, > > Is there a simple way to detect it? > > What I would like to achieve is to perform some debug check similar to one > Q_ASSERT does, but instead I want it to just print to console in case the app > is NOT running under debugger and fall back to Q_ASSERT behavior otherwise > (so I can see the stack trace then). > _______________________________________________ > Interest mailing list > Interest@qt-project.org > https://lists.qt-project.org/listinfo/interest _______________________________________________ Interest mailing list Interest@qt-project.org https://lists.qt-project.org/listinfo/interest