我正在调试在Windows下使用MSVC编译的C++程序。 我想要研究与多线程相关的问题。因此,我在我的代码中放置了ASSERT,并且当程序达到ASSERT时,它会显示关于ASSERT的窗口(标准的[Abort],[Retry],[Ignore]窗口),并提出暂停程序以进行调试的建议。我按下[Retry]按钮,程序暂停。但是,在我按下按钮的同时,其他线程继续执行。 因此,问题是如何在程序到达某个点时立即停止程序,以查看其他线程在那个时间正在执行什么操作?
我正在调试在Windows下使用MSVC编译的C++程序。 我想要研究与多线程相关的问题。因此,我在我的代码中放置了ASSERT,并且当程序达到ASSERT时,它会显示关于ASSERT的窗口(标准的[Abort],[Retry],[Ignore]窗口),并提出暂停程序以进行调试的建议。我按下[Retry]按钮,程序暂停。但是,在我按下按钮的同时,其他线程继续执行。 因此,问题是如何在程序到达某个点时立即停止程序,以查看其他线程在那个时间正在执行什么操作?
如果您希望以编程方式执行此操作,请使用DebugBreak。(C#具有等效的API System.Diagnostics.Debugger.Break)
如果您想从IDE执行此操作,则可以从MSDN页面中通过Visual Studio设置断点(或者直接使用Ctrl+Alt+B强制停止应用程序),然后在线程窗口中使用“冻结”和“解冻”来控制线程执行。