c++ - 在正确的时间点将调试器附加到 VC++ 进程的最佳方法是什么?

标签 c++ debugging visual-c++ debugbreak

调试时,有时您需要附加一个已经在运行的进程,而不是仅仅在调试器中启动应用程序。

我自己通常会调用 Sleep() 或 MessageBox,这样更容易附加调试器。我担心其中一些最终可能会提交给源代码管理。

避免这种情况的最佳方法是什么,同时仍然延迟足够的时间以便您可以将调试器附加到正在运行的进程?

#ifdef _DEBUG 保护 sleep 或消息框是一种方法,但我想知道是否有更好的方法。

对于 Sleep,您还有可能无法及时连接的问题。使用 MessageBox 时,您可能会遇到远程调试或调试没有可见 GUI 的进程的问题(例如在 Vista 上作为服务运行)

最佳答案

我有时使用的另一种变体是

while( !::IsDebuggerPresent() )
    ::Sleep( 100 ); // to avoid 100% CPU load

它应该静静地等待,直到您将调试器附加到进程。

关于c++ - 在正确的时间点将调试器附加到 VC++ 进程的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/663449/

相关文章:

.net - MyBase(基础)对象属性未在调试器中显示实际值

c++ - 如何为成员函数创建一个可简单复制的委托(delegate)

c++ - 如何解决库中的 'const' 定义

c++ - 如何调用此类中的构造函数。

android - NDK 调试 : ndk-gdb fails to pull app_process. 谁以及何时创建了 app_process 二进制文件?

C++ 错误 LNK2028、LNK2019 和 LNK1120。它们是什么意思,我该如何解决它们?

c++ - std::getline 删除空格?

c# - 如何调试 UWP xaml 绑定(bind)?

MSVC x64 中的 C++ 异常 "Skips"Try-Catch 子句

c++ - 当用户输入 "m"时,为什么我的代码不能直接进入 if 主体