如何在运行时确定您的 C++ 应用程序何时附加了 Visual Studio 调试器?

Posted

技术标签:

【中文标题】如何在运行时确定您的 C++ 应用程序何时附加了 Visual Studio 调试器?【英文标题】:How to determine at runtime when your C++ application has the visual studio debugger attached? 【发布时间】:2010-05-07 14:43:03 【问题描述】:

如何在运行时确定 Visual Studio 调试器是否附加到您的进程。我已经看到了如何在 .NET 中执行此操作的说明,但我的进程是本机 C++ 进程。支持检测即时调试会很好,但不是严格要求。

【问题讨论】:

您是否在寻求一种方法来检测调试器是从调试器附加到的进程中附加的,还是从不同的外部进程附加的? 从调试器附加到的进程内部。 IsDebuggerPresent 按以下建议工作。 ***.com/questions/101806/… 的可能重复项 并不是真正的骗子(尽管提到了 IsDebuggerPresent 函数)-该问题专门针对.net。这是针对 C++/Win32 的。 【参考方案1】:

Win32 调用 @987654321@ 听起来应该可以工作。

【讨论】:

谢谢。这正是我所需要的。 我使用了这种方法,但随后在以下链接中看到了博客,他声称他通过脚本禁用了 IsDebuggerPresent,因此这种方法可能存在问题:blogs.msdn.microsoft.com/debuggingtoolbox/2007/05/23/…【参考方案2】:

使用IsDebuggerPresent

【讨论】:

+1 是正确答案,即使比 unwind 的答案晚 2 分钟。也谢谢你。

以上是关于如何在运行时确定您的 C++ 应用程序何时附加了 Visual Studio 调试器?的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中,即使调用了 delete,进程何时会保留分配的内存?

如何在 Visual C++ 6 中添加要打印的附加页面

如何分析在 Linux 上运行的 C++ 代码?

何时以及为啥需要在 C++ 中使用 cin.ignore()?

确定核心数据模型何时有新版本

如何检测c++中是不是附加了调试器?