[Interest] Detect if app is running under Qt Creator's debugger
David M. Cotter
dave at kjams.com
Tue Apr 23 17:22:41 CEST 2024
// 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 <alervdvcw at 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 at qt-project.org
> https://lists.qt-project.org/listinfo/interest
More information about the Interest
mailing list