[Interest] Detect if app is running under Qt Creator's debugger
Alexander Dyagilev
alervdvcw at gmail.com
Tue Apr 23 17:40:55 CEST 2024
Oops, I see it has macOS support too. Fine. Something for Linux would be
perfect :)
On Tue, Apr 23, 2024 at 10:38 PM Alexander Dyagilev <alervdvcw at gmail.com>
wrote:
> David, thank you :)
>
> By the way, it would be perfect to have a cross platform code.
> Windows-only one is OK for me for now, but in case I switch to Linux (or
> macOS)...
>
>
> On Tue, Apr 23, 2024 at 10:22 PM David M. Cotter <dave at kjams.com> wrote:
>
>> // 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
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20240423/16c2580e/attachment.htm>
More information about the Interest
mailing list