调试时,有时您需要附加一个已经在运行的进程,而不是仅仅在调试器中启动应用程序。
我自己通常会调用 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/